Smack: handle zero-length security labels without panic
[pandora-kernel.git] / security / smack / smackfs.c
index 32b2488..56a1439 100644 (file)
@@ -787,7 +787,7 @@ static int cipso_seq_show(struct seq_file *s, void *v)
        struct list_head  *list = v;
        struct smack_known *skp =
                 list_entry(list, struct smack_known, list);
-       struct netlbl_lsm_secattr_catmap *cmp = skp->smk_netlabel.attr.mls.cat;
+       struct netlbl_lsm_catmap *cmp = skp->smk_netlabel.attr.mls.cat;
        char sep = '/';
        int i;
 
@@ -804,8 +804,8 @@ static int cipso_seq_show(struct seq_file *s, void *v)
 
        seq_printf(s, "%s %3d", skp->smk_known, skp->smk_netlabel.attr.mls.lvl);
 
-       for (i = netlbl_secattr_catmap_walk(cmp, 0); i >= 0;
-            i = netlbl_secattr_catmap_walk(cmp, i + 1)) {
+       for (i = netlbl_catmap_walk(cmp, 0); i >= 0;
+            i = netlbl_catmap_walk(cmp, i + 1)) {
                seq_printf(s, "%c%d", sep, i);
                sep = ',';
        }
@@ -926,7 +926,7 @@ static ssize_t smk_set_cipso(struct file *file, const char __user *buf,
 
        rc = smk_netlbl_mls(maplevel, mapcatset, &ncats, SMK_CIPSOLEN);
        if (rc >= 0) {
-               netlbl_secattr_catmap_free(skp->smk_netlabel.attr.mls.cat);
+               netlbl_catmap_free(skp->smk_netlabel.attr.mls.cat);
                skp->smk_netlabel.attr.mls.cat = ncats.attr.mls.cat;
                skp->smk_netlabel.attr.mls.lvl = ncats.attr.mls.lvl;
                rc = count;
@@ -976,14 +976,14 @@ static int cipso2_seq_show(struct seq_file *s, void *v)
        struct list_head  *list = v;
        struct smack_known *skp =
                 list_entry(list, struct smack_known, list);
-       struct netlbl_lsm_secattr_catmap *cmp = skp->smk_netlabel.attr.mls.cat;
+       struct netlbl_lsm_catmap *cmp = skp->smk_netlabel.attr.mls.cat;
        char sep = '/';
        int i;
 
        seq_printf(s, "%s %3d", skp->smk_known, skp->smk_netlabel.attr.mls.lvl);
 
-       for (i = netlbl_secattr_catmap_walk(cmp, 0); i >= 0;
-            i = netlbl_secattr_catmap_walk(cmp, i + 1)) {
+       for (i = netlbl_catmap_walk(cmp, 0); i >= 0;
+            i = netlbl_catmap_walk(cmp, i + 1)) {
                seq_printf(s, "%c%d", sep, i);
                sep = ',';
        }
@@ -1677,7 +1677,7 @@ static ssize_t smk_write_onlycap(struct file *file, const char __user *buf,
        if (smack_onlycap != NULL && smack_onlycap != skp)
                return -EPERM;
 
-       data = kzalloc(count, GFP_KERNEL);
+       data = kzalloc(count + 1, GFP_KERNEL);
        if (data == NULL)
                return -ENOMEM;
 
@@ -2228,7 +2228,7 @@ static ssize_t smk_write_syslog(struct file *file, const char __user *buf,
        if (!smack_privileged(CAP_MAC_ADMIN))
                return -EPERM;
 
-       data = kzalloc(count, GFP_KERNEL);
+       data = kzalloc(count + 1, GFP_KERNEL);
        if (data == NULL)
                return -ENOMEM;