From 7b3f3d49654a30815599a0a2b0cf89b7af0b95b9 Mon Sep 17 00:00:00 2001 From: weishu Date: Tue, 27 Dec 2022 15:55:54 +0700 Subject: [PATCH] kernel: fix sepolicy db size incorrect --- kernel/selinux/sepolicy.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/kernel/selinux/sepolicy.c b/kernel/selinux/sepolicy.c index 588b796a..afdb9fcc 100644 --- a/kernel/selinux/sepolicy.c +++ b/kernel/selinux/sepolicy.c @@ -55,6 +55,16 @@ struct avtab_node* get_avtab_node(struct policydb* db, struct avtab_key *key, st avdatum.u.data = key->specified == AVTAB_AUDITDENY ? ~0U : 0U; /* this is used to get the node - insertion is actually unique */ node = avtab_insert_nonunique(&db->te_avtab, key, &avdatum); + + int grow_size = sizeof(u16) * 4; + if (key->specified & AVTAB_XPERMS) { + grow_size += sizeof(u8); + grow_size += sizeof(u8); + grow_size += sizeof(u32) * ARRAY_SIZE(avdatum.u.xperms->perms.p); + } else { + grow_size += sizeof(u32) * 1; + } + db->len += grow_size; } return node;