aboutsummaryrefslogtreecommitdiff
path: root/qga/commands-win32.c
diff options
context:
space:
mode:
authorKostiantyn Kostiuk <konstantin@daynix.com>2021-08-03 10:26:14 +0000
committerKostiantyn Kostiuk <konstantin@daynix.com>2022-01-10 13:04:34 +0000
commitc49ca88b5586cf17d8f9597aaab46e181a7fc797 (patch)
treecf3cd99a932c51eaebdec228af5705731d4cbcc8 /qga/commands-win32.c
parente78ca586d66e0d2001a6caef90bf7361f3ef3ad1 (diff)
downloadqemu-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.c7
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);
}