QUERY_SERVICE_CONFIG *qsc = query_service_config(service_name, service_handle);\r
if (! qsc) return 3;\r
\r
- if (! qsc->lpDependencies) return 0;\r
- if (! qsc->lpDependencies[0]) return 0;\r
+ if (! qsc->lpDependencies || ! qsc->lpDependencies[0]) {\r
+ HeapFree(GetProcessHeap(), 0, qsc);\r
+ return 0;\r
+ }\r
\r
/* lpDependencies is doubly NULL terminated. */\r
while (qsc->lpDependencies[*bufsize]) {\r
if (! *buffer) {\r
*bufsize = 0;\r
print_message(stderr, NSSM_MESSAGE_OUT_OF_MEMORY, _T("lpDependencies"), _T("get_service_dependencies()"));\r
+ HeapFree(GetProcessHeap(), 0, qsc);\r
return 4;\r
}\r
\r
\r
HeapFree(GetProcessHeap(), 0, qsc);\r
\r
+ if (! *buffer[0]) {\r
+ HeapFree(GetProcessHeap(), 0, *buffer);\r
+ *buffer = 0;\r
+ *bufsize = 0;\r
+ }\r
+\r
return 0;\r
}\r
\r