Commit e6e8bf41 authored by John Johansen's avatar John Johansen

apparmor: fix restricted endian type warnings for dfa unpack

Signed-off-by: default avatarJohn Johansen <john.johansen@canonical.com>
parent ca4bd5ae
...@@ -104,11 +104,11 @@ extern struct aa_dfa *nulldfa; ...@@ -104,11 +104,11 @@ extern struct aa_dfa *nulldfa;
#define byte_to_byte(X) (X) #define byte_to_byte(X) (X)
#define UNPACK_ARRAY(TABLE, BLOB, LEN, TYPE, NTOHX) \ #define UNPACK_ARRAY(TABLE, BLOB, LEN, TTYPE, BTYPE, NTOHX) \
do { \ do { \
typeof(LEN) __i; \ typeof(LEN) __i; \
TYPE *__t = (TYPE *) TABLE; \ TTYPE *__t = (TTYPE *) TABLE; \
TYPE *__b = (TYPE *) BLOB; \ BTYPE *__b = (BTYPE *) BLOB; \
for (__i = 0; __i < LEN; __i++) { \ for (__i = 0; __i < LEN; __i++) { \
__t[__i] = NTOHX(__b[__i]); \ __t[__i] = NTOHX(__b[__i]); \
} \ } \
......
...@@ -73,11 +73,11 @@ static struct table_header *unpack_table(char *blob, size_t bsize) ...@@ -73,11 +73,11 @@ static struct table_header *unpack_table(char *blob, size_t bsize)
/* loaded td_id's start at 1, subtract 1 now to avoid doing /* loaded td_id's start at 1, subtract 1 now to avoid doing
* it every time we use td_id as an index * it every time we use td_id as an index
*/ */
th.td_id = be16_to_cpu(*(u16 *) (blob)) - 1; th.td_id = be16_to_cpu(*(__be16 *) (blob)) - 1;
if (th.td_id > YYTD_ID_MAX) if (th.td_id > YYTD_ID_MAX)
goto out; goto out;
th.td_flags = be16_to_cpu(*(u16 *) (blob + 2)); th.td_flags = be16_to_cpu(*(__be16 *) (blob + 2));
th.td_lolen = be32_to_cpu(*(u32 *) (blob + 8)); th.td_lolen = be32_to_cpu(*(__be32 *) (blob + 8));
blob += sizeof(struct table_header); blob += sizeof(struct table_header);
if (!(th.td_flags == YYTD_DATA16 || th.td_flags == YYTD_DATA32 || if (!(th.td_flags == YYTD_DATA16 || th.td_flags == YYTD_DATA32 ||
...@@ -95,13 +95,13 @@ static struct table_header *unpack_table(char *blob, size_t bsize) ...@@ -95,13 +95,13 @@ static struct table_header *unpack_table(char *blob, size_t bsize)
table->td_lolen = th.td_lolen; table->td_lolen = th.td_lolen;
if (th.td_flags == YYTD_DATA8) if (th.td_flags == YYTD_DATA8)
UNPACK_ARRAY(table->td_data, blob, th.td_lolen, UNPACK_ARRAY(table->td_data, blob, th.td_lolen,
u8, byte_to_byte); u8, u8, byte_to_byte);
else if (th.td_flags == YYTD_DATA16) else if (th.td_flags == YYTD_DATA16)
UNPACK_ARRAY(table->td_data, blob, th.td_lolen, UNPACK_ARRAY(table->td_data, blob, th.td_lolen,
u16, be16_to_cpu); u16, __be16, be16_to_cpu);
else if (th.td_flags == YYTD_DATA32) else if (th.td_flags == YYTD_DATA32)
UNPACK_ARRAY(table->td_data, blob, th.td_lolen, UNPACK_ARRAY(table->td_data, blob, th.td_lolen,
u32, be32_to_cpu); u32, __be32, be32_to_cpu);
else else
goto fail; goto fail;
/* if table was vmalloced make sure the page tables are synced /* if table was vmalloced make sure the page tables are synced
...@@ -249,14 +249,14 @@ struct aa_dfa *aa_dfa_unpack(void *blob, size_t size, int flags) ...@@ -249,14 +249,14 @@ struct aa_dfa *aa_dfa_unpack(void *blob, size_t size, int flags)
if (size < sizeof(struct table_set_header)) if (size < sizeof(struct table_set_header))
goto fail; goto fail;
if (ntohl(*(u32 *) data) != YYTH_MAGIC) if (ntohl(*(__be32 *) data) != YYTH_MAGIC)
goto fail; goto fail;
hsize = ntohl(*(u32 *) (data + 4)); hsize = ntohl(*(__be32 *) (data + 4));
if (size < hsize) if (size < hsize)
goto fail; goto fail;
dfa->flags = ntohs(*(u16 *) (data + 12)); dfa->flags = ntohs(*(__be16 *) (data + 12));
data += hsize; data += hsize;
size -= hsize; size -= hsize;
......
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