[SHELL32]
authorThomas Faber <thomas.faber@reactos.org>
Wed, 30 Mar 2016 11:11:37 +0000 (11:11 +0000)
committerThomas Faber <thomas.faber@reactos.org>
Wed, 30 Mar 2016 11:11:37 +0000 (11:11 +0000)
- Correctly handle NULL pidls in CDesktopFolder::CompareIDs and CDrivesFolder::CompareIDs. Based on a patch by Sylvain Deverre.
CORE-10745 #resolve
CORE-10747

svn path=/trunk/; revision=71080

reactos/dll/win32/shell32/folders/CDesktopFolder.cpp
reactos/dll/win32/shell32/folders/CDrivesFolder.cpp

index b9127d4..119ec62 100644 (file)
@@ -463,6 +463,12 @@ HRESULT WINAPI CDesktopFolder::BindToStorage(
  */
 HRESULT WINAPI CDesktopFolder::CompareIDs(LPARAM lParam, PCUIDLIST_RELATIVE pidl1, PCUIDLIST_RELATIVE pidl2)
 {
+    if (!pidl1 || !pidl2)
+    {
+        ERR("Got null pidl pointer (%Ix %p %p)!\n", lParam, pidl1, pidl2);
+        return E_INVALIDARG;
+    }
+
     if (_ILIsSpecialFolder(pidl1) || _ILIsSpecialFolder(pidl2))
         return SHELL32_CompareGuidItems(this, lParam, pidl1, pidl2);
 
index a3b30a3..1d38d18 100644 (file)
@@ -298,6 +298,12 @@ HRESULT WINAPI CDrivesFolder::BindToStorage(PCUIDLIST_RELATIVE pidl, LPBC pbcRes
 
 HRESULT WINAPI CDrivesFolder::CompareIDs(LPARAM lParam, PCUIDLIST_RELATIVE pidl1, PCUIDLIST_RELATIVE pidl2)
 {
+    if (!pidl1 || !pidl2)
+    {
+        ERR("Got null pidl pointer (%Ix %p %p)!\n", lParam, pidl1, pidl2);
+        return E_INVALIDARG;
+    }
+
     if (_ILIsSpecialFolder(pidl1) || _ILIsSpecialFolder(pidl2))
         return SHELL32_CompareGuidItems(this, lParam, pidl1, pidl2);