--- /root/tmp/lsm-2.4/security/selinux/hooks.c Wed Jul 10 01:11:11 2002 +++ security/selinux/hooks.c Wed Jul 10 03:45:14 2002 @@ -689,7 +689,7 @@ { struct superblock_security_struct *sbsec = NULL; struct inode_security_struct *isec = inode->i_security; - security_id_t sid; + security_id_t sid, devfs_pts_sid; char *buffer, *path; struct dentry *dentry; int rc; @@ -779,10 +779,21 @@ path = avc_d_path(dentry, buffer, PAGE_SIZE); if (path) { + + if ( (!memcmp(inode->i_sb->s_type->name, "devfs", 5)) && (!memcmp(path, "/pts/", 5)) ) { + security_genfs_sid("devfs", "/pts", SECCLASS_DIR, &devfs_pts_sid); + /* Try to obtain a transition SID. */ + rc = security_transition_sid(isec->task_sid, + devfs_pts_sid, + isec->sclass, + &sid); + + } else { rc = security_genfs_sid(inode->i_sb->s_type->name, path, isec->sclass, &sid); + } if (!rc) isec->sid = sid; }