]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
esx: fix memory leak by switching to g_autofree
authorLaine Stump <laine@redhat.com>
Fri, 12 Feb 2021 17:53:33 +0000 (12:53 -0500)
committerLaine Stump <laine@redhat.com>
Tue, 16 Feb 2021 18:50:04 +0000 (13:50 -0500)
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 <laine@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/esx/esx_storage_backend_vmfs.c

index 63959ec237f6a13aad06bb3ffb431850b1f02d10..225b2a47519364a9ca142e06c870201370548201 100644 (file)
@@ -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;
 }