[PATCH 4/5] shell32/shellview: Handle NULL folder pointer in SHCreateShellFolderViewEx()
Nikolay Sivov
nsivov at codeweavers.com
Sun Apr 30 14:01:56 CDT 2017
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/shell32/shlview.c | 3 +++
dlls/shell32/tests/shlview.c | 10 ++++++++++
2 files changed, 13 insertions(+)
diff --git a/dlls/shell32/shlview.c b/dlls/shell32/shlview.c
index 2c8b6bd8d5..f815011a96 100644
--- a/dlls/shell32/shlview.c
+++ b/dlls/shell32/shlview.c
@@ -3806,6 +3806,9 @@ HRESULT WINAPI SHCreateShellFolderViewEx(CSFV *desc, IShellView **shellview)
TRACE("sf=%p pidl=%p cb=%p mode=0x%08x parm=%p\n", desc->pshf, desc->pidl, desc->pfnCallback,
desc->fvm, desc->psvOuter);
+ if (!desc->pshf)
+ return E_UNEXPECTED;
+
*shellview = IShellView_Constructor(desc->pshf);
if (!*shellview)
return E_OUTOFMEMORY;
diff --git a/dlls/shell32/tests/shlview.c b/dlls/shell32/tests/shlview.c
index f5adae57de..8603ddbfc4 100644
--- a/dlls/shell32/tests/shlview.c
+++ b/dlls/shell32/tests/shlview.c
@@ -1433,6 +1433,16 @@ static void test_SHCreateShellFolderViewEx(void)
ok(refCount == 0, "refCount = %u\n", refCount);
}
+if (0)
+{
+ /* Crashes on null shellfolder, on XP/2k3 */
+ memset(&csfv, 0, sizeof(csfv));
+ csfv.pshf = NULL;
+ psv = (void *)0xdeadbeef;
+ hr = SHCreateShellFolderViewEx(&csfv, &psv);
+ ok(hr == E_UNEXPECTED, "Got 0x%08x\n", hr);
+ ok(psv == NULL, "psv = %p\n", psv);
+}
memset(&csfv, 0, sizeof(csfv));
csfv.cbSize = sizeof(csfv);
csfv.pshf = desktop;
--
2.11.0
More information about the wine-patches
mailing list