From: Amine Khaldi Date: Sun, 26 Apr 2015 19:17:51 +0000 (+0000) Subject: [USERENV] Check for invalid parameters in Get{Profiles,UserProfile}Directory{A,W... X-Git-Tag: backups/colins-printing-for-freedom@73041~170 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=3f777318ec6fc29ef769ace219c745c29a7c9b64 [USERENV] Check for invalid parameters in Get{Profiles,UserProfile}Directory{A,W}. Fixes userenv:userenv test crash. svn path=/trunk/; revision=67446 --- 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)) {