Nikolay Sivov : shell32/shellview: Handle NULL folder pointer in SHCreateShellFolderViewEx().
Alexandre Julliard
julliard at winehq.org
Mon May 1 16:38:04 CDT 2017
Module: wine
Branch: master
Commit: a528ddd745f2c2029d60e8fe655fe7bb566776f0
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a528ddd745f2c2029d60e8fe655fe7bb566776f0
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Sun Apr 30 22:01:56 2017 +0300
shell32/shellview: Handle NULL folder pointer in SHCreateShellFolderViewEx().
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
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 2c8b6bd..f815011 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 f5adae5..8603ddb 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;
More information about the wine-cvs
mailing list