diff options
author | stefanf <stefanf@FreeBSD.org> | 2012-10-11 07:54:29 +0000 |
---|---|---|
committer | stefanf <stefanf@FreeBSD.org> | 2012-10-11 07:54:29 +0000 |
commit | 054e35b9ef9943ad6326092f93b873b1495d9540 (patch) | |
tree | b05b06e22059a3f54deb614bdf39816c4f4355e5 /lib/libc | |
parent | 1ae38f4b7e17061a85721eef3680d89b8ecb16f4 (diff) | |
download | FreeBSD-src-054e35b9ef9943ad6326092f93b873b1495d9540.zip FreeBSD-src-054e35b9ef9943ad6326092f93b873b1495d9540.tar.gz |
Decode the first two fstab fields with strunvis(3). This allows having spaces
in devices and mount paths, encoded as \s or \040.
PR: bin/117687
Submitted by: Martin Kammerhofer
Discussed on: arch
Diffstat (limited to 'lib/libc')
-rw-r--r-- | lib/libc/gen/fstab.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/libc/gen/fstab.c b/lib/libc/gen/fstab.c index 356b871..1351a27 100644 --- a/lib/libc/gen/fstab.c +++ b/lib/libc/gen/fstab.c @@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$"); #include <stdlib.h> #include <string.h> #include <unistd.h> +#include <vis.h> #include "un-namespace.h" static FILE *_fs_fp; @@ -149,11 +150,15 @@ fstabscan(void) /* OLD_STYLE_FSTAB */ while ((cp = strsep(&p, " \t\n")) != NULL && *cp == '\0') ; + if (strunvis(cp, cp) < 0) + goto bad; _fs_fstab.fs_spec = cp; if (!_fs_fstab.fs_spec || *_fs_fstab.fs_spec == '#') continue; while ((cp = strsep(&p, " \t\n")) != NULL && *cp == '\0') ; + if (strunvis(cp, cp) < 0) + goto bad; _fs_fstab.fs_file = cp; fixfsfile(); while ((cp = strsep(&p, " \t\n")) != NULL && *cp == '\0') |