Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Dec 2010 16:49:47 +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: r216462 - head/sys/fs/devfs
Message-ID:  <201012151649.oBFGnldp066048@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jh
Date: Wed Dec 15 16:49:47 2010
New Revision: 216462
URL: http://svn.freebsd.org/changeset/base/216462

Log:
  Don't allow user created symbolic links to cover another entries marked
  with DE_USER. If a devfs rule hid such entry, it was possible to create
  infinite number of symbolic links with the same name.
  
  Reviewed by:	kib

Modified:
  head/sys/fs/devfs/devfs_vnops.c

Modified: head/sys/fs/devfs/devfs_vnops.c
==============================================================================
--- head/sys/fs/devfs/devfs_vnops.c	Wed Dec 15 16:42:44 2010	(r216461)
+++ head/sys/fs/devfs/devfs_vnops.c	Wed Dec 15 16:49:47 2010	(r216462)
@@ -1580,6 +1580,11 @@ devfs_symlink(struct vop_symlink_args *a
 	de_covered = devfs_find(dd, de->de_dirent->d_name,
 	    de->de_dirent->d_namlen, 0);
 	if (de_covered != NULL) {
+		if ((de_covered->de_flags & DE_USER) != 0) {
+			devfs_delete(dmp, de, DEVFS_DEL_NORECURSE);
+			sx_xunlock(&dmp->dm_lock);
+			return (EEXIST);
+		}
 		KASSERT((de_covered->de_flags & DE_COVERED) == 0,
 		    ("devfs_symlink: entry %p already covered", de_covered));
 		de_covered->de_flags |= DE_COVERED;



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