From 3f777318ec6fc29ef769ace219c745c29a7c9b64 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 26 Apr 2015 19:17:51 +0000 Subject: [PATCH] [USERENV] Check for invalid parameters in Get{Profiles,UserProfile}Directory{A,W}. Fixes userenv:userenv test crash. svn path=/trunk/; revision=67446 --- reactos/dll/win32/userenv/profile.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) 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)) { -- 2.17.1