Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.6.25-rc9 /security/dummy.c

Filename:/security/dummy.c
Lines Added:48
Lines Deleted:14
Also changed in: (Previous) 2.6.25-rc8  2.6.25-rc7  2.6.25-rc6  2.6.25-rc4-git4  2.6.25-rc5  2.6.25-rc4-git3 
(Following) 2.6.25  2.6.25-git2  2.6.25-git3  2.6.25-git4  2.6.25-git5  2.6.25-git6 

Location
[  2.6.25-rc9
  [  security
     o  dummy.c

Patch

diff --git a/security/dummy.c b/security/dummy.c
index 3ccfbbe..78d8f92 100644
--- a/security/dummy.c
+++ b/security/dummy.c
@@ -36,14 +36,19 @@ static int dummy_ptrace (struct task_struct *parent, struct task_struct *child)
 static int dummy_capget (struct task_struct *target, kernel_cap_t * effective,
           kernel_cap_t * inheritable, kernel_cap_t * permitted)
 {
-   *effective = *inheritable = *permitted = 0;
    if (target->euid == 0) {
-      *permitted |= (~0 & ~CAP_FS_MASK);
-      *effective |= (~0 & ~CAP_TO_MASK(CAP_SETPCAP) & ~CAP_FS_MASK);
+      cap_set_full(*permitted);
+      cap_set_init_eff(*effective);
+   } else {
+      cap_clear(*permitted);
+      cap_clear(*effective);
    }
-   if (target->fsuid == 0) {
-      *permitted |= CAP_FS_MASK;
-      *effective |= CAP_FS_MASK;
+
+   cap_clear(*inheritable);
+
+   if (target->fsuid != 0) {
+      *permitted = cap_drop_fs_set(*permitted);
+      *effective = cap_drop_fs_set(*effective);
    }
    return 0;
 }
@@ -176,8 +181,7 @@ static void dummy_sb_free_security (struct super_block *sb)
    return;
 }
 
-static int dummy_sb_copy_data (struct file_system_type *type,
-                void *orig, void *copy)
+static int dummy_sb_copy_data (char *orig, char *copy)
 {
    return 0;
 }
@@ -225,26 +229,47 @@ static void dummy_sb_post_remount (struct vfsmount *mnt, unsigned long flags,
 }
 
 
-static void dummy_sb_post_mountroot (void)
+static void dummy_sb_post_addmount (struct vfsmount *mnt, struct nameidata *nd)
 {
    return;
 }
 
-static void dummy_sb_post_addmount (struct vfsmount *mnt, struct nameidata *nd)
+static int dummy_sb_pivotroot (struct nameidata *old_nd, struct nameidata *new_nd)
+{
+   return 0;
+}
+
+static void dummy_sb_post_pivotroot (struct nameidata *old_nd, struct nameidata *new_nd)
 {
    return;
 }
 
-static int dummy_sb_pivotroot (struct nameidata *old_nd, struct nameidata *new_nd)
+static int dummy_sb_get_mnt_opts(const struct super_block *sb,
+             struct security_mnt_opts *opts)
 {
+   security_init_mnt_opts(opts);
    return 0;
 }
 
-static void dummy_sb_post_pivotroot (struct nameidata *old_nd, struct nameidata *new_nd)
+static int dummy_sb_set_mnt_opts(struct super_block *sb,
+             struct security_mnt_opts *opts)
+{
+   if (unlikely(opts->num_mnt_opts))
+      return -EOPNOTSUPP;
+   return 0;
+}
+
+static void dummy_sb_clone_mnt_opts(const struct super_block *oldsb,
+                struct super_block *newsb)
 {
    return;
 }
 
+static int dummy_sb_parse_opts_str(char *options, struct security_mnt_opts *opts)
+{
+   return 0;
+}
+
 static int dummy_inode_alloc_security (struct inode *inode)
 {
    return 0;
@@ -384,7 +409,7 @@ static int dummy_inode_killpriv(struct dentry *dentry)
    return 0;
 }
 
-static int dummy_inode_getsecurity(const struct inode *inode, const char *name, void *buffer, size_t size, int err)
+static int dummy_inode_getsecurity(const struct inode *inode, const char *name, void **buffer, bool alloc)
 {
    return -EOPNOTSUPP;
 }
@@ -928,6 +953,11 @@ static int dummy_secid_to_secctx(u32 secid, char **secdata, u32 *seclen)
    return -EOPNOTSUPP;
 }
 
+static int dummy_secctx_to_secid(char *secdata, u32 seclen, u32 *secid)
+{
+   return -EOPNOTSUPP;
+}
+
 static void dummy_release_secctx(char *secdata, u32 seclen)
 {
 }
@@ -994,10 +1024,13 @@ void security_fixup_ops (struct security_operations *ops)
    set_to_dummy_if_null(ops, sb_umount_close);
    set_to_dummy_if_null(ops, sb_umount_busy);
    set_to_dummy_if_null(ops, sb_post_remount);
-   set_to_dummy_if_null(ops, sb_post_mountroot);
    set_to_dummy_if_null(ops, sb_post_addmount);
    set_to_dummy_if_null(ops, sb_pivotroot);
    set_to_dummy_if_null(ops, sb_post_pivotroot);
+   set_to_dummy_if_null(ops, sb_get_mnt_opts);
+   set_to_dummy_if_null(ops, sb_set_mnt_opts);
+   set_to_dummy_if_null(ops, sb_clone_mnt_opts);
+   set_to_dummy_if_null(ops, sb_parse_opts_str);
    set_to_dummy_if_null(ops, inode_alloc_security);
    set_to_dummy_if_null(ops, inode_free_security);
    set_to_dummy_if_null(ops, inode_init_security);
@@ -1086,6 +1119,7 @@ void security_fixup_ops (struct security_operations *ops)
     set_to_dummy_if_null(ops, getprocattr);
     set_to_dummy_if_null(ops, setprocattr);
     set_to_dummy_if_null(ops, secid_to_secctx);
+   set_to_dummy_if_null(ops, secctx_to_secid);
     set_to_dummy_if_null(ops, release_secctx);
 #ifdef CONFIG_SECURITY_NETWORK
    set_to_dummy_if_null(ops, unix_stream_connect);


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.