]> xenbits.xensource.com Git - people/dariof/libvirt.git/commitdiff
virsh: Report error when taking a snapshot with empty --memspec argument
authorPeter Krempa <pkrempa@redhat.com>
Thu, 22 Nov 2012 10:00:14 +0000 (11:00 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 23 Nov 2012 12:55:43 +0000 (13:55 +0100)
When the value of memspec was empty taking of a snapshot failed without
reporting an error.

tools/virsh-snapshot.c

index 398730c9549bb005f087e5b2a9cde46409416798..8ec6456ed24bc13ac445672829cfae0a92741ee0 100644 (file)
@@ -358,18 +358,19 @@ cmdSnapshotCreateAs(vshControl *ctl, const vshCmd *cmd)
     if (desc)
         virBufferEscapeString(&buf, "  <description>%s</description>\n", desc);
 
-    if (vshCommandOptString(cmd, "memspec", &memspec) < 0 ||
-        vshParseSnapshotMemspec(ctl, &buf, memspec) < 0) {
-        virBufferFreeAndReset(&buf);
+    if (vshCommandOptString(cmd, "memspec", &memspec) < 0) {
+        vshError(ctl, _("memspec argument must not be empty"));
         goto cleanup;
     }
+
+    if (memspec && vshParseSnapshotMemspec(ctl, &buf, memspec) < 0)
+        goto cleanup;
+
     if (vshCommandOptBool(cmd, "diskspec")) {
         virBufferAddLit(&buf, "  <disks>\n");
         while ((opt = vshCommandOptArgv(cmd, opt))) {
-            if (vshParseSnapshotDiskspec(ctl, &buf, opt->data) < 0) {
-                virBufferFreeAndReset(&buf);
+            if (vshParseSnapshotDiskspec(ctl, &buf, opt->data) < 0)
                 goto cleanup;
-            }
         }
         virBufferAddLit(&buf, "  </disks>\n");
     }
@@ -390,6 +391,7 @@ cmdSnapshotCreateAs(vshControl *ctl, const vshCmd *cmd)
     ret = vshSnapshotCreate(ctl, dom, buffer, flags, NULL);
 
 cleanup:
+    virBufferFreeAndReset(&buf);
     VIR_FREE(buffer);
     if (dom)
         virDomainFree(dom);