diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c index 75521c2360c..a0162aafd27 100644 --- a/dlls/advapi32/service.c +++ b/dlls/advapi32/service.c @@ -1792,6 +1792,8 @@ QueryServiceConfigW( SC_HANDLE hService, r = RegQueryValueExW( hKey, szDependencies, 0, &type, NULL, &sz ); if( ( r == ERROR_SUCCESS ) && ( type == REG_MULTI_SZ ) ) total += sz; + else + total += sizeof(WCHAR); sz = 0; r = RegQueryValueExW( hKey, szStart, 0, &type, NULL, &sz ); @@ -1862,12 +1864,18 @@ QueryServiceConfigW( SC_HANDLE hService, sz = n; r = RegQueryValueExW( hKey, szDependencies, 0, &type, p, &sz ); + lpServiceConfig->lpDependencies = (LPWSTR) p; if( ( r == ERROR_SUCCESS ) || ( type == REG_SZ ) ) { - lpServiceConfig->lpDependencies = (LPWSTR) p; p += sz; n -= sz; } + else + { + *(WCHAR *) p = 0; + p += sizeof(WCHAR); + n -= sizeof(WCHAR); + } if( n < 0 ) ERR("Buffer overflow!\n");