Commit ae6d35ed authored by John Johansen's avatar John Johansen

apparmor: extend xindex size

Allow the xindex to have 2^24 entries.
Signed-off-by: default avatarJohn Johansen <john.johansen@canonical.com>
parent b06a62eb
...@@ -88,18 +88,17 @@ static inline struct aa_label *aa_get_file_label(struct aa_file_ctx *ctx) ...@@ -88,18 +88,17 @@ static inline struct aa_label *aa_get_file_label(struct aa_file_ctx *ctx)
* - exec type - which determines how the executable name and index are used * - exec type - which determines how the executable name and index are used
* - flags - which modify how the destination name is applied * - flags - which modify how the destination name is applied
*/ */
#define AA_X_INDEX_MASK 0x03ff #define AA_X_INDEX_MASK 0x00ffffff
#define AA_X_TYPE_MASK 0x0c00 #define AA_X_TYPE_MASK 0x0c000000
#define AA_X_TYPE_SHIFT 10 #define AA_X_NONE 0x00000000
#define AA_X_NONE 0x0000 #define AA_X_NAME 0x04000000 /* use executable name px */
#define AA_X_NAME 0x0400 /* use executable name px */ #define AA_X_TABLE 0x08000000 /* use a specified name ->n# */
#define AA_X_TABLE 0x0800 /* use a specified name ->n# */
#define AA_X_UNSAFE 0x10000000
#define AA_X_UNSAFE 0x1000 #define AA_X_CHILD 0x20000000
#define AA_X_CHILD 0x2000 /* make >AA_X_NONE apply to children */ #define AA_X_INHERIT 0x40000000
#define AA_X_INHERIT 0x4000 #define AA_X_UNCONFINED 0x80000000
#define AA_X_UNCONFINED 0x8000
/* need to make conditional which ones are being set */ /* need to make conditional which ones are being set */
struct path_cond { struct path_cond {
......
...@@ -78,7 +78,7 @@ struct aa_perms { ...@@ -78,7 +78,7 @@ struct aa_perms {
u32 quiet; /* set only when ~allow | deny */ u32 quiet; /* set only when ~allow | deny */
u32 hide; /* set only when ~allow | deny */ u32 hide; /* set only when ~allow | deny */
u16 xindex; u32 xindex;
}; };
#define ALL_PERMS_MASK 0xffffffff #define ALL_PERMS_MASK 0xffffffff
......
...@@ -489,8 +489,8 @@ static bool unpack_trans_table(struct aa_ext *e, struct aa_profile *profile) ...@@ -489,8 +489,8 @@ static bool unpack_trans_table(struct aa_ext *e, struct aa_profile *profile)
int i, size; int i, size;
size = unpack_array(e, NULL); size = unpack_array(e, NULL);
/* currently 4 exec bits and entries 0-3 are reserved iupcx */ /* currently 2^24 bits entries 0-3 */
if (size > 16 - 4) if (size > (1 << 24))
goto fail; goto fail;
profile->file.trans.table = kcalloc(size, sizeof(char *), profile->file.trans.table = kcalloc(size, sizeof(char *),
GFP_KERNEL); GFP_KERNEL);
...@@ -672,10 +672,10 @@ static int datacmp(struct rhashtable_compare_arg *arg, const void *obj) ...@@ -672,10 +672,10 @@ static int datacmp(struct rhashtable_compare_arg *arg, const void *obj)
} }
/* remap old accept table embedded permissions to separate permission table */ /* remap old accept table embedded permissions to separate permission table */
static u16 dfa_map_xindex(u16 mask) static u32 dfa_map_xindex(u16 mask)
{ {
u16 old_index = (mask >> 10) & 0xf; u16 old_index = (mask >> 10) & 0xf;
u16 index = 0; u32 index = 0;
if (mask & 0x100) if (mask & 0x100)
index |= AA_X_UNSAFE; index |= AA_X_UNSAFE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment