[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