]> xenbits.xensource.com Git - libvirt.git/commitdiff
virsh: do not unlink NULL file
authorMarc-André Lureau <marcandre.lureau@gmail.com>
Sat, 1 Oct 2011 01:05:13 +0000 (03:05 +0200)
committerEric Blake <eblake@redhat.com>
Sat, 1 Oct 2011 01:22:06 +0000 (19:22 -0600)
error:could not take a screenshot of xp
==6216== Syscall param unlink(pathname) points to unaddressable byte(s)
==6216==    at 0x373A0D4937: unlink (syscall-template.S:82)
==6216==    by 0x40FD73: cmdScreenshot (virsh.c:3070)
==6216==    by 0x42BA0D: vshCommandRun (virsh.c:14920)
==6216==    by 0x42EC97: main (virsh.c:16379)
==6216==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==6216==
error:Requested operation is not valid: domain is not running

tools/virsh.c

index 1909dce20ed416fa216934f624e9fcddfe8a8dd7..8865fb58259efd786543d50d3b7f598b27aef6de 100644 (file)
@@ -3004,7 +3004,7 @@ cmdScreenshot(vshControl *ctl, const vshCmd *cmd)
     unsigned int screen = 0;
     unsigned int flags = 0; /* currently unused */
     int ret = false;
-    bool created = true;
+    bool created = false;
     bool generated = false;
     char *mime = NULL;
 
@@ -3039,12 +3039,13 @@ cmdScreenshot(vshControl *ctl, const vshCmd *cmd)
     }
 
     if ((fd = open(file, O_WRONLY|O_CREAT|O_EXCL, 0666)) < 0) {
-        created = false;
         if (errno != EEXIST ||
             (fd = open(file, O_WRONLY|O_TRUNC, 0666)) < 0) {
             vshError(ctl, _("cannot create file %s"), file);
             goto cleanup;
         }
+    } else {
+        created = true;
     }
 
     if (virStreamRecvAll(st, vshStreamSink, &fd) < 0) {