Take care of lpProfileInfo->lpProfilePath in LoadUserProfileW

Return required size in GetUserProfileDirectoryW if buffer is too small

svn path=/trunk/; revision=28314
This commit is contained in:
Hervé Poussineau 2007-08-13 14:18:49 +00:00
parent e78d113358
commit c13edbee03

View file

@ -766,7 +766,7 @@ GetUserProfileDirectoryW (HANDLE hToken,
dwLength = wcslen (szImagePath) + 1;
if (*lpcchSize < dwLength)
{
DPRINT1 ("Buffer too small\n");
*lpcchSize = dwLength;
SetLastError (ERROR_INSUFFICIENT_BUFFER);
return FALSE;
}
@ -859,10 +859,18 @@ LoadUserProfileW(
return TRUE;
}
if (!GetProfilesDirectoryW(szUserHivePath, &dwLength))
if (lpProfileInfo->lpProfilePath)
{
DPRINT1("GetProfilesDirectoryW() failed (error %ld)\n", GetLastError());
return FALSE;
wcscpy(szUserHivePath, lpProfileInfo->lpProfilePath);
}
else
{
/* FIXME: check if MS Windows allows lpProfileInfo->lpProfilePath to be NULL */
if (!GetProfilesDirectoryW(szUserHivePath, &dwLength))
{
DPRINT1("GetProfilesDirectoryW() failed (error %ld)\n", GetLastError());
return FALSE;
}
}
wcscat(szUserHivePath, L"\\");