[libvirt] [PATCH 14/20] qemumonitortestutils: Add the ability to check arguments of commands

John Ferlan jferlan at redhat.com
Thu Aug 1 11:42:24 UTC 2013


On 07/30/2013 09:05 AM, Peter Krempa wrote:

<...snip...>

> +/* this allows to add a responder that is able to check
> + * a (shallow) structure of arguments for a command */
> +int
> +qemuMonitorTestAddItemParams(qemuMonitorTestPtr test,
> +                             const char *cmdname,
> +                             const char *response,
> +                             ...)
> +{
> +    struct qemuMonitorTestHandlerData *data;
> +    const char *argname;
> +    const char *argval;
> +    va_list args;
> +
> +    va_start(args, response);
> +

Coverity complains:

668  	

(1) Event va_init: 	Initializing va_list "args".
Also see events: 	[missing_va_end]

669  	    va_start(args, response);
670  	

(2) Event cond_true: 	Condition "virAlloc(&data, 32UL /* sizeof (*data)
*/, true /* 1 */, VIR_FROM_NONE, "qemumonitortestutils.c", <anonymous>,
671) < 0", taking true branch

671  	    if (VIR_ALLOC(data) < 0)

(3) Event missing_va_end: 	va_end was not called for "args".
Also see events: 	[va_init]

672  	        return -1;
673  	

John

> +    if (VIR_ALLOC(data) < 0)
> +        return -1;
> +
> +    if (VIR_STRDUP(data->command_name, cmdname) < 0 ||
> +        VIR_STRDUP(data->response, response) < 0)
> +        goto error;
> +
> +    while ((argname = va_arg(args, char *))) {
> +        size_t i;
> +        if (!(argval = va_arg(args, char *))) {
> +            virReportError(VIR_ERR_INTERNAL_ERROR,
> +                           "Missing argument value for argument '%s'",
> +                           argname);
> +            goto error;
> +        }
> +
> +        i = data->nargs;
> +        if (VIR_EXPAND_N(data->args, data->nargs, 1))
> +            goto error;
> +
> +        if (VIR_STRDUP(data->args[i].argname, argname) < 0 ||
> +            VIR_STRDUP(data->args[i].argval, argval) < 0)
> +            goto error;
> +    }
> +
> +    va_end(args);
> +
> +    return qemuMonitorTestAddHandler(test,
> +                                     qemuMonitorTestProcessCommandWithArgs,
> +                                     data, qemuMonitorTestHandlerDataFree);
> +
> +error:
> +    va_end(args);
> +    qemuMonitorTestHandlerDataFree(data);
> +    return -1;
> +}
> +
> +




More information about the libvir-list mailing list