[libvirt] [PATCHv4] network: Avoid memory leaks on networkBuildDnsmasqArgv
Eric Blake
eblake at redhat.com
Wed Feb 1 23:17:11 UTC 2012
On 02/01/2012 02:22 AM, ajia at redhat.com wrote:
> From: Alex Jia <ajia at redhat.com>
>
> Detected by valgrind. Leaks introduced in commit 973af236.
>
> * src/network/bridge_driver.c: fix memory leaks on failure and successful path.
>
> * How to reproduce?
> % make -C tests check TESTS=networkxml2argvtest
> % cd tests && valgrind -v --leak-check=full ./networkxml2argvtest
>
>
> Signed-off-by: Alex Jia <ajia at redhat.com>
> ---
> src/network/bridge_driver.c | 17 +++++++++++------
> 1 files changed, 11 insertions(+), 6 deletions(-)
>
> @@ -516,7 +520,6 @@ networkBuildDnsmasqArgv(virNetworkObjPtr network,
> int i;
>
> for (i = 0; i < dns->ntxtrecords; i++) {
> - char *record = NULL;
> if (virAsprintf(&record, "%s,%s",
> dns->txtrecords[i].name,
> dns->txtrecords[i].value) < 0) {
Hmm, we can simplify this loop even further, by using the right function
in the first place.
ACK to what you had, and I'm squashing this in then pushing:
diff --git i/src/network/bridge_driver.c w/src/network/bridge_driver.c
index fb06b64..220f99e 100644
--- i/src/network/bridge_driver.c
+++ w/src/network/bridge_driver.c
@@ -520,15 +520,10 @@ networkBuildDnsmasqArgv(virNetworkObjPtr network,
int i;
for (i = 0; i < dns->ntxtrecords; i++) {
- if (virAsprintf(&record, "%s,%s",
- dns->txtrecords[i].name,
- dns->txtrecords[i].value) < 0) {
- virReportOOMError();
- goto cleanup;
- }
-
- virCommandAddArgPair(cmd, "--txt-record", record);
- VIR_FREE(record);
+ virCommandAddArg(cmd, "--txt-record");
+ virCommandAddArgFormat(cmd, "%s,%s",
+ dns->txtrecords[i].name,
+ dns->txtrecords[i].value);
}
for (i = 0; i < dns->nsrvrecords; i++) {
--
Eric Blake eblake at redhat.com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 620 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20120201/147852d8/attachment-0001.sig>
More information about the libvir-list
mailing list