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
This commit is contained in:
Jaakko Heinonen 2012-12-22 13:33:28 +00:00
parent cd2fe4e632
commit b1e1f725e7
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=244584
2 changed files with 12 additions and 1 deletions

View File

@ -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

View File

@ -698,6 +698,13 @@ prep_devname(struct cdev *dev, const char *fmt, va_list ap)
;
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++;