[EVENTLOG]
authorEric Kohl <eric.kohl@reactos.org>
Sun, 17 Nov 2013 22:30:55 +0000 (22:30 +0000)
committerEric Kohl <eric.kohl@reactos.org>
Sun, 17 Nov 2013 22:30:55 +0000 (22:30 +0000)
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

index a6ac99c..8acd365 100644 (file)
@@ -82,7 +82,7 @@ LogfInitializeNew(PLOGFILE LogFile)
 
 
 static NTSTATUS
 
 
 static NTSTATUS
-LogfInitializeExisting(PLOGFILE LogFile)
+LogfInitializeExisting(PLOGFILE LogFile, BOOL Backup)
 {
     DWORD dwRead;
     DWORD dwRecordsNumber = 0;
 {
     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;
 
        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;
     }
 
     return STATUS_SUCCESS;
@@ -380,7 +383,7 @@ LogfCreate(PLOGFILE *LogFile,
     if (bCreateNew)
         Status = LogfInitializeNew(pLogFile);
     else
     if (bCreateNew)
         Status = LogfInitializeNew(pLogFile);
     else
-        Status = LogfInitializeExisting(pLogFile);
+        Status = LogfInitializeExisting(pLogFile, Backup);
 
     if (!NT_SUCCESS(Status))
         goto fail;
 
     if (!NT_SUCCESS(Status))
         goto fail;