[libvirt] [PATCH] qemu_monitor: Don't output snapshot format argument if type is NULL

Peter Krempa pkrempa at redhat.com
Tue Mar 27 11:49:01 UTC 2012


If the snapshot format type string was NULL, the JSON framework created
an invalid JSON string.
---
The other option would be to fix qemuMonitorJSONMakeCommandRaw that string arguments with a NULL
argument would suppress outputing the complete option, but I'm afraid of breaking something.

Background:
http://www.redhat.com/archives/libvir-list/2012-March/msg01198.html

 src/qemu/qemu_monitor_json.c |   27 +++++++++++++++++++--------
 1 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index eeeb6a6..6fce58a 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -3112,14 +3112,25 @@ qemuMonitorJSONDiskSnapshot(qemuMonitorPtr mon, virJSONValuePtr actions,
     virJSONValuePtr cmd;
     virJSONValuePtr reply = NULL;

-    cmd = qemuMonitorJSONMakeCommandRaw(actions != NULL,
-                                        "blockdev-snapshot-sync",
-                                        "s:device", device,
-                                        "s:snapshot-file", file,
-                                        "s:format", format,
-                                        reuse ? "s:mode" : NULL,
-                                        reuse ? "existing" : NULL,
-                                        NULL);
+    if (format) {
+        cmd = qemuMonitorJSONMakeCommandRaw(actions != NULL,
+                                            "blockdev-snapshot-sync",
+                                            "s:device", device,
+                                            "s:snapshot-file", file,
+                                            "s:format", format,
+                                            reuse ? "s:mode" : NULL,
+                                            reuse ? "existing" : NULL,
+                                            NULL);
+    } else {
+        cmd = qemuMonitorJSONMakeCommandRaw(actions != NULL,
+                                            "blockdev-snapshot-sync",
+                                            "s:device", device,
+                                            "s:snapshot-file", file,
+                                            reuse ? "s:mode" : NULL,
+                                            reuse ? "existing" : NULL,
+                                            NULL);
+    }
+
     if (!cmd)
         return -1;

-- 
1.7.3.4




More information about the libvir-list mailing list