]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
util: Avoid Coverity FORWARD_NULL
authorJohn Ferlan <jferlan@redhat.com>
Wed, 1 Jul 2015 13:35:43 +0000 (09:35 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Thu, 2 Jul 2015 10:30:27 +0000 (06:30 -0400)
Avoid a false positive since Coverity find a path in virResizeN which
could return 0 prior to the allocation of memory and thus flags a
possible NULL dereference. Instead allocate the output buffer based
on 'nparams' and only fill it partially if need be - shouldn't be too
much a waste of space. Quicker than multiple VIR_RESIZE_N calls or
two loops of STREQ's sandwiched around a single VIR_ALLOC_N using
'n' matches from a first loop to generate the 'n' addresses to return

Signed-off-by: John Ferlan <jferlan@redhat.com>
src/util/virtypedparam.c

index 106403c9e9507704e3ee2966c38ed4d82f2487a8..f3ce1575328f9d17c3dcf936380c7ef549c0a0ce 100644 (file)
@@ -501,21 +501,18 @@ virTypedParamsFilter(virTypedParameterPtr params,
                      const char *name,
                      virTypedParameterPtr **ret)
 {
-    size_t i, alloc = 0, n = 0;
+    size_t i, n = 0;
 
     virCheckNonNullArgGoto(params, error);
     virCheckNonNullArgGoto(name, error);
     virCheckNonNullArgGoto(ret, error);
 
-    *ret = NULL;
+    if (VIR_ALLOC_N(*ret, nparams) < 0)
+        goto error;
 
     for (i = 0; i < nparams; i++) {
         if (STREQ(params[i].field, name)) {
-            if (VIR_RESIZE_N(*ret, alloc, n, 1) < 0)
-                goto error;
-
             (*ret)[n] = &params[i];
-
             n++;
         }
     }