From 5483e5736d4d09b820dce2e91c403098ff09a9bc Mon Sep 17 00:00:00 2001 From: Alex Jia Date: Wed, 30 Nov 2011 13:57:11 +0800 Subject: [PATCH] util: Plug memory leak on virNetDevBridgeGet() sucessful path Detected by Coverity. Leak introduced in commit c1df2c1. Two bugs here: 1. memory leak on successful parse 2. failure to parse still returned success Signed-off-by: Alex Jia Signed-off-by: Eric Blake --- src/util/virnetdevbridge.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/util/virnetdevbridge.c b/src/util/virnetdevbridge.c index 060445db85..0440a738fc 100644 --- a/src/util/virnetdevbridge.c +++ b/src/util/virnetdevbridge.c @@ -161,13 +161,18 @@ static int virNetDevBridgeGet(const char *brname, if (virFileExists(path)) { char *valuestr; - if (virFileReadAll(path, INT_BUFSIZE_BOUND(unsigned long), &valuestr) < 0) + if (virFileReadAll(path, INT_BUFSIZE_BOUND(unsigned long), + &valuestr) < 0) goto cleanup; if (virStrToLong_ul(valuestr, NULL, 10, value) < 0) { virReportSystemError(EINVAL, - _("Unable to get bridge %s %s"), brname, paramname); + _("Unable to get bridge %s %s"), + brname, paramname); + VIR_FREE(valuestr); + goto cleanup; } + VIR_FREE(valuestr); } else { struct __bridge_info info; unsigned long args[] = { BRCTL_GET_BRIDGE_INFO, (unsigned long)&info, 0, 0 };