]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virsh: Resolve Coverity NEGATIVE_RETURNS
authorJohn Ferlan <jferlan@redhat.com>
Thu, 4 Sep 2014 21:08:48 +0000 (17:08 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Fri, 12 Sep 2014 10:12:50 +0000 (06:12 -0400)
Coverity notes that after we VIR_ALLOC_N(params, nparams) a failed call to
virDomainGetCPUStats could result in nparams being set to -1. In that case,
the subsequent virTypedParamsFree in cleanup will pass -1 which isn't good.

Use the returned value as the number of stats to display in the loop as
it will be the value reported from the hypervisor and may be less than
nparams which is OK

Signed-off-by: John Ferlan <jferlan@redhat.com>
tools/virsh-domain.c

index 30b3fa9742f9e77ce2758007cf021b6ae76b9dfe..6ef61bfa629a262c2866c7e6da523c4cc9b0c722 100644 (file)
@@ -6734,7 +6734,7 @@ cmdCPUStats(vshControl *ctl, const vshCmd *cmd)
 {
     virDomainPtr dom;
     virTypedParameterPtr params = NULL;
-    int pos, max_id, cpu = 0, show_count = -1, nparams = 0;
+    int pos, max_id, cpu = 0, show_count = -1, nparams = 0, stats_per_cpu;
     size_t i, j;
     bool show_total = false, show_per_cpu = false;
     unsigned int flags = 0;
@@ -6853,11 +6853,12 @@ cmdCPUStats(vshControl *ctl, const vshCmd *cmd)
         goto cleanup;
 
     /* passing start_cpu == -1 gives us domain's total status */
-    if ((nparams = virDomainGetCPUStats(dom, params, nparams, -1, 1, flags)) < 0)
+    if ((stats_per_cpu = virDomainGetCPUStats(dom, params, nparams,
+                                              -1, 1, flags)) < 0)
         goto failed_stats;
 
     vshPrint(ctl, _("Total:\n"));
-    for (i = 0; i < nparams; i++) {
+    for (i = 0; i < stats_per_cpu; i++) {
         vshPrint(ctl, "\t%-12s ", params[i].field);
         if ((STREQ(params[i].field, VIR_DOMAIN_CPU_STATS_CPUTIME) ||
              STREQ(params[i].field, VIR_DOMAIN_CPU_STATS_USERTIME) ||