From: Michal Privoznik Date: Mon, 11 Sep 2017 08:48:33 +0000 (+0200) Subject: qemuBuildHostNetStr: Don't leak buffer X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=891b3c119ea6f7e9404beef2bcc5319ee6182708;p=libvirt.git qemuBuildHostNetStr: Don't leak buffer If there was an error when constructing the buffer, NULL is returned. The buffer is never freed though. Signed-off-by: Michal Privoznik --- diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index e57a3278e0..d553df57f4 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -3805,13 +3805,13 @@ qemuBuildHostNetStr(virDomainNetDefPtr net, virDomainNetType netType = virDomainNetGetActualType(net); virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); size_t i; + char *ret = NULL; if (net->script && netType != VIR_DOMAIN_NET_TYPE_ETHERNET) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("scripts are not supported on interfaces of type %s"), virDomainNetTypeToString(netType)); - virObjectUnref(cfg); - return NULL; + goto cleanup; } switch (netType) { @@ -3919,13 +3919,16 @@ qemuBuildHostNetStr(virDomainNetDefPtr net, virBufferAsprintf(&buf, "sndbuf=%lu,", net->tune.sndbuf); } - virObjectUnref(cfg); virBufferTrim(&buf, ",", -1); if (virBufferCheckError(&buf) < 0) - return NULL; + goto cleanup; - return virBufferContentAndReset(&buf); + ret = virBufferContentAndReset(&buf); + cleanup: + virBufferFreeAndReset(&buf); + virObjectUnref(cfg); + return ret; }