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
This commit is contained in:
Stefan Farfeleder 2012-10-11 07:54:29 +00:00
parent a31c8b58b5
commit da0878836b
2 changed files with 15 additions and 1 deletions

View File

@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$");
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include <vis.h>
#include "un-namespace.h" #include "un-namespace.h"
static FILE *_fs_fp; static FILE *_fs_fp;
@ -149,11 +150,15 @@ fstabscan(void)
/* OLD_STYLE_FSTAB */ /* OLD_STYLE_FSTAB */
while ((cp = strsep(&p, " \t\n")) != NULL && *cp == '\0') while ((cp = strsep(&p, " \t\n")) != NULL && *cp == '\0')
; ;
if (strunvis(cp, cp) < 0)
goto bad;
_fs_fstab.fs_spec = cp; _fs_fstab.fs_spec = cp;
if (!_fs_fstab.fs_spec || *_fs_fstab.fs_spec == '#') if (!_fs_fstab.fs_spec || *_fs_fstab.fs_spec == '#')
continue; continue;
while ((cp = strsep(&p, " \t\n")) != NULL && *cp == '\0') while ((cp = strsep(&p, " \t\n")) != NULL && *cp == '\0')
; ;
if (strunvis(cp, cp) < 0)
goto bad;
_fs_fstab.fs_file = cp; _fs_fstab.fs_file = cp;
fixfsfile(); fixfsfile();
while ((cp = strsep(&p, " \t\n")) != NULL && *cp == '\0') while ((cp = strsep(&p, " \t\n")) != NULL && *cp == '\0')

View File

@ -32,7 +32,7 @@
.\" @(#)fstab.5 8.1 (Berkeley) 6/5/93 .\" @(#)fstab.5 8.1 (Berkeley) 6/5/93
.\" $FreeBSD$ .\" $FreeBSD$
.\" .\"
.Dd June 7, 2011 .Dd October 11, 2012
.Dt FSTAB 5 .Dt FSTAB 5
.Os .Os
.Sh NAME .Sh NAME
@ -66,12 +66,20 @@ The first field,
.Pq Fa fs_spec , .Pq Fa fs_spec ,
describes the special device or describes the special device or
remote file system to be mounted. remote file system to be mounted.
The contents are decoded by the
.Xr strunvis 3
function.
This allows using spaces or tabs in the device name which would be
interpreted as field separators otherwise.
.Pp .Pp
The second field, The second field,
.Pq Fa fs_file , .Pq Fa fs_file ,
describes the mount point for the file system. describes the mount point for the file system.
For swap partitions, this field should be specified as For swap partitions, this field should be specified as
.Dq none . .Dq none .
The contents are decoded by the
.Xr strunvis 3
function, as above.
.Pp .Pp
The third field, The third field,
.Pq Fa fs_vfstype , .Pq Fa fs_vfstype ,
@ -338,6 +346,7 @@ resides in
.Xr mount 8 , .Xr mount 8 ,
.Xr quotacheck 8 , .Xr quotacheck 8 ,
.Xr quotaon 8 , .Xr quotaon 8 ,
.Xr strunvis 3 ,
.Xr swapon 8 , .Xr swapon 8 ,
.Xr umount 8 .Xr umount 8
.Sh HISTORY .Sh HISTORY