aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2015-07-01 15:00:06 -0500
committerRob Landley <rob@landley.net>2015-07-01 15:00:06 -0500
commit8a2c0876754baa2085bce94d6778b5d2f4aee937 (patch)
tree5efcacf54d2508aa341759844d7940269ce1ed44
parent8c0d2d2bc557ced86650ab48ab92cf58840efce8 (diff)
downloadtoybox-8a2c0876754baa2085bce94d6778b5d2f4aee937.tar.gz
Fix segfault with "mount -o ro,remount".
Or any call to comma_scan where 'opt' appears as the last item in 'optlist'.
-rw-r--r--lib/getmountlist.c2
-rwxr-xr-xtests/mount.test4
2 files changed, 5 insertions, 1 deletions
diff --git a/lib/getmountlist.c b/lib/getmountlist.c
index 30fb9a35..4fec41b7 100644
--- a/lib/getmountlist.c
+++ b/lib/getmountlist.c
@@ -78,7 +78,7 @@ int comma_scan(char *optlist, char *opt, int clean)
no = 2*(*s == 'n' && s[1] == 'o');
if (optlen == len-no && !strncmp(opt, s+no, optlen)) {
got = !no;
- if (clean) memmove(s, optlist, strlen(optlist)+1);
+ if (clean && optlist) memmove(s, optlist, strlen(optlist)+1);
}
}
diff --git a/tests/mount.test b/tests/mount.test
index 1fdc00f7..d64bfc62 100755
--- a/tests/mount.test
+++ b/tests/mount.test
@@ -82,6 +82,10 @@ testing "mount -o ro $tmp_b_fs /mnt" \
"mount -o ro $tmp_b_fs /mnt >/dev/null 2>&1 &&
mkdir /mnt/testDir 2>/dev/null || sleep 1 && umount /mnt" "" "" ""
reCreateTmpFs
+testing "mount -o ro,remount $tmp_b_fs /mnt" \
+ "mount -o ro $tmp_b_fs /mnt >/dev/null 2>&1 &&
+ mkdir /mnt/testDir 2>/dev/null || sleep 1 && umount /mnt" "" "" ""
+reCreateTmpFs
umount testDir1
rm -f $tmp_b_fs