On Mon, Dec 13, 2021 at 3:16 PM Kostiantyn Kostiuk <konstan...@daynix.com> wrote: > > 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 <kkost...@redhat.com> > Signed-off-by: Kostiantyn Kostiuk <konstan...@daynix.com>
Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com> > --- > qga/commands-win32.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/qga/commands-win32.c b/qga/commands-win32.c > index 12f7a88078..cef14a8762 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; > } > > cleanup: > + if (parent_dev_info != INVALID_HANDLE_VALUE) { > + SetupDiDestroyDeviceInfoList(parent_dev_info); > + } > if (dev_info != INVALID_HANDLE_VALUE) { > SetupDiDestroyDeviceInfoList(dev_info); > } > -- > 2.25.1 >