diff --git a/reactos/dll/win32/userenv/profile.c b/reactos/dll/win32/userenv/profile.c index 094be567628..68d37166de3 100644 --- a/reactos/dll/win32/userenv/profile.c +++ b/reactos/dll/win32/userenv/profile.c @@ -672,6 +672,12 @@ GetProfilesDirectoryA(LPSTR lpProfileDir, LPWSTR lpBuffer; BOOL bResult; + if (!lpProfileDir || !lpcchSize) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + lpBuffer = GlobalAlloc(GMEM_FIXED, *lpcchSize * sizeof(WCHAR)); if (lpBuffer == NULL) @@ -708,6 +714,12 @@ GetProfilesDirectoryW(LPWSTR lpProfilesDir, HKEY hKey; LONG Error; + if (!lpcchSize) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + Error = RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList", 0, @@ -775,6 +787,12 @@ GetUserProfileDirectoryA(HANDLE hToken, LPWSTR lpBuffer; BOOL bResult; + if (!lpProfileDir || !lpcchSize) + { + SetLastError( ERROR_INVALID_PARAMETER ); + return FALSE; + } + lpBuffer = GlobalAlloc(GMEM_FIXED, *lpcchSize * sizeof(WCHAR)); if (lpBuffer == NULL) @@ -815,6 +833,12 @@ GetUserProfileDirectoryW(HANDLE hToken, HKEY hKey; LONG Error; + if (!lpcchSize) + { + SetLastError( ERROR_INVALID_PARAMETER ); + return FALSE; + } + if (!GetUserSidStringFromToken(hToken, &SidString)) {