From e50c91fdcea5d81e3eb2051c05f4e51a16c3e692 Mon Sep 17 00:00:00 2001 From: Charles Duffy Date: Fri, 18 Sep 2009 11:32:35 -0500 Subject: [PATCH] Prevent attempt to call cat -c during virDomainSave to raw Fedora-patch: libvirt-fix-qemu-raw-format-save.patch --- src/qemu_driver.c | 28 ++++++++++++++++++---------- 1 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/qemu_driver.c b/src/qemu_driver.c index 2ddcdc0..7c7b985 100644 --- a/src/qemu_driver.c +++ b/src/qemu_driver.c @@ -3905,17 +3905,25 @@ 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); -- 1.6.2.5