From 7a6fccdcf6267b53bb86717af98085eef7ff6e16 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sun, 17 Nov 2013 22:30:55 +0000 Subject: [PATCH] [EVENTLOG] LogfInitializeExisting: Do not try to write to a file that has been opened as a backup file. It has been opened read-only. svn path=/trunk/; revision=61026 --- reactos/base/services/eventlog/file.c | 43 ++++++++++++++------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/reactos/base/services/eventlog/file.c b/reactos/base/services/eventlog/file.c index a6ac99cbe0b..8acd365c06b 100644 --- a/reactos/base/services/eventlog/file.c +++ b/reactos/base/services/eventlog/file.c @@ -82,7 +82,7 @@ LogfInitializeNew(PLOGFILE LogFile) static NTSTATUS -LogfInitializeExisting(PLOGFILE LogFile) +LogfInitializeExisting(PLOGFILE LogFile, BOOL Backup) { DWORD dwRead; DWORD dwRecordsNumber = 0; @@ -264,27 +264,30 @@ LogfInitializeExisting(PLOGFILE LogFile) But for now limit EventLog size to just under 5K. */ LogFile->Header.MaxSize = 5000; - if (SetFilePointer(LogFile->hFile, 0, NULL, FILE_BEGIN) == - INVALID_SET_FILE_POINTER) + if (!Backup) { - DPRINT1("SetFilePointer() failed! %d\n", GetLastError()); - return STATUS_EVENTLOG_FILE_CORRUPT; - } + if (SetFilePointer(LogFile->hFile, 0, NULL, FILE_BEGIN) == + INVALID_SET_FILE_POINTER) + { + DPRINT1("SetFilePointer() failed! %d\n", GetLastError()); + return STATUS_EVENTLOG_FILE_CORRUPT; + } - if (!WriteFile(LogFile->hFile, - &LogFile->Header, - sizeof(EVENTLOGHEADER), - &dwRead, - NULL)) - { - DPRINT1("WriteFile failed! %d\n", GetLastError()); - return STATUS_EVENTLOG_FILE_CORRUPT; - } + if (!WriteFile(LogFile->hFile, + &LogFile->Header, + sizeof(EVENTLOGHEADER), + &dwRead, + NULL)) + { + DPRINT1("WriteFile failed! %d\n", GetLastError()); + return STATUS_EVENTLOG_FILE_CORRUPT; + } - if (!FlushFileBuffers(LogFile->hFile)) - { - DPRINT1("FlushFileBuffers failed! %d\n", GetLastError()); - return STATUS_EVENTLOG_FILE_CORRUPT; + if (!FlushFileBuffers(LogFile->hFile)) + { + DPRINT1("FlushFileBuffers failed! %d\n", GetLastError()); + return STATUS_EVENTLOG_FILE_CORRUPT; + } } return STATUS_SUCCESS; @@ -380,7 +383,7 @@ LogfCreate(PLOGFILE *LogFile, if (bCreateNew) Status = LogfInitializeNew(pLogFile); else - Status = LogfInitializeExisting(pLogFile); + Status = LogfInitializeExisting(pLogFile, Backup); if (!NT_SUCCESS(Status)) goto fail; -- 2.17.1