]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: avoid double free of qemu help output
authorEric Blake <eblake@redhat.com>
Fri, 27 Jan 2012 20:53:11 +0000 (13:53 -0700)
committerEric Blake <eblake@redhat.com>
Fri, 27 Jan 2012 20:53:11 +0000 (13:53 -0700)
If yajl was not compiled in, we end up freeing an incoming
parameter, which leads to a bogus free later on.  Regression
introduced in commit 6e769eb.

* src/qemu/qemu_capabilities.c (qemuCapsParseHelpStr): Avoid alloc
on failure path, which in turn fixes bogus free.
Reported by Cole Robinson.

src/qemu/qemu_capabilities.c

index 6dee9d8326bc7a1ca3bf9932ed3a05ba50225a4d..426637ce48dd78ce9bdf277e2259abf5c0f534df 100644 (file)
@@ -1330,16 +1330,14 @@ int qemuCapsParseHelpStr(const char *qemu,
 
 fail:
     p = strchr(help, '\n');
-    if (p)
-        p = strndup(help, p - help);
+    if (!p)
+        p = strchr(help, '\0');
 
     qemuReportError(VIR_ERR_INTERNAL_ERROR,
-                    _("cannot parse %s version number in '%s'"),
-                    qemu, p ? p : help);
+                    _("cannot parse %s version number in '%.*s'"),
+                    qemu, (int) (p - help), help);
 
 cleanup:
-    VIR_FREE(p);
-
     return -1;
 }