[SHELL32] In _SHGetUserShellFolderPath(), check the return value of _SHExpandEnvironmentStrings()

and bail out if it failed. That way we won't use and cache in the registry an invalid-expanded string.

CORE-14981
This commit is contained in:
Hermès Bélusca-Maïto 2018-09-22 23:37:43 +02:00
parent 41a5b11fcd
commit e29609147b
No known key found for this signature in database
GPG key ID: 3B2539C65E7B93D0

View file

@ -1480,7 +1480,9 @@ static HRESULT _SHGetUserShellFolderPath(HKEY rootKey, HANDLE hToken, LPCWSTR us
#ifndef __REACTOS__
_SHExpandEnvironmentStrings(path, szTemp);
#else
_SHExpandEnvironmentStrings(hToken, path, szTemp, _countof(szTemp));
hr = _SHExpandEnvironmentStrings(hToken, path, szTemp, _countof(szTemp));
if (FAILED(hr))
goto end;
#endif
lstrcpynW(path, szTemp, MAX_PATH);
}
@ -1493,6 +1495,9 @@ static HRESULT _SHGetUserShellFolderPath(HKEY rootKey, HANDLE hToken, LPCWSTR us
}
else
hr = E_FAIL;
#ifdef __REACTOS__
end:
#endif
RegCloseKey(shellFolderKey);
RegCloseKey(userShellFolderKey);
TRACE("returning 0x%08x\n", hr);