[libvirt] [PATCH 2/2] nwfilter: address more coverity findings

Stefan Berger stefanb at linux.vnet.ibm.com
Thu Apr 26 19:46:55 UTC 2012


This patch addresses the following coverity findings:

/libvirt/src/conf/nwfilter_params.c:390:
var_assigned: Assigning: "varValue" = null return value from 
"virHashLookup".

/libvirt/src/conf/nwfilter_params.c:392:
dereference: Dereferencing a pointer that might be null "varValue" when 
calling "virNWFilterVarValueGetNthValue".

/libvirt/src/conf/nwfilter_params.c:399:
dereference: Dereferencing a pointer that might be null "tmp" when 
calling "virNWFilterVarValueGetNthValue".

---
  src/conf/nwfilter_params.c |   16 +++++++++++++++-
  1 file changed, 15 insertions(+), 1 deletion(-)

Index: libvirt-acl/src/conf/nwfilter_params.c
===================================================================
--- libvirt-acl.orig/src/conf/nwfilter_params.c
+++ libvirt-acl/src/conf/nwfilter_params.c
@@ -30,7 +30,7 @@
  #include "datatypes.h"
  #include "nwfilter_params.h"
  #include "domain_conf.h"
-
+#include "logging.h"

  #define VIR_FROM_THIS VIR_FROM_NWFILTER

@@ -391,14 +391,28 @@ virNWFilterVarCombIterEntryAreUniqueEntr
      const char *value;

      varValue = virHashLookup(hash->hashTable, cie->varNames[0]);
+    if (!varValue) {
+        /* caller's error */
+        VIR_ERROR(_("%s: hash lookup resulted in NULL pointer"), __func__);
+        return true;
+    }

      value = virNWFilterVarValueGetNthValue(varValue, cie->curValue);
+    if (!value) {
+        VIR_ERROR(_("%s: Lookup of value at index %u resulted in a NULL "
+                  "pointer"), __func__, cie->curValue);
+        return true;
+    }

      for (i = 0; i < cie->curValue; i++) {
          if (STREQ(value, virNWFilterVarValueGetNthValue(varValue, i))) {
              bool isSame = true;
              for (j = 1; j < cie->nVarNames; j++) {
                  tmp = virHashLookup(hash->hashTable, cie->varNames[j]);
+                if (!tmp) {
+                    /* should never occur to step on a NULL here */
+                    return true;
+                }
                  if (!STREQ(virNWFilterVarValueGetNthValue(tmp, 
cie->curValue),
                             virNWFilterVarValueGetNthValue(tmp, i))) {
                      isSame = false;




More information about the libvir-list mailing list