diff --git a/security/selinux/ss/policydb.c b/security/selinux/ss/policydb.c index 69c19ef4b881..fdb8a62da04a 100644 --- a/security/selinux/ss/policydb.c +++ b/security/selinux/ss/policydb.c @@ -1168,6 +1168,9 @@ static int perm_read(struct policydb *p, struct symtab *s, struct policy_file *f rc = symtab_insert(s, key, perdatum); if (rc) goto bad; + /* indexes an nprim-sized array in security_get_permissions() */ + if (perdatum->value > s->nprim) + goto bad; return 0; bad: