commit: 76b2f9b535295ddb7e168e3c113098ab12891589
Author: Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Thu Jan 29 16:19:16 2026 +0000
Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Thu Jan 29 16:19:16 2026 +0000
URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=76b2f9b5
libq/dep: address Coverity CIDs 557297, 557298, 557299
Check some nulls, ensure we initialise vars.
Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>
libq/dep.c | 33 ++++++++++++++++++++++++++++++---
1 file changed, 30 insertions(+), 3 deletions(-)
diff --git a/libq/dep.c b/libq/dep.c
index fd93098a..8f39f93a 100644
--- a/libq/dep.c
+++ b/libq/dep.c
@@ -205,6 +205,12 @@ dep_node_t *dep_grow_tree
ret->type = DEP_ALL;
ret->members = array_new();
ret->parent = array_get(res, level);
+ if (ret->parent == NULL)
+ {
+ warnf("Internal error, missing node for level %d", level);
+ ret = NULL;
+ goto dep_grow_tree_fail;
+ }
array_append(ret->parent->members, ret);
array_append(res, ret);
@@ -228,8 +234,11 @@ dep_node_t *dep_grow_tree
if (next_node == NULL ||
next_node->type != DEP_POPEN)
{
- warn("Missing ( after ||, got %s (in %s)",
- dep_type_names[next_node->type], depend);
+ if (next_node == NULL)
+ warn("Missing ( after ||, truncated data? (in %s)", depend);
+ else
+ warn("Missing ( after ||, got %s (in %s)",
+ dep_type_names[next_node->type], depend);
ret = NULL;
goto dep_grow_tree_fail;
}
@@ -238,6 +247,12 @@ dep_node_t *dep_grow_tree
ret->type = DEP_ANY;
ret->members = array_new();
ret->parent = array_get(res, level);
+ if (ret->parent == NULL)
+ {
+ warnf("Internal error, missing node for level %d", level);
+ ret = NULL;
+ goto dep_grow_tree_fail;
+ }
array_append(ret->parent->members, ret);
array_append(res, ret);
@@ -298,6 +313,12 @@ dep_node_t *dep_grow_tree
curr_node->word, curr_node->wordlen);
((char *)ret)[sizeof(*ret) + ret->wordlen] = '\0';
ret->parent = array_get(res, level);
+ if (ret->parent == NULL)
+ {
+ warnf("Internal error, missing node for level %d", level);
+ ret = NULL;
+ goto dep_grow_tree_fail;
+ }
array_append(ret->parent->members, ret);
array_append(res, ret);
@@ -317,6 +338,12 @@ dep_node_t *dep_grow_tree
ret->type = DEP_ATOM;
ret->atom = atom_explode(buf);
ret->parent = array_get(res, level);
+ if (ret->parent == NULL)
+ {
+ warnf("Internal error, missing node for level %d", level);
+ ret = NULL;
+ goto dep_grow_tree_fail;
+ }
array_append(ret->parent->members, ret);
}
nots = 0;
@@ -420,7 +447,7 @@ void dep_print_tree
}
else if (root->type == DEP_ATOM)
{
- bool match;
+ bool match = false;
if (dohl)
{