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