[USERENV] Check for invalid parameters in Get{Profiles,UserProfile}Directory{A,W}. Fixes userenv:userenv test crash.

svn path=/trunk/; revision=67446
This commit is contained in:
Amine Khaldi 2015-04-26 19:17:51 +00:00
parent fb31661620
commit 3f777318ec

View file

@ -672,6 +672,12 @@ GetProfilesDirectoryA(LPSTR lpProfileDir,
LPWSTR lpBuffer; LPWSTR lpBuffer;
BOOL bResult; BOOL bResult;
if (!lpProfileDir || !lpcchSize)
{
SetLastError(ERROR_INVALID_PARAMETER);
return FALSE;
}
lpBuffer = GlobalAlloc(GMEM_FIXED, lpBuffer = GlobalAlloc(GMEM_FIXED,
*lpcchSize * sizeof(WCHAR)); *lpcchSize * sizeof(WCHAR));
if (lpBuffer == NULL) if (lpBuffer == NULL)
@ -708,6 +714,12 @@ GetProfilesDirectoryW(LPWSTR lpProfilesDir,
HKEY hKey; HKEY hKey;
LONG Error; LONG Error;
if (!lpcchSize)
{
SetLastError(ERROR_INVALID_PARAMETER);
return FALSE;
}
Error = RegOpenKeyExW(HKEY_LOCAL_MACHINE, Error = RegOpenKeyExW(HKEY_LOCAL_MACHINE,
L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList", L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList",
0, 0,
@ -775,6 +787,12 @@ GetUserProfileDirectoryA(HANDLE hToken,
LPWSTR lpBuffer; LPWSTR lpBuffer;
BOOL bResult; BOOL bResult;
if (!lpProfileDir || !lpcchSize)
{
SetLastError( ERROR_INVALID_PARAMETER );
return FALSE;
}
lpBuffer = GlobalAlloc(GMEM_FIXED, lpBuffer = GlobalAlloc(GMEM_FIXED,
*lpcchSize * sizeof(WCHAR)); *lpcchSize * sizeof(WCHAR));
if (lpBuffer == NULL) if (lpBuffer == NULL)
@ -815,6 +833,12 @@ GetUserProfileDirectoryW(HANDLE hToken,
HKEY hKey; HKEY hKey;
LONG Error; LONG Error;
if (!lpcchSize)
{
SetLastError( ERROR_INVALID_PARAMETER );
return FALSE;
}
if (!GetUserSidStringFromToken(hToken, if (!GetUserSidStringFromToken(hToken,
&SidString)) &SidString))
{ {