From a1952af7c0346f3cd60a362e43fc90a7d799cffe Mon Sep 17 00:00:00 2001 From: James Carter 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 --- 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