]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Fix potential crash in QEMU monitor JSON impl
authorDaniel P. Berrange <berrange@redhat.com>
Mon, 12 Jul 2010 13:07:02 +0000 (14:07 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Mon, 12 Jul 2010 17:34:18 +0000 (18:34 +0100)
An indentation mistake meant that a check for return status
was not properly performed in all cases. This could result
in a crash on NULL pointer in a following line.

* src/qemu/qemu_monitor_json.c: Fix check for return status
  when processing JSON for blockstats

src/qemu/qemu_monitor_json.c

index 01be86d258004de4ac1751fcaeb0370543ea2127..4487ff54dd06145e3644e449f5d413459784d09f 100644 (file)
@@ -1059,11 +1059,10 @@ int qemuMonitorJSONGetBlockStatsInfo(qemuMonitorPtr mon,
 
     ret = qemuMonitorJSONCommand(mon, cmd, &reply);
 
-    if (ret == 0) {
+    if (ret == 0)
         ret = qemuMonitorJSONCheckError(cmd, reply);
-        if (ret < 0)
-            goto cleanup;
-    }
+    if (ret < 0)
+        goto cleanup;
     ret = -1;
 
     devices = virJSONValueObjectGet(reply, "return");
@@ -1164,11 +1163,13 @@ int qemuMonitorJSONGetBlockExtent(qemuMonitorPtr mon,
     if (!cmd)
         return -1;
 
-    if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0)
-        goto cleanup;
+    ret = qemuMonitorJSONCommand(mon, cmd, &reply);
 
-    if (qemuMonitorJSONCheckError(cmd, reply) < 0)
+    if (ret == 0)
+        ret = qemuMonitorJSONCheckError(cmd, reply);
+    if (ret < 0)
         goto cleanup;
+    ret = -1;
 
     devices = virJSONValueObjectGet(reply, "return");
     if (!devices || devices->type != VIR_JSON_TYPE_ARRAY) {