Author: hpoussin Date: Mon Aug 13 18:18:49 2007 New Revision: 28314
URL: http://svn.reactos.org/svn/reactos?rev=28314&view=rev Log: Take care of lpProfileInfo->lpProfilePath in LoadUserProfileW Return required size in GetUserProfileDirectoryW if buffer is too small
Modified: trunk/reactos/dll/win32/userenv/profile.c
Modified: trunk/reactos/dll/win32/userenv/profile.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/userenv/profile.c... ============================================================================== --- trunk/reactos/dll/win32/userenv/profile.c (original) +++ trunk/reactos/dll/win32/userenv/profile.c Mon Aug 13 18:18:49 2007 @@ -766,7 +766,7 @@ dwLength = wcslen (szImagePath) + 1; if (*lpcchSize < dwLength) { - DPRINT1 ("Buffer too small\n"); + *lpcchSize = dwLength; SetLastError (ERROR_INSUFFICIENT_BUFFER); return FALSE; } @@ -859,10 +859,18 @@ return TRUE; }
- if (!GetProfilesDirectoryW(szUserHivePath, &dwLength)) - { - DPRINT1("GetProfilesDirectoryW() failed (error %ld)\n", GetLastError()); - return FALSE; + if (lpProfileInfo->lpProfilePath) + { + 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"\");