diff options
author | Kostiantyn Kostiuk <konstantin@daynix.com> | 2021-08-03 10:26:14 +0000 |
---|---|---|
committer | Kostiantyn Kostiuk <konstantin@daynix.com> | 2022-01-10 13:04:34 +0000 |
commit | c49ca88b5586cf17d8f9597aaab46e181a7fc797 (patch) | |
tree | cf3cd99a932c51eaebdec228af5705731d4cbcc8 /qga/commands-win32.c | |
parent | e78ca586d66e0d2001a6caef90bf7361f3ef3ad1 (diff) | |
download | qemu-c49ca88b5586cf17d8f9597aaab46e181a7fc797.zip qemu-c49ca88b5586cf17d8f9597aaab46e181a7fc797.tar.gz qemu-c49ca88b5586cf17d8f9597aaab46e181a7fc797.tar.bz2 |
gqa-win: get_pci_info: Free parent_dev_info properly
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>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Kostiantyn Kostiuk <kkostiuk@redhat.com>
Diffstat (limited to 'qga/commands-win32.c')
-rw-r--r-- | qga/commands-win32.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/qga/commands-win32.c b/qga/commands-win32.c index 93c5375..f6de9e2 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) PSP_DEVICE_INTERFACE_DETAIL_DATA pdev_iface_detail_data = NULL; STORAGE_DEVICE_NUMBER sdn; char *parent_dev_id = NULL; - HDEVINFO parent_dev_info; SP_DEVINFO_DATA parent_dev_info_data; DWORD j; DWORD size = 0; @@ -744,11 +745,13 @@ static GuestPCIAddress *get_pci_info(int number, Error **errp) break; } } - SetupDiDestroyDeviceInfoList(parent_dev_info); break; } end: + if (parent_dev_info != INVALID_HANDLE_VALUE) { + SetupDiDestroyDeviceInfoList(parent_dev_info); + } if (dev_info != INVALID_HANDLE_VALUE) { SetupDiDestroyDeviceInfoList(dev_info); } |