kern/60897: devfs_rule_matchpath fails on directories

Colin Percival cperciva at daemonology.net
Sun Jan 4 08:30:18 PST 2004


>Number:         60897
>Category:       kern
>Synopsis:       devfs_rule_matchpath fails on directories
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Jan 04 08:30:15 PST 2004
>Closed-Date:
>Last-Modified:
>Originator:     Colin Percival
>Release:        FreeBSD 5.2-RC i386
>Organization:
>Environment:
System: FreeBSD fafnir.daemonology.net 5.2-RC FreeBSD 5.2-RC #3: Sun Jan 4 16:13:57 GMT 2004 cperciva at fafnir.daemonology.net:/usr/obj/usr/src/sys/GENERIC i386

>Description:

devfs_rule_matchpath(dk,de) always returns 0 if de is a directory.  In 
particular, this means that /dev/fd/ cannot be unhidden by specifying 
"path fd unhide".
This causes problems for any jailed processes which want to use /dev/stdout 
(for example, buildkernel!)

>How-To-Repeat:

fafnir# mount -t devfs devfs /tmp/dev
fafnir# devfs rule -s 10 delset
fafnir# devfs rule -s 10 add hide
fafnir# devfs rule -s 10 add path fd unhide
fafnir# devfs -m /tmp/dev ruleset 10
fafnir# devfs -m /tmp/dev rule applyset
fafnir# ls -l /tmp/dev/
[nothing listed]

>Fix:

--- devfs_rule.diff begins here ---
Index: devfs_rule.c
===================================================================
RCS file: /usr/local/freebsd-update-server/cvs/src/sys/fs/devfs/devfs_rule.c,v
retrieving revision 1.8
diff -u -r1.8 devfs_rule.c
--- devfs_rule.c	19 Feb 2003 05:47:17 -0000	1.8
+++ devfs_rule.c	4 Jan 2004 16:09:00 -0000
@@ -633,7 +633,8 @@
 	dev = devfs_rule_getdev(de);
 	if (dev != NULL)
 		pname = dev->si_name;
-	else if (de->de_dirent->d_type == DT_LNK)
+	else if (de->de_dirent->d_type == DT_LNK ||
+		 de->de_dirent->d_type == DT_DIR)
 		pname = de->de_dirent->d_name;
 	else
 		return (0);
--- devfs_rule.diff ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list