diff options
author | Elliott Hughes <enh@google.com> | 2015-07-01 15:00:06 -0500 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2015-07-01 15:00:06 -0500 |
commit | 8a2c0876754baa2085bce94d6778b5d2f4aee937 (patch) | |
tree | 5efcacf54d2508aa341759844d7940269ce1ed44 | |
parent | 8c0d2d2bc557ced86650ab48ab92cf58840efce8 (diff) | |
download | toybox-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.c | 2 | ||||
-rwxr-xr-x | tests/mount.test | 4 |
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 |