mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-08 20:51:26 +00:00
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 <jferlan@redhat.com>
This commit is contained in:
parent
848ab685f7
commit
2c05841246
@ -501,21 +501,18 @@ virTypedParamsFilter(virTypedParameterPtr params,
|
|||||||
const char *name,
|
const char *name,
|
||||||
virTypedParameterPtr **ret)
|
virTypedParameterPtr **ret)
|
||||||
{
|
{
|
||||||
size_t i, alloc = 0, n = 0;
|
size_t i, n = 0;
|
||||||
|
|
||||||
virCheckNonNullArgGoto(params, error);
|
virCheckNonNullArgGoto(params, error);
|
||||||
virCheckNonNullArgGoto(name, error);
|
virCheckNonNullArgGoto(name, error);
|
||||||
virCheckNonNullArgGoto(ret, error);
|
virCheckNonNullArgGoto(ret, error);
|
||||||
|
|
||||||
*ret = NULL;
|
if (VIR_ALLOC_N(*ret, nparams) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
for (i = 0; i < nparams; i++) {
|
for (i = 0; i < nparams; i++) {
|
||||||
if (STREQ(params[i].field, name)) {
|
if (STREQ(params[i].field, name)) {
|
||||||
if (VIR_RESIZE_N(*ret, alloc, n, 1) < 0)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
(*ret)[n] = ¶ms[i];
|
(*ret)[n] = ¶ms[i];
|
||||||
|
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user