提交 b5bf6c55 编写于 作者: A Alexey Dobriyan 提交者: Linus Torvalds

[PATCH] selinux: endian notations

This patch adds endian notations to the SELinux code.
Signed-off-by: NStephen Smalley <sds@tycho.nsa.gov>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 782ebb99
...@@ -490,7 +490,7 @@ static struct avc_node *avc_insert(u32 ssid, u32 tsid, u16 tclass, struct avc_en ...@@ -490,7 +490,7 @@ static struct avc_node *avc_insert(u32 ssid, u32 tsid, u16 tclass, struct avc_en
} }
static inline void avc_print_ipv6_addr(struct audit_buffer *ab, static inline void avc_print_ipv6_addr(struct audit_buffer *ab,
struct in6_addr *addr, u16 port, struct in6_addr *addr, __be16 port,
char *name1, char *name2) char *name1, char *name2)
{ {
if (!ipv6_addr_any(addr)) if (!ipv6_addr_any(addr))
...@@ -501,7 +501,7 @@ static inline void avc_print_ipv6_addr(struct audit_buffer *ab, ...@@ -501,7 +501,7 @@ static inline void avc_print_ipv6_addr(struct audit_buffer *ab,
} }
static inline void avc_print_ipv4_addr(struct audit_buffer *ab, u32 addr, static inline void avc_print_ipv4_addr(struct audit_buffer *ab, u32 addr,
u16 port, char *name1, char *name2) __be16 port, char *name1, char *name2)
{ {
if (addr) if (addr)
audit_log_format(ab, " %s=%d.%d.%d.%d", name1, NIPQUAD(addr)); audit_log_format(ab, " %s=%d.%d.%d.%d", name1, NIPQUAD(addr));
......
...@@ -297,8 +297,10 @@ int avtab_read_item(void *fp, u32 vers, struct avtab *a, ...@@ -297,8 +297,10 @@ int avtab_read_item(void *fp, u32 vers, struct avtab *a,
struct avtab_datum *d, void *p), struct avtab_datum *d, void *p),
void *p) void *p)
{ {
u16 buf16[4], enabled; __le16 buf16[4];
u32 buf32[7], items, items2, val; u16 enabled;
__le32 buf32[7];
u32 items, items2, val;
struct avtab_key key; struct avtab_key key;
struct avtab_datum datum; struct avtab_datum datum;
int i, rc; int i, rc;
...@@ -403,7 +405,7 @@ static int avtab_insertf(struct avtab *a, struct avtab_key *k, ...@@ -403,7 +405,7 @@ static int avtab_insertf(struct avtab *a, struct avtab_key *k,
int avtab_read(struct avtab *a, void *fp, u32 vers) int avtab_read(struct avtab *a, void *fp, u32 vers)
{ {
int rc; int rc;
u32 buf[1]; __le32 buf[1];
u32 nel, i; u32 nel, i;
......
...@@ -216,7 +216,8 @@ int cond_read_bool(struct policydb *p, struct hashtab *h, void *fp) ...@@ -216,7 +216,8 @@ int cond_read_bool(struct policydb *p, struct hashtab *h, void *fp)
{ {
char *key = NULL; char *key = NULL;
struct cond_bool_datum *booldatum; struct cond_bool_datum *booldatum;
u32 buf[3], len; __le32 buf[3];
u32 len;
int rc; int rc;
booldatum = kmalloc(sizeof(struct cond_bool_datum), GFP_KERNEL); booldatum = kmalloc(sizeof(struct cond_bool_datum), GFP_KERNEL);
...@@ -342,7 +343,8 @@ static int cond_insertf(struct avtab *a, struct avtab_key *k, struct avtab_datum ...@@ -342,7 +343,8 @@ static int cond_insertf(struct avtab *a, struct avtab_key *k, struct avtab_datum
static int cond_read_av_list(struct policydb *p, void *fp, struct cond_av_list **ret_list, struct cond_av_list *other) static int cond_read_av_list(struct policydb *p, void *fp, struct cond_av_list **ret_list, struct cond_av_list *other)
{ {
int i, rc; int i, rc;
u32 buf[1], len; __le32 buf[1];
u32 len;
struct cond_insertf_data data; struct cond_insertf_data data;
*ret_list = NULL; *ret_list = NULL;
...@@ -388,7 +390,8 @@ static int expr_isvalid(struct policydb *p, struct cond_expr *expr) ...@@ -388,7 +390,8 @@ static int expr_isvalid(struct policydb *p, struct cond_expr *expr)
static int cond_read_node(struct policydb *p, struct cond_node *node, void *fp) static int cond_read_node(struct policydb *p, struct cond_node *node, void *fp)
{ {
u32 buf[2], len, i; __le32 buf[2];
u32 len, i;
int rc; int rc;
struct cond_expr *expr = NULL, *last = NULL; struct cond_expr *expr = NULL, *last = NULL;
...@@ -446,7 +449,8 @@ static int cond_read_node(struct policydb *p, struct cond_node *node, void *fp) ...@@ -446,7 +449,8 @@ static int cond_read_node(struct policydb *p, struct cond_node *node, void *fp)
int cond_read_list(struct policydb *p, void *fp) int cond_read_list(struct policydb *p, void *fp)
{ {
struct cond_node *node, *last = NULL; struct cond_node *node, *last = NULL;
u32 buf[1], i, len; __le32 buf[1];
u32 i, len;
int rc; int rc;
rc = next_entry(buf, fp, sizeof buf); rc = next_entry(buf, fp, sizeof buf);
......
...@@ -196,8 +196,9 @@ int ebitmap_read(struct ebitmap *e, void *fp) ...@@ -196,8 +196,9 @@ int ebitmap_read(struct ebitmap *e, void *fp)
{ {
int rc; int rc;
struct ebitmap_node *n, *l; struct ebitmap_node *n, *l;
u32 buf[3], mapsize, count, i; __le32 buf[3];
u64 map; u32 mapsize, count, i;
__le64 map;
ebitmap_init(e); ebitmap_init(e);
......
...@@ -744,7 +744,8 @@ int policydb_context_isvalid(struct policydb *p, struct context *c) ...@@ -744,7 +744,8 @@ int policydb_context_isvalid(struct policydb *p, struct context *c)
*/ */
static int mls_read_range_helper(struct mls_range *r, void *fp) static int mls_read_range_helper(struct mls_range *r, void *fp)
{ {
u32 buf[2], items; __le32 buf[2];
u32 items;
int rc; int rc;
rc = next_entry(buf, fp, sizeof(u32)); rc = next_entry(buf, fp, sizeof(u32));
...@@ -805,7 +806,7 @@ static int context_read_and_validate(struct context *c, ...@@ -805,7 +806,7 @@ static int context_read_and_validate(struct context *c,
struct policydb *p, struct policydb *p,
void *fp) void *fp)
{ {
u32 buf[3]; __le32 buf[3];
int rc; int rc;
rc = next_entry(buf, fp, sizeof buf); rc = next_entry(buf, fp, sizeof buf);
...@@ -845,7 +846,8 @@ static int perm_read(struct policydb *p, struct hashtab *h, void *fp) ...@@ -845,7 +846,8 @@ static int perm_read(struct policydb *p, struct hashtab *h, void *fp)
char *key = NULL; char *key = NULL;
struct perm_datum *perdatum; struct perm_datum *perdatum;
int rc; int rc;
u32 buf[2], len; __le32 buf[2];
u32 len;
perdatum = kmalloc(sizeof(*perdatum), GFP_KERNEL); perdatum = kmalloc(sizeof(*perdatum), GFP_KERNEL);
if (!perdatum) { if (!perdatum) {
...@@ -885,7 +887,8 @@ static int common_read(struct policydb *p, struct hashtab *h, void *fp) ...@@ -885,7 +887,8 @@ static int common_read(struct policydb *p, struct hashtab *h, void *fp)
{ {
char *key = NULL; char *key = NULL;
struct common_datum *comdatum; struct common_datum *comdatum;
u32 buf[4], len, nel; __le32 buf[4];
u32 len, nel;
int i, rc; int i, rc;
comdatum = kmalloc(sizeof(*comdatum), GFP_KERNEL); comdatum = kmalloc(sizeof(*comdatum), GFP_KERNEL);
...@@ -939,7 +942,8 @@ static int read_cons_helper(struct constraint_node **nodep, int ncons, ...@@ -939,7 +942,8 @@ static int read_cons_helper(struct constraint_node **nodep, int ncons,
{ {
struct constraint_node *c, *lc; struct constraint_node *c, *lc;
struct constraint_expr *e, *le; struct constraint_expr *e, *le;
u32 buf[3], nexpr; __le32 buf[3];
u32 nexpr;
int rc, i, j, depth; int rc, i, j, depth;
lc = NULL; lc = NULL;
...@@ -1023,7 +1027,8 @@ static int class_read(struct policydb *p, struct hashtab *h, void *fp) ...@@ -1023,7 +1027,8 @@ static int class_read(struct policydb *p, struct hashtab *h, void *fp)
{ {
char *key = NULL; char *key = NULL;
struct class_datum *cladatum; struct class_datum *cladatum;
u32 buf[6], len, len2, ncons, nel; __le32 buf[6];
u32 len, len2, ncons, nel;
int i, rc; int i, rc;
cladatum = kmalloc(sizeof(*cladatum), GFP_KERNEL); cladatum = kmalloc(sizeof(*cladatum), GFP_KERNEL);
...@@ -1117,7 +1122,8 @@ static int role_read(struct policydb *p, struct hashtab *h, void *fp) ...@@ -1117,7 +1122,8 @@ static int role_read(struct policydb *p, struct hashtab *h, void *fp)
char *key = NULL; char *key = NULL;
struct role_datum *role; struct role_datum *role;
int rc; int rc;
u32 buf[2], len; __le32 buf[2];
u32 len;
role = kmalloc(sizeof(*role), GFP_KERNEL); role = kmalloc(sizeof(*role), GFP_KERNEL);
if (!role) { if (!role) {
...@@ -1177,7 +1183,8 @@ static int type_read(struct policydb *p, struct hashtab *h, void *fp) ...@@ -1177,7 +1183,8 @@ static int type_read(struct policydb *p, struct hashtab *h, void *fp)
char *key = NULL; char *key = NULL;
struct type_datum *typdatum; struct type_datum *typdatum;
int rc; int rc;
u32 buf[3], len; __le32 buf[3];
u32 len;
typdatum = kmalloc(sizeof(*typdatum),GFP_KERNEL); typdatum = kmalloc(sizeof(*typdatum),GFP_KERNEL);
if (!typdatum) { if (!typdatum) {
...@@ -1221,7 +1228,7 @@ static int type_read(struct policydb *p, struct hashtab *h, void *fp) ...@@ -1221,7 +1228,7 @@ static int type_read(struct policydb *p, struct hashtab *h, void *fp)
*/ */
static int mls_read_level(struct mls_level *lp, void *fp) static int mls_read_level(struct mls_level *lp, void *fp)
{ {
u32 buf[1]; __le32 buf[1];
int rc; int rc;
memset(lp, 0, sizeof(*lp)); memset(lp, 0, sizeof(*lp));
...@@ -1249,7 +1256,8 @@ static int user_read(struct policydb *p, struct hashtab *h, void *fp) ...@@ -1249,7 +1256,8 @@ static int user_read(struct policydb *p, struct hashtab *h, void *fp)
char *key = NULL; char *key = NULL;
struct user_datum *usrdatum; struct user_datum *usrdatum;
int rc; int rc;
u32 buf[2], len; __le32 buf[2];
u32 len;
usrdatum = kmalloc(sizeof(*usrdatum), GFP_KERNEL); usrdatum = kmalloc(sizeof(*usrdatum), GFP_KERNEL);
if (!usrdatum) { if (!usrdatum) {
...@@ -1303,7 +1311,8 @@ static int sens_read(struct policydb *p, struct hashtab *h, void *fp) ...@@ -1303,7 +1311,8 @@ static int sens_read(struct policydb *p, struct hashtab *h, void *fp)
char *key = NULL; char *key = NULL;
struct level_datum *levdatum; struct level_datum *levdatum;
int rc; int rc;
u32 buf[2], len; __le32 buf[2];
u32 len;
levdatum = kmalloc(sizeof(*levdatum), GFP_ATOMIC); levdatum = kmalloc(sizeof(*levdatum), GFP_ATOMIC);
if (!levdatum) { if (!levdatum) {
...@@ -1354,7 +1363,8 @@ static int cat_read(struct policydb *p, struct hashtab *h, void *fp) ...@@ -1354,7 +1363,8 @@ static int cat_read(struct policydb *p, struct hashtab *h, void *fp)
char *key = NULL; char *key = NULL;
struct cat_datum *catdatum; struct cat_datum *catdatum;
int rc; int rc;
u32 buf[3], len; __le32 buf[3];
u32 len;
catdatum = kmalloc(sizeof(*catdatum), GFP_ATOMIC); catdatum = kmalloc(sizeof(*catdatum), GFP_ATOMIC);
if (!catdatum) { if (!catdatum) {
...@@ -1417,7 +1427,8 @@ int policydb_read(struct policydb *p, void *fp) ...@@ -1417,7 +1427,8 @@ int policydb_read(struct policydb *p, void *fp)
struct ocontext *l, *c, *newc; struct ocontext *l, *c, *newc;
struct genfs *genfs_p, *genfs, *newgenfs; struct genfs *genfs_p, *genfs, *newgenfs;
int i, j, rc; int i, j, rc;
u32 buf[8], len, len2, config, nprim, nel, nel2; __le32 buf[8];
u32 len, len2, config, nprim, nel, nel2;
char *policydb_str; char *policydb_str;
struct policydb_compat_info *info; struct policydb_compat_info *info;
struct range_trans *rt, *lrt; struct range_trans *rt, *lrt;
...@@ -1433,17 +1444,14 @@ int policydb_read(struct policydb *p, void *fp) ...@@ -1433,17 +1444,14 @@ int policydb_read(struct policydb *p, void *fp)
if (rc < 0) if (rc < 0)
goto bad; goto bad;
for (i = 0; i < 2; i++) if (le32_to_cpu(buf[0]) != POLICYDB_MAGIC) {
buf[i] = le32_to_cpu(buf[i]);
if (buf[0] != POLICYDB_MAGIC) {
printk(KERN_ERR "security: policydb magic number 0x%x does " printk(KERN_ERR "security: policydb magic number 0x%x does "
"not match expected magic number 0x%x\n", "not match expected magic number 0x%x\n",
buf[0], POLICYDB_MAGIC); le32_to_cpu(buf[0]), POLICYDB_MAGIC);
goto bad; goto bad;
} }
len = buf[1]; len = le32_to_cpu(buf[1]);
if (len != strlen(POLICYDB_STRING)) { if (len != strlen(POLICYDB_STRING)) {
printk(KERN_ERR "security: policydb string length %d does not " printk(KERN_ERR "security: policydb string length %d does not "
"match expected length %Zu\n", "match expected length %Zu\n",
...@@ -1478,19 +1486,17 @@ int policydb_read(struct policydb *p, void *fp) ...@@ -1478,19 +1486,17 @@ int policydb_read(struct policydb *p, void *fp)
rc = next_entry(buf, fp, sizeof(u32)*4); rc = next_entry(buf, fp, sizeof(u32)*4);
if (rc < 0) if (rc < 0)
goto bad; goto bad;
for (i = 0; i < 4; i++)
buf[i] = le32_to_cpu(buf[i]);
p->policyvers = buf[0]; p->policyvers = le32_to_cpu(buf[0]);
if (p->policyvers < POLICYDB_VERSION_MIN || if (p->policyvers < POLICYDB_VERSION_MIN ||
p->policyvers > POLICYDB_VERSION_MAX) { p->policyvers > POLICYDB_VERSION_MAX) {
printk(KERN_ERR "security: policydb version %d does not match " printk(KERN_ERR "security: policydb version %d does not match "
"my version range %d-%d\n", "my version range %d-%d\n",
buf[0], POLICYDB_VERSION_MIN, POLICYDB_VERSION_MAX); le32_to_cpu(buf[0]), POLICYDB_VERSION_MIN, POLICYDB_VERSION_MAX);
goto bad; goto bad;
} }
if ((buf[1] & POLICYDB_CONFIG_MLS)) { if ((le32_to_cpu(buf[1]) & POLICYDB_CONFIG_MLS)) {
if (ss_initialized && !selinux_mls_enabled) { if (ss_initialized && !selinux_mls_enabled) {
printk(KERN_ERR "Cannot switch between non-MLS and MLS " printk(KERN_ERR "Cannot switch between non-MLS and MLS "
"policies\n"); "policies\n");
...@@ -1519,9 +1525,11 @@ int policydb_read(struct policydb *p, void *fp) ...@@ -1519,9 +1525,11 @@ int policydb_read(struct policydb *p, void *fp)
goto bad; goto bad;
} }
if (buf[2] != info->sym_num || buf[3] != info->ocon_num) { if (le32_to_cpu(buf[2]) != info->sym_num ||
le32_to_cpu(buf[3]) != info->ocon_num) {
printk(KERN_ERR "security: policydb table sizes (%d,%d) do " printk(KERN_ERR "security: policydb table sizes (%d,%d) do "
"not match mine (%d,%d)\n", buf[2], buf[3], "not match mine (%d,%d)\n", le32_to_cpu(buf[2]),
le32_to_cpu(buf[3]),
info->sym_num, info->ocon_num); info->sym_num, info->ocon_num);
goto bad; goto bad;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册