selinux: use default proc sid on symlinks
authorStephen Smalley <sds@tycho.nsa.gov>
Mon, 22 Sep 2008 19:41:19 +0000 (15:41 -0400)
committerJames Morris <jmorris@namei.org>
Mon, 29 Sep 2008 14:26:53 +0000 (00:26 +1000)
As we are not concerned with fine-grained control over reading of
symlinks in proc, always use the default proc SID for all proc symlinks.
This should help avoid permission issues upon changes to the proc tree
as in the /proc/net -> /proc/self/net example.
This does not alter labeling of symlinks within /proc/pid directories.
ls -Zd /proc/net output before and after the patch should show the difference.

Signed-off-by: Stephen D. Smalley <sds@tycho.nsa.gov>
Signed-off-by: James Morris <jmorris@namei.org>
security/selinux/hooks.c

index 89f446d86054538d5299f8b1f547b10788789a4e..4a7374c12d9ca5a2b9c76c1101ecb42ee44b48af 100644 (file)
@@ -1291,7 +1291,7 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent
                /* Default to the fs superblock SID. */
                isec->sid = sbsec->sid;
 
-               if (sbsec->proc) {
+               if (sbsec->proc && !S_ISLNK(inode->i_mode)) {
                        struct proc_inode *proci = PROC_I(inode);
                        if (proci->pde) {
                                isec->sclass = inode_mode_to_security_class(inode->i_mode);