Author: tfaber
Date: Fri Oct 31 18:02:52 2014
New Revision: 65156
URL:
http://svn.reactos.org/svn/reactos?rev=65156&view=rev
Log:
[SHELL32]
- Fix a use after free in COpenWithMenu::Initialize. Powered by DPH.
Modified:
trunk/reactos/dll/win32/shell32/openwithmenu.cpp
Modified: trunk/reactos/dll/win32/shell32/openwithmenu.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/openwith…
==============================================================================
--- trunk/reactos/dll/win32/shell32/openwithmenu.cpp [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/openwithmenu.cpp [iso-8859-1] Fri Oct 31 18:02:52
2014
@@ -1334,6 +1334,14 @@
pidlFolder2 = (LPCITEMIDLIST) ((LPBYTE)pida + pida->aoffset[0]);
pidlChild = (LPCITEMIDLIST) ((LPBYTE)pida + pida->aoffset[1]);
+ if (!_ILIsValue(pidlChild))
+ {
+ TRACE("pidl is not a file\n");
+ GlobalUnlock(medium.hGlobal);
+ GlobalFree(medium.hGlobal);
+ return E_FAIL;
+ }
+
pidl = ILCombine(pidlFolder2, pidlChild);
GlobalUnlock(medium.hGlobal);
@@ -1343,12 +1351,6 @@
{
ERR("no mem\n");
return E_OUTOFMEMORY;
- }
- if (!_ILIsValue(pidlChild))
- {
- TRACE("pidl is not a file\n");
- SHFree((void*)pidl);
- return E_FAIL;
}
if (!SHGetPathFromIDListW(pidl, m_wszPath))