diff mbox series

[RFC,4/4] gqa-win: get_pci_info: Free parent_dev_info properly

Message ID 20210809094839.52312-4-konstantin@daynix.com (mailing list archive)
State New, archived
Headers show
Series [RFC,1/4] gqa-win: get_pci_info: Clean dev_info if handle is valid | expand

Commit Message

Konstantin Kostiuk Aug. 9, 2021, 9:48 a.m. UTC
In case when the function fails to get parent device data,
the parent_dev_info variable will be initialized, but not freed.

Signed-off-by: Kostiantyn Kostiuk <konstantin@daynix.com>
---
 qga/commands-win32.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/qga/commands-win32.c b/qga/commands-win32.c
index a8a601776d..520c520cb8 100644
--- a/qga/commands-win32.c
+++ b/qga/commands-win32.c
@@ -515,6 +515,8 @@  DEFINE_GUID(GUID_DEVINTERFACE_STORAGEPORT,
 static GuestPCIAddress *get_pci_info(int number, Error **errp)
 {
     HDEVINFO dev_info = INVALID_HANDLE_VALUE;
+    HDEVINFO parent_dev_info = INVALID_HANDLE_VALUE;
+
     SP_DEVINFO_DATA dev_info_data;
     SP_DEVICE_INTERFACE_DATA dev_iface_data;
     HANDLE dev_file;
@@ -542,7 +544,6 @@  static GuestPCIAddress *get_pci_info(int number, Error **errp)
         g_autofree PSP_DEVICE_INTERFACE_DETAIL_DATA pdev_iface_detail_data = NULL;
         STORAGE_DEVICE_NUMBER sdn;
         g_autofree char *parent_dev_id = NULL;
-        HDEVINFO parent_dev_info;
         SP_DEVINFO_DATA parent_dev_info_data;
         DWORD j;
         DWORD size = 0;
@@ -745,6 +746,7 @@  static GuestPCIAddress *get_pci_info(int number, Error **errp)
             }
         }
         SetupDiDestroyDeviceInfoList(parent_dev_info);
+        parent_dev_info = INVALID_HANDLE_VALUE;
         break;
     }
 
@@ -752,6 +754,9 @@  cleanup:
     if (dev_info != INVALID_HANDLE_VALUE) {
         SetupDiDestroyDeviceInfoList(dev_info);
     }
+    if (parent_dev_info != INVALID_HANDLE_VALUE) {
+        SetupDiDestroyDeviceInfoList(parent_dev_info);
+    }
     return pci;
 }