From 6a3bffaebaf2fb421b055f2537f813c27e7ff033 Mon Sep 17 00:00:00 2001 From: Mark Jansen Date: Mon, 27 Feb 2017 18:54:57 +0000 Subject: [PATCH] [APPCOMPAT] Fix a memory leak in a failure case (CID 1401161), a 0-length memset that is detected 3 times (CID 1401069, 1401064, 1401062) svn path=/trunk/; revision=73999 --- reactos/dll/appcompat/apphelp/hsdb.c | 4 +++- reactos/dll/appcompat/shims/shimlib/implement_shim.inl | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/reactos/dll/appcompat/apphelp/hsdb.c b/reactos/dll/appcompat/apphelp/hsdb.c index fe58f2e03a0..805ac5c5adc 100644 --- a/reactos/dll/appcompat/apphelp/hsdb.c +++ b/reactos/dll/appcompat/apphelp/hsdb.c @@ -65,7 +65,9 @@ HSDB WINAPI SdbInitDatabase(DWORD flags, LPCWSTR path) case SDB_DATABASE_MAIN_SHIM: name = shim; break; case SDB_DATABASE_MAIN_MSI: name = msi; break; case SDB_DATABASE_MAIN_DRIVERS: name = drivers; break; - default: return NULL; + default: + SdbReleaseDatabase(sdb); + return NULL; } SdbGetAppPatchDir(NULL, buffer, 128); memcpy(buffer + lstrlenW(buffer), name, SdbpStrlen(name)); diff --git a/reactos/dll/appcompat/shims/shimlib/implement_shim.inl b/reactos/dll/appcompat/shims/shimlib/implement_shim.inl index 186cdf87711..f784caa2758 100644 --- a/reactos/dll/appcompat/shims/shimlib/implement_shim.inl +++ b/reactos/dll/appcompat/shims/shimlib/implement_shim.inl @@ -39,7 +39,8 @@ PHOOKAPI WINAPI SHIM_OBJ_NAME(GetHookAPIs)(DWORD fdwReason, PCSTR pszCmdLine, PD SHIM_OBJ_NAME(g_szCommandLine) = ""; } SHIM_OBJ_NAME(g_pAPIHooks) = ShimLib_ShimMalloc(sizeof(HOOKAPI) * SHIM_NUM_HOOKS); - ZeroMemory(SHIM_OBJ_NAME(g_pAPIHooks), sizeof(HOOKAPI) * SHIM_NUM_HOOKS); + if (SHIM_NUM_HOOKS) + ZeroMemory(SHIM_OBJ_NAME(g_pAPIHooks), sizeof(HOOKAPI) * SHIM_NUM_HOOKS); *pdwHookCount = SHIM_NUM_HOOKS; #ifdef SHIM_NOTIFY_FN