Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 22 Dec 2012 13:33:28 +0000 (UTC)
From:      Jaakko Heinonen <jh@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r244584 - in head: share/man/man9 sys/kern
Message-ID:  <201212221333.qBMDXSrj085313@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jh
Date: Sat Dec 22 13:33:28 2012
New Revision: 244584
URL: http://svnweb.freebsd.org/changeset/base/244584

Log:
  Reject spaces and double quotation marks in device names. devctl(4)
  and devd(8) can't handle names with such characters properly.
  
  PR:		bin/144736, kern/161912
  Discussed with:	imp, kib, pjd

Modified:
  head/share/man/man9/make_dev.9
  head/sys/kern/kern_conf.c

Modified: head/share/man/man9/make_dev.9
==============================================================================
--- head/share/man/man9/make_dev.9	Sat Dec 22 13:02:03 2012	(r244583)
+++ head/share/man/man9/make_dev.9	Sat Dec 22 13:33:28 2012	(r244584)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd May 3, 2011
+.Dd Dec 22, 2012
 .Dt MAKE_DEV 9
 .Os
 .Sh NAME
@@ -364,6 +364,10 @@ or
 .Qq ..
 path component or ends with
 .Ql / .
+.It Bq Er EINVAL
+The
+.Dv MAKEDEV_CHECKNAME
+flag was specified and the provided device name contains invalid characters.
 .It Bq Er EEXIST
 The
 .Dv MAKEDEV_CHECKNAME

Modified: head/sys/kern/kern_conf.c
==============================================================================
--- head/sys/kern/kern_conf.c	Sat Dec 22 13:02:03 2012	(r244583)
+++ head/sys/kern/kern_conf.c	Sat Dec 22 13:33:28 2012	(r244584)
@@ -698,6 +698,13 @@ prep_devname(struct cdev *dev, const cha
 		;
 
 	for (to = dev->si_name; *from != '\0'; from++, to++) {
+		/*
+		 * Spaces and double quotation marks cause
+		 * problems for the devctl(4) protocol.
+		 * Reject names containing those characters.
+		 */
+		if (isspace(*from) || *from == '"')
+			return (EINVAL);
 		/* Treat multiple sequential slashes as single. */
 		while (from[0] == '/' && from[1] == '/')
 			from++;



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