46 lines
1.6 KiB
Diff
46 lines
1.6 KiB
Diff
|
From a1952af7c0346f3cd60a362e43fc90a7d799cffe Mon Sep 17 00:00:00 2001
|
||
|
From: James Carter <jwcart2@gmail.com>
|
||
|
Date: Tue, 11 May 2021 09:43:43 -0400
|
||
|
Subject: [PATCH] libsepol/cil: Do not add NULL node when inserting key into
|
||
|
symtab
|
||
|
|
||
|
Allow inserting a key without providing a node.
|
||
|
|
||
|
This will make it easier to properly resolve call arguments where
|
||
|
a key might need to be temporarily removed to search for a datum
|
||
|
that is not declared within the call. Since the node is already
|
||
|
in the node list, re-inserting the key without this option would
|
||
|
add another link to the node and cause problems.
|
||
|
|
||
|
Also, do not add the node to the datum's node list if the result
|
||
|
of the call to hashtab_insert() is SEPOL_EEXIST because the datum
|
||
|
is a duplicate and will be destroyed.
|
||
|
|
||
|
Signed-off-by: James Carter <jwcart2@gmail.com>
|
||
|
---
|
||
|
libsepol/cil/src/cil_symtab.c | 8 ++++----
|
||
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
||
|
|
||
|
diff --git a/libsepol/cil/src/cil_symtab.c b/libsepol/cil/src/cil_symtab.c
|
||
|
index 579a888e5785..c195156071e1 100644
|
||
|
--- a/libsepol/cil/src/cil_symtab.c
|
||
|
+++ b/libsepol/cil/src/cil_symtab.c
|
||
|
@@ -93,10 +93,10 @@ int cil_symtab_insert(symtab_t *symtab, hashtab_key_t key, struct cil_symtab_dat
|
||
|
datum->fqn = key;
|
||
|
datum->symtab = symtab;
|
||
|
symtab->nprim++;
|
||
|
- cil_list_append(datum->nodes, CIL_NODE, node);
|
||
|
- } else if (rc == SEPOL_EEXIST) {
|
||
|
- cil_list_append(datum->nodes, CIL_NODE, node);
|
||
|
- } else {
|
||
|
+ if (node) {
|
||
|
+ cil_list_append(datum->nodes, CIL_NODE, node);
|
||
|
+ }
|
||
|
+ } else if (rc != SEPOL_EEXIST) {
|
||
|
cil_symtab_error("Failed to insert datum into hashtab\n");
|
||
|
}
|
||
|
|
||
|
--
|
||
|
2.32.0
|
||
|
|