Nikolay Sivov : setupapi: Fix use after free in trace message (Coverity).

Alexandre Julliard julliard at winehq.org
Mon Apr 12 16:11:26 CDT 2021


Module: wine
Branch: master
Commit: babdaffff7b25a1db9059598bd3c85da46469d17
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=babdaffff7b25a1db9059598bd3c85da46469d17

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Apr 12 17:28:14 2021 +0300

setupapi: Fix use after free in trace message (Coverity).

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/setupapi/devinst.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/dlls/setupapi/devinst.c b/dlls/setupapi/devinst.c
index 7ff3cb01eb6..0758fef5603 100644
--- a/dlls/setupapi/devinst.c
+++ b/dlls/setupapi/devinst.c
@@ -1773,7 +1773,7 @@ BOOL WINAPI SetupDiRemoveDevice(HDEVINFO devinfo, SP_DEVINFO_DATA *device_data)
 {
     SC_HANDLE manager = NULL, service = NULL;
     struct device *device;
-    WCHAR *service_name;
+    WCHAR *service_name = NULL;
     DWORD size;
 
     TRACE("devinfo %p, device_data %p.\n", devinfo, device_data);
@@ -1789,7 +1789,6 @@ BOOL WINAPI SetupDiRemoveDevice(HDEVINFO devinfo, SP_DEVINFO_DATA *device_data)
         service_name = malloc(size);
         if (!RegGetValueW(device->key, NULL, L"Service", RRF_RT_REG_SZ, NULL, service_name, &size))
             service = OpenServiceW(manager, service_name, SERVICE_USER_DEFINED_CONTROL);
-        free(service_name);
     }
 
     remove_device(device);
@@ -1803,6 +1802,8 @@ BOOL WINAPI SetupDiRemoveDevice(HDEVINFO devinfo, SP_DEVINFO_DATA *device_data)
     }
     CloseServiceHandle(manager);
 
+    free(service_name);
+
     remove_all_device_ifaces(device);
 
     return TRUE;




More information about the wine-cvs mailing list