selinux: detect invalid ebitmap
When count is 0 and the highbit is not zero, the ebitmap is not valid and the internal node is not allocated. This causes issues when routines, like mls_context_isvalid() attempt to use the ebitmap_for_each_bit() and ebitmap_node_get_bit() as they assume a highbit > 0 will have a node allocated. Signed-off-by: William Roberts <william.c.roberts@intel.com> Signed-off-by: Paul Moore <paul@paul-moore.com>
This commit is contained in:
parent
348a0db9e6
commit
74d977b65e
|
@ -374,6 +374,9 @@ int ebitmap_read(struct ebitmap *e, void *fp)
|
|||
goto ok;
|
||||
}
|
||||
|
||||
if (e->highbit && !count)
|
||||
goto bad;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
rc = next_entry(&startbit, fp, sizeof(u32));
|
||||
if (rc < 0) {
|
||||
|
|
Loading…
Reference in a new issue