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)
     {

Reply via email to