[MSCONFIG]
authorKamil Hornicek <kamil.hornicek@reactos.org>
Sun, 6 Apr 2014 21:13:18 +0000 (21:13 +0000)
committerKamil Hornicek <kamil.hornicek@reactos.org>
Sun, 6 Apr 2014 21:13:18 +0000 (21:13 +0000)
- fix possible leaks
CID #716286
CID #716287

svn path=/trunk/; revision=62677

reactos/base/applications/msconfig/srvpage.c
reactos/base/applications/msconfig/startuppage.c

index 88b1d74..4cfd62e 100644 (file)
@@ -109,17 +109,22 @@ GetServices ( void )
                 /* reserve memory for service info array */
                 pServiceStatus = HeapAlloc(GetProcessHeap(), 0, BytesNeeded);
                 if (!pServiceStatus)
+                {
+                    CloseServiceHandle(ScHandle);
                     return;
+                }
 
                 /* fill array with service info */
                 if (EnumServicesStatusEx(ScHandle, SC_ENUM_PROCESS_INFO, SERVICE_WIN32, SERVICE_STATE_ALL, (LPBYTE)pServiceStatus, BytesNeeded, &BytesNeeded, &NumServices, &ResumeHandle, 0) == 0)
                 {
                     HeapFree(GetProcessHeap(), 0, pServiceStatus);
+                    CloseServiceHandle(ScHandle);
                     return;
                 }
             }
             else /* exit on failure */
             {
+                CloseServiceHandle(ScHandle);
                 return;
             }
         }
@@ -127,7 +132,11 @@ GetServices ( void )
         if (NumServices)
         {
             if (!pServiceStatus)
+            {
+                CloseServiceHandle(ScHandle);
                 return;
+            }
+
             for (Index = 0; Index < NumServices; Index++)
             {
                 memset(&item, 0, sizeof(LV_ITEM));
index e14cb9d..4d65a0f 100644 (file)
@@ -137,7 +137,7 @@ GetDisabledAutostartEntriesFromRegistry (TCHAR * szBasePath)
                 HeapFree(GetProcessHeap(), 0, Data);
             }
         }
-    RegCloseKey(hKey);
+        RegCloseKey(hKey);
     }
 }
 
@@ -199,8 +199,8 @@ GetAutostartEntriesFromRegistry ( HKEY hRootKey, TCHAR* KeyName )
                     item.pszText = Path;
                     item.iSubItem = 2;
                     SendMessage(hStartupListCtrl, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item);
-                    HeapFree(GetProcessHeap(), 0, Data);
                 }
+                HeapFree(GetProcessHeap(), 0, Data);
             }
         }
         RegCloseKey(hKey);