From ad8c33fa0084c50a6fa56cc1499036ffb9bd26f5 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Sun, 6 Apr 2014 12:35:54 +0000 Subject: [PATCH] [EVENTLOG] - Fix memory leak - Fix null pointer dereference CID #515253 CID #716316 svn path=/trunk/; revision=62647 --- reactos/base/services/eventlog/file.c | 1 + reactos/base/services/eventlog/rpc.c | 16 +++++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/reactos/base/services/eventlog/file.c b/reactos/base/services/eventlog/file.c index 75ba6946374..31793a055b4 100644 --- a/reactos/base/services/eventlog/file.c +++ b/reactos/base/services/eventlog/file.c @@ -979,6 +979,7 @@ BOOL LogfWriteData(PLOGFILE LogFile, DWORD BufSize, PBYTE Buffer) if (RecBuf->Reserved != LOGFILE_SIGNATURE) { DPRINT1("LogFile corrupt!\n"); + HeapFree(GetProcessHeap(), 0, RecBuf); RtlReleaseResource(&LogFile->Lock); return FALSE; } diff --git a/reactos/base/services/eventlog/rpc.c b/reactos/base/services/eventlog/rpc.c index faac4609161..b33a119c5e5 100644 --- a/reactos/base/services/eventlog/rpc.c +++ b/reactos/base/services/eventlog/rpc.c @@ -921,20 +921,22 @@ NTSTATUS ElfrReportEventA( } Done: - for (i = 0; i < NumStrings; i++) + if (StringsArrayW != NULL) { - if (StringsArrayW[i] != NULL) + for (i = 0; i < NumStrings; i++) { - if (StringsArrayW[i]->Buffer) + if (StringsArrayW[i] != NULL) { - RtlFreeUnicodeString(StringsArrayW[i]); - HeapFree(MyHeap, 0, StringsArrayW[i]); + if (StringsArrayW[i]->Buffer) + { + RtlFreeUnicodeString(StringsArrayW[i]); + HeapFree(MyHeap, 0, StringsArrayW[i]); + } } } - } - if (StringsArrayW != NULL) HeapFree(MyHeap, 0, StringsArrayW); + } RtlFreeUnicodeString(&ComputerNameW);