diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c index f40ef39cbcf..75521c2360c 100644 --- a/dlls/advapi32/service.c +++ b/dlls/advapi32/service.c @@ -1803,15 +1803,15 @@ QueryServiceConfigW( SC_HANDLE hService, if( ( r == ERROR_SUCCESS ) && ( type == REG_SZ ) ) total += sz; + *pcbBytesNeeded = total; + /* if there's not enough memory, return an error */ - if( total > *pcbBytesNeeded ) + if( total > cbBufSize ) { - *pcbBytesNeeded = total; SetLastError( ERROR_INSUFFICIENT_BUFFER ); return FALSE; } - *pcbBytesNeeded = total; ZeroMemory( lpServiceConfig, total ); sz = sizeof val;