SELinux: ss: Fix policy write for ioctl operations
authorJeff Vander Stoep <jeffv@google.com>
Wed, 29 Apr 2015 18:14:23 +0000 (11:14 -0700)
committerJeff Vander Stoep <jeffv@google.com>
Wed, 29 Apr 2015 18:32:58 +0000 (11:32 -0700)
Security server omits the type field when writing out the contents of the
avtab from /sys/fs/selinux/policy. This leads to a corrupt output. No impact
on the running kernel or its loaded policy. Impacts CTS neverallow tests.

Bug: 20665861
Change-Id: I657e18013dd5a1f40052bc2b02dd8e0afee9bcfb
Signed-off-by: Jeff Vander Stoep <jeffv@google.com>
security/selinux/ss/avtab.c

index 2e4ff003abcdc137fcb4069c47d83b2d04e16089..dd7466cb2021d969788bfddc555fcebeb05fa68b 100644 (file)
@@ -565,6 +565,9 @@ int avtab_write_item(struct policydb *p, struct avtab_node *cur, void *fp)
                return rc;
 
        if (cur->key.specified & AVTAB_OP) {
+               rc = put_entry(&cur->datum.u.ops->type, sizeof(u8), 1, fp);
+               if (rc)
+                       return rc;
                for (i = 0; i < ARRAY_SIZE(cur->datum.u.ops->op.perms); i++)
                        buf32[i] = cpu_to_le32(cur->datum.u.ops->op.perms[i]);
                rc = put_entry(buf32, sizeof(u32),