Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 8 Jan 2015 21:17:36 +0000 (UTC)
From:      Stefan Farfeleder <stefanf@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r276854 - in stable/9: lib/libc/gen share/man/man5
Message-ID:  <201501082117.t08LHaBO005290@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: stefanf
Date: Thu Jan  8 21:17:35 2015
New Revision: 276854
URL: https://svnweb.freebsd.org/changeset/base/276854

Log:
  Belatedly MFC r241440 and r241441:
  Decode the first two fstab fields with strunvis(3). This allows having spaces
  in devices and mount paths, encoded as \s or \040.

Modified:
  stable/9/lib/libc/gen/fstab.c
  stable/9/share/man/man5/fstab.5
Directory Properties:
  stable/9/lib/libc/   (props changed)
  stable/9/share/man/man5/   (props changed)

Modified: stable/9/lib/libc/gen/fstab.c
==============================================================================
--- stable/9/lib/libc/gen/fstab.c	Thu Jan  8 20:11:38 2015	(r276853)
+++ stable/9/lib/libc/gen/fstab.c	Thu Jan  8 21:17:35 2015	(r276854)
@@ -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;
@@ -150,11 +151,17 @@ fstabscan()
 		while ((cp = strsep(&p, " \t\n")) != NULL && *cp == '\0')
 			;
 		_fs_fstab.fs_spec = cp;
-		if (!_fs_fstab.fs_spec || *_fs_fstab.fs_spec == '#')
+		if (_fs_fstab.fs_spec == NULL || *_fs_fstab.fs_spec == '#')
 			continue;
+		if (strunvis(_fs_fstab.fs_spec, _fs_fstab.fs_spec) < 0)
+			goto bad;
 		while ((cp = strsep(&p, " \t\n")) != NULL && *cp == '\0')
 			;
 		_fs_fstab.fs_file = cp;
+		if (_fs_fstab.fs_file == NULL)
+			goto bad;
+		if (strunvis(_fs_fstab.fs_file, _fs_fstab.fs_file) < 0)
+			goto bad;
 		fixfsfile();
 		while ((cp = strsep(&p, " \t\n")) != NULL && *cp == '\0')
 			;

Modified: stable/9/share/man/man5/fstab.5
==============================================================================
--- stable/9/share/man/man5/fstab.5	Thu Jan  8 20:11:38 2015	(r276853)
+++ stable/9/share/man/man5/fstab.5	Thu Jan  8 21:17:35 2015	(r276854)
@@ -32,7 +32,7 @@
 .\"     @(#)fstab.5	8.1 (Berkeley) 6/5/93
 .\" $FreeBSD$
 .\"
-.Dd June 7, 2011
+.Dd October 11, 2012
 .Dt FSTAB 5
 .Os
 .Sh NAME
@@ -66,12 +66,20 @@ The first field,
 .Pq Fa fs_spec ,
 describes the special device or
 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
 The second field,
 .Pq Fa fs_file ,
 describes the mount point for the file system.
 For swap partitions, this field should be specified as
 .Dq none .
+The contents are decoded by the
+.Xr strunvis 3
+function, as above.
 .Pp
 The third field,
 .Pq Fa fs_vfstype ,
@@ -338,6 +346,7 @@ resides in
 .Xr mount 8 ,
 .Xr quotacheck 8 ,
 .Xr quotaon 8 ,
+.Xr strunvis 3 ,
 .Xr swapon 8 ,
 .Xr umount 8
 .Sh HISTORY



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201501082117.t08LHaBO005290>