From: John Ferlan Date: Wed, 1 Jul 2015 13:35:43 +0000 (-0400) Subject: util: Avoid Coverity FORWARD_NULL X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=2c05841246e30205d06cc186b1ba7434d2bae880;p=people%2Fliuw%2Flibxenctrl-split%2Flibvirt.git util: Avoid Coverity FORWARD_NULL 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 --- diff --git a/src/util/virtypedparam.c b/src/util/virtypedparam.c index 106403c9e..f3ce15753 100644 --- a/src/util/virtypedparam.c +++ b/src/util/virtypedparam.c @@ -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] = ¶ms[i]; - n++; } }