2025-04-21 03:40:34 +00:00
|
|
|
From ae3c44c2d44b5e2f1c87b4b095d522a7f11add7a Mon Sep 17 00:00:00 2001
|
2025-04-28 03:21:23 +00:00
|
|
|
From: James Carter <jwcart2@gmail.com>
|
2025-04-21 03:40:34 +00:00
|
|
|
Date: Mon, 21 Apr 2025 11:34:35 +0800
|
|
|
|
|
Subject: [PATCH] libsepol-cil-Optionally-allow-duplicate-role-declarations
|
|
|
|
|
|
|
|
|
|
Reference:https://github.com/SELinuxProject/selinux/commit/7492632a6b6a1081d0c057a2ecfc193be9989515
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
libsepol/cil/src/cil_build_ast.c | 8 +++++++-
|
|
|
|
|
1 file changed, 7 insertions(+), 1 deletion(-)
|
|
|
|
|
|
|
|
|
|
diff --git a/libsepol/cil/src/cil_build_ast.c b/libsepol/cil/src/cil_build_ast.c
|
|
|
|
|
index 4177c9f..8264984 100644
|
|
|
|
|
--- a/libsepol/cil/src/cil_build_ast.c
|
|
|
|
|
+++ b/libsepol/cil/src/cil_build_ast.c
|
|
|
|
|
@@ -92,6 +92,7 @@ static int cil_allow_multiple_decls(struct cil_db *db, enum cil_flavor f_new, en
|
|
|
|
|
switch (f_new) {
|
|
|
|
|
case CIL_TYPE:
|
|
|
|
|
case CIL_TYPEATTRIBUTE:
|
|
|
|
|
+ case CIL_ROLE:
|
|
|
|
|
if (db->multiple_decls) {
|
|
|
|
|
return CIL_TRUE;
|
|
|
|
|
}
|
|
|
|
|
@@ -1750,7 +1751,12 @@ int cil_gen_role(struct cil_db *db, struct cil_tree_node *parse_current, struct
|
|
|
|
|
|
|
|
|
|
rc = cil_gen_node(db, ast_node, (struct cil_symtab_datum*)role, (hashtab_key_t)key, CIL_SYM_ROLES, CIL_ROLE);
|
|
|
|
|
if (rc != SEPOL_OK) {
|
|
|
|
|
- goto exit;
|
|
|
|
|
+ if (rc == SEPOL_EEXIST) {
|
|
|
|
|
+ cil_destroy_role(role);
|
|
|
|
|
+ role = NULL;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ goto exit;
|
|
|
|
|
+ }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return SEPOL_OK;
|
|
|
|
|
--
|
|
|
|
|
2.33.0
|
|
|
|
|
|