]> xenbits.xensource.com Git - libvirt.git/commitdiff
prevent attempt to call cat -c during virDomainSave to raw
authorCharles Duffy <charles@dyfis.net>
Tue, 22 Sep 2009 06:56:39 +0000 (08:56 +0200)
committerChris Lalancette <clalance@redhat.com>
Tue, 22 Sep 2009 06:56:39 +0000 (08:56 +0200)
This was prevent virDomainSave from working properly by default,
which is a bad thing.

Signed-off-by: Chris Lalancette <clalance@redhat.com>
src/qemu/qemu_driver.c

index a1f3c83f0adbc7779282482e49c3896c76d6e6be..942aff20951546b5b5581d6bd4772357ad557d86 100644 (file)
@@ -3906,17 +3906,26 @@ static int qemudDomainSave(virDomainPtr dom,
         goto cleanup;
     }
 
-    const char *prog = qemudSaveCompressionTypeToString(header.compressed);
-    if (prog == NULL) {
-        qemudReportError(dom->conn, dom, NULL, VIR_ERR_INTERNAL_ERROR,
-                         _("Invalid compress format %d"), header.compressed);
-        goto cleanup;
-    }
+    {
+        const char *prog = qemudSaveCompressionTypeToString(header.compressed);
+        const char *args;
 
-    if (STREQ (prog, "raw"))
-        prog = "cat";
-    internalret = virAsprintf(&command, "migrate \"exec:"
-                              "%s -c >> '%s' 2>/dev/null\"", prog, safe_path);
+        if (prog == NULL) {
+            qemudReportError(dom->conn, dom, NULL, VIR_ERR_INTERNAL_ERROR,
+                             _("Invalid compress format %d"), header.compressed);
+            goto cleanup;
+        }
+
+        if (STREQ (prog, "raw")) {
+            prog = "cat";
+            args = "";
+        } else {
+            args = "-c";
+        }
+        internalret = virAsprintf(&command, "migrate \"exec:"
+                                  "%s %s >> '%s' 2>/dev/null\"", prog, args,
+                                  safe_path);
+    }
 
     if (internalret < 0) {
         virReportOOMError(dom->conn);