From: Laine Stump Date: Fri, 12 Feb 2021 17:53:33 +0000 (-0500) Subject: esx: fix memory leak by switching to g_autofree X-Git-Tag: v7.1.0-rc1~83 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d79a6e2c8c012a910ce52c2202722dff601e2ff8;p=thirdparty%2Flibvirt.git esx: fix memory leak by switching to g_autofree volumeName was defined at the top of the function, then a new string was assigned to it each time through a loop, but after the first iteration of the loop, the previous string wasn't freed before allocating a new string the next time. By reducing the scope of volumeName to be just the loop, and making it g_autofree, we eliminate the leak. Signed-off-by: Laine Stump Reviewed-by: Michal Privoznik --- diff --git a/src/esx/esx_storage_backend_vmfs.c b/src/esx/esx_storage_backend_vmfs.c index 63959ec237..225b2a4751 100644 --- a/src/esx/esx_storage_backend_vmfs.c +++ b/src/esx/esx_storage_backend_vmfs.c @@ -728,7 +728,6 @@ esxStorageVolLookupByKey(virConnectPtr conn, const char *key) esxVI_HostDatastoreBrowserSearchResults *searchResultsList = NULL; esxVI_HostDatastoreBrowserSearchResults *searchResults = NULL; size_t length; - char *volumeName = NULL; esxVI_FileInfo *fileInfo = NULL; char key_candidate[VIR_UUID_STRING_BUFLEN] = ""; @@ -789,6 +788,7 @@ esxStorageVolLookupByKey(virConnectPtr conn, const char *key) /* Build datastore path and query the UUID */ for (fileInfo = searchResults->file; fileInfo; fileInfo = fileInfo->_next) { + g_autofree char *volumeName = NULL; g_autofree char *datastorePath = NULL; g_autofree char *uuid_string = NULL; @@ -831,8 +831,6 @@ esxStorageVolLookupByKey(virConnectPtr conn, const char *key) esxVI_String_Free(&propertyNameList); esxVI_ObjectContent_Free(&datastoreList); esxVI_HostDatastoreBrowserSearchResults_Free(&searchResultsList); - VIR_FREE(volumeName); - return volume; }