From 113dd2e1e995718d94cc62acfd9928654fec14bd Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Wed, 30 Mar 2016 11:11:37 +0000 Subject: [PATCH] [SHELL32] - 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 | 6 ++++++ reactos/dll/win32/shell32/folders/CDrivesFolder.cpp | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/reactos/dll/win32/shell32/folders/CDesktopFolder.cpp b/reactos/dll/win32/shell32/folders/CDesktopFolder.cpp index b9127d4b83f..119ec62c31f 100644 --- a/reactos/dll/win32/shell32/folders/CDesktopFolder.cpp +++ b/reactos/dll/win32/shell32/folders/CDesktopFolder.cpp @@ -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); diff --git a/reactos/dll/win32/shell32/folders/CDrivesFolder.cpp b/reactos/dll/win32/shell32/folders/CDrivesFolder.cpp index a3b30a39c71..1d38d189c7d 100644 --- a/reactos/dll/win32/shell32/folders/CDrivesFolder.cpp +++ b/reactos/dll/win32/shell32/folders/CDrivesFolder.cpp @@ -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);