Author: mjansen
Date: Wed Jul 13 18:02:16 2016
New Revision: 71931
URL:
http://svn.reactos.org/svn/reactos?rev=71931&view=rev
Log:
[APPHELP] Dereference after null check (default_dir). CID 1363509
Modified:
trunk/reactos/dll/appcompat/apphelp/sdbapi.c
Modified: trunk/reactos/dll/appcompat/apphelp/sdbapi.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/appcompat/apphelp/sdba…
==============================================================================
--- trunk/reactos/dll/appcompat/apphelp/sdbapi.c [iso-8859-1] (original)
+++ trunk/reactos/dll/appcompat/apphelp/sdbapi.c [iso-8859-1] Wed Jul 13 18:02:16 2016
@@ -472,30 +472,35 @@
static WCHAR* default_dir = NULL;
static CONST WCHAR szAppPatch[] =
{'\\','A','p','p','P','a','t','c','h',0};
- if(!default_dir)
+ /* In case function fails, path holds empty string */
+ if (size > 0)
+ *path = 0;
+
+ if (!default_dir)
{
WCHAR* tmp = NULL;
UINT len = GetSystemWindowsDirectoryW(NULL, 0) + lstrlenW(szAppPatch);
tmp = SdbAlloc((len + 1)* sizeof(WCHAR));
- if(tmp)
+ if (tmp)
{
UINT r = GetSystemWindowsDirectoryW(tmp, len+1);
if (r && r < len)
{
if (SUCCEEDED(StringCchCatW(tmp, len+1, szAppPatch)))
{
- if(InterlockedCompareExchangePointer((void**)&default_dir, tmp,
NULL) == NULL)
+ if (InterlockedCompareExchangePointer((void**)&default_dir, tmp,
NULL) == NULL)
tmp = NULL;
}
}
if (tmp)
SdbFree(tmp);
}
- }
-
- /* In case function fails, path holds empty string */
- if (size > 0)
- *path = 0;
+ if (!default_dir)
+ {
+ SHIM_ERR("Unable to obtain default AppPatch directory\n");
+ return FALSE;
+ }
+ }
if (!db)
{