From e29609147b6da48f4a0166b39be8664a996b06b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sat, 22 Sep 2018 23:37:43 +0200 Subject: [PATCH] [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 --- dll/win32/shell32/wine/shellpath.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/dll/win32/shell32/wine/shellpath.c b/dll/win32/shell32/wine/shellpath.c index 6396641a15c..96e47b288a7 100644 --- a/dll/win32/shell32/wine/shellpath.c +++ b/dll/win32/shell32/wine/shellpath.c @@ -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);