diff --git a/reactos/base/services/eventlog/file.c b/reactos/base/services/eventlog/file.c index 6c3e1d6b65a..16529d07772 100644 --- a/reactos/base/services/eventlog/file.c +++ b/reactos/base/services/eventlog/file.c @@ -30,11 +30,15 @@ BOOL LogfInitializeNew(PLOGFILE LogFile) LogFile->Header.NextRecord = 1; LogFile->Header.Signature = LOGFILE_SIGNATURE; - WriteFile(LogFile->hFile, + if(!WriteFile(LogFile->hFile, &LogFile->Header, sizeof(FILE_HEADER), &dwWritten, - NULL); + NULL)) + { + DPRINT1("WriteFile failed:%d!\n", GetLastError()); + return FALSE; + } EofRec.Ones = 0x11111111; EofRec.Twos = 0x22222222; @@ -47,9 +51,21 @@ BOOL LogfInitializeNew(PLOGFILE LogFile) EofRec.StartOffset = LogFile->Header.FirstRecordOffset; EofRec.EndOffset = LogFile->Header.EofOffset; - WriteFile(LogFile->hFile, &EofRec, sizeof(EOF_RECORD), &dwWritten, NULL); - - FlushFileBuffers(LogFile->hFile); + if(!WriteFile(LogFile->hFile, + &EofRec, + sizeof(EOF_RECORD), + &dwWritten, + NULL)) + { + DPRINT1("WriteFile failed:%d!\n", GetLastError()); + return FALSE; + } + + if(!FlushFileBuffers(LogFile->hFile)) + { + DPRINT1("FlushFileBuffers failed:%d!\n", GetLastError()); + return FALSE; + } return TRUE; } @@ -62,11 +78,21 @@ BOOL LogfInitializeExisting(PLOGFILE LogFile) PDWORD pdwRecSize2; PEVENTLOGRECORD RecBuf; - SetFilePointer(LogFile->hFile, 0, NULL, FILE_BEGIN); - ReadFile(LogFile->hFile, + if(SetFilePointer(LogFile->hFile, 0, NULL, FILE_BEGIN) == + INVALID_SET_FILE_POINTER) + { + DPRINT1("SetFilePointer failed! %d\n", GetLastError()); + return FALSE; + } + + if(!ReadFile(LogFile->hFile, &LogFile->Header, sizeof(FILE_HEADER), - &dwRead, NULL); + &dwRead, NULL)) + { + DPRINT1("ReadFile failed! %d\n", GetLastError()); + return FALSE; + } if(dwRead != sizeof(FILE_HEADER)) { @@ -103,21 +129,35 @@ BOOL LogfInitializeExisting(PLOGFILE LogFile) 0, NULL, FILE_CURRENT); + + if(dwFilePointer == INVALID_SET_FILE_POINTER) + { + DPRINT1("SetFilePointer failed! %d\n", GetLastError()); + return FALSE; + } - ReadFile(LogFile->hFile, + if(!ReadFile(LogFile->hFile, &dwRecSize, sizeof(dwRecSize), &dwRead, - NULL); + NULL)) + { + DPRINT1("ReadFile failed! %d\n", GetLastError()); + return FALSE; + } if(dwRead != sizeof(dwRecSize)) break; - ReadFile(LogFile->hFile, + if(!ReadFile(LogFile->hFile, &dwRecSign, sizeof(dwRecSign), &dwRead, - NULL); + NULL)) + { + DPRINT1("ReadFile() failed! %d\n", GetLastError()); + return FALSE; + } if(dwRead != sizeof(dwRecSize)) break; @@ -129,13 +169,33 @@ BOOL LogfInitializeExisting(PLOGFILE LogFile) break; } - SetFilePointer(LogFile->hFile, -((LONG)sizeof(DWORD)*2), NULL, FILE_CURRENT); + if(SetFilePointer(LogFile->hFile, + -((LONG)sizeof(DWORD)*2), + NULL, + FILE_CURRENT) == INVALID_SET_FILE_POINTER) + { + DPRINT1("SetFilePointer() failed! %d", GetLastError()); + return FALSE; + } + RecBuf = (PEVENTLOGRECORD) HeapAlloc(MyHeap, 0, dwRecSize); - ReadFile(LogFile->hFile, + + if(!RecBuf) + { + DPRINT1("Can't allocate heap!\n"); + return FALSE; + } + + if(!ReadFile(LogFile->hFile, RecBuf, dwRecSize, &dwRead, - NULL); + NULL)) + { + DPRINT1("ReadFile() failed! %d\n", GetLastError()); + HeapFree(MyHeap, 0, RecBuf); + return FALSE; + } if(dwRead != dwRecSize) { @@ -146,7 +206,7 @@ BOOL LogfInitializeExisting(PLOGFILE LogFile) pdwRecSize2 = (PDWORD)(((PBYTE)RecBuf)+dwRecSize-4); if(*pdwRecSize2 != dwRecSize) { - DPRINT("EventLog: Invalid size2 of record %d (%x) in %s\n", + DPRINT1("Invalid size2 of record %d (%x) in %s\n", dwRecordsNumber, *pdwRecSize2, LogFile->LogName); @@ -158,6 +218,7 @@ BOOL LogfInitializeExisting(PLOGFILE LogFile) if(!LogfAddOffsetInformation(LogFile, RecBuf->RecordNumber, dwFilePointer)) { + DPRINT1("LogfAddOffsetInformation() failed!\n"); HeapFree(MyHeap, 0, RecBuf); return FALSE; } @@ -168,13 +229,28 @@ BOOL LogfInitializeExisting(PLOGFILE LogFile) LogFile->Header.NextRecord = dwRecordsNumber+1; LogFile->Header.OldestRecord = dwRecordsNumber ? 1 : 0; //FIXME - SetFilePointer(LogFile->hFile, 0, 0, FILE_CURRENT); - WriteFile(LogFile->hFile, + if(!SetFilePointer(LogFile->hFile, 0, NULL, FILE_CURRENT) == + INVALID_SET_FILE_POINTER) + { + DPRINT1("SetFilePointer() failed! %d\n", GetLastError()); + return FALSE; + } + + if(!WriteFile(LogFile->hFile, &LogFile->Header, sizeof(FILE_HEADER), &dwRead, - NULL); - FlushFileBuffers(LogFile->hFile); + NULL)) + { + DPRINT1("WriteFile failed! %d\n", GetLastError()); + return FALSE; + } + + if(!FlushFileBuffers(LogFile->hFile)) + { + DPRINT1("FlushFileBuffers failed! %d\n", GetLastError()); + return FALSE; + } return TRUE; } @@ -190,7 +266,7 @@ PLOGFILE LogfCreate(WCHAR *LogName, sizeof(LOGFILE)); if(!LogFile) { - DbgPrint("EventLog: Can't allocate heap\n"); + DPRINT1("Can't allocate heap!\n"); return NULL; } @@ -205,51 +281,43 @@ PLOGFILE LogfCreate(WCHAR *LogName, if(LogFile->hFile == INVALID_HANDLE_VALUE) { - DPRINT("Can't create file %S.\n", FileName); + DPRINT1("Can't create file %S.\n", FileName); HeapFree(MyHeap, 0, LogFile); return NULL; } - bCreateNew = GetLastError() == ERROR_ALREADY_EXISTS ? FALSE : TRUE; + bCreateNew = (GetLastError() == ERROR_ALREADY_EXISTS) ? FALSE : TRUE; LogFile->LogName = HeapAlloc(MyHeap, - HEAP_ZERO_MEMORY, - (lstrlenW(LogName)+1)*sizeof(WCHAR)); - if(LogFile->LogName) - lstrcpyW(LogFile->LogName, LogName); + HEAP_ZERO_MEMORY, + (lstrlenW(LogName)+1)*sizeof(WCHAR)); + + if(LogFile->LogName) lstrcpyW(LogFile->LogName, LogName); else { - DPRINT("EventLog: Can't allocate heap\n"); + DPRINT1("Can't allocate heap\n"); HeapFree(MyHeap, 0, LogFile); return NULL; } LogFile->FileName = HeapAlloc(MyHeap, - HEAP_ZERO_MEMORY, - (lstrlenW(FileName)+1)*sizeof(WCHAR)); - if(LogFile->FileName) - lstrcpyW(LogFile->FileName, FileName); + HEAP_ZERO_MEMORY, + (lstrlenW(FileName)+1)*sizeof(WCHAR)); + + if(LogFile->FileName) lstrcpyW(LogFile->FileName, FileName); else { - DPRINT("EventLog: Can't allocate heap\n"); - HeapFree(MyHeap, 0, LogFile->LogName); - HeapFree(MyHeap, 0, LogFile); - return NULL; + DPRINT1("Can't allocate heap\n"); + goto fail; } - LogFile->OffsetInfo = (PEVENT_OFFSET_INFO) - HeapAlloc(MyHeap, - HEAP_ZERO_MEMORY, - sizeof(EVENT_OFFSET_INFO)*64); + HeapAlloc(MyHeap, HEAP_ZERO_MEMORY, sizeof(EVENT_OFFSET_INFO)*64); if(!LogFile->OffsetInfo) { - DPRINT("EventLog: Can't allocate heap\n"); - HeapFree(MyHeap, 0, LogFile->FileName); - HeapFree(MyHeap, 0, LogFile->LogName); - HeapFree(MyHeap, 0, LogFile); - return NULL; + DPRINT1("Can't allocate heap\n"); + goto fail; } LogFile->OffsetInfoSize = 64; @@ -258,18 +326,21 @@ PLOGFILE LogfCreate(WCHAR *LogName, bResult = LogfInitializeNew(LogFile); else bResult = LogfInitializeExisting(LogFile); - if(!bResult) - { - HeapFree(MyHeap, 0, LogFile->OffsetInfo); - HeapFree(MyHeap, 0, LogFile->FileName); - HeapFree(MyHeap, 0, LogFile->LogName); - HeapFree(MyHeap, 0, LogFile); - return NULL; - } + if(!bResult) goto fail; InitializeCriticalSection(&LogFile->cs); LogfListAddItem(LogFile); return LogFile; + +fail: + if(LogFile) + { + if(LogFile->OffsetInfo) HeapFree(MyHeap, 0, LogFile->OffsetInfo); + if(LogFile->FileName) HeapFree(MyHeap, 0, LogFile->FileName); + if(LogFile->LogName) HeapFree(MyHeap, 0, LogFile->LogName); + HeapFree(MyHeap, 0, LogFile); + } + return NULL; } VOID LogfClose(PLOGFILE LogFile) @@ -445,8 +516,21 @@ BOOL LogfReadEvent(PLOGFILE LogFile, return FALSE; } - SetFilePointer(LogFile->hFile, dwOffset, NULL, FILE_BEGIN); - ReadFile(LogFile->hFile, &dwRecSize, sizeof(DWORD), &dwRead, NULL); + if(SetFilePointer(LogFile->hFile, dwOffset, NULL, FILE_BEGIN) + == INVALID_SET_FILE_POINTER) + { + DPRINT1("SetFilePointer() failed! %d\n", GetLastError()); + LeaveCriticalSection(&LogFile->cs); + return FALSE; + } + + if(!ReadFile(LogFile->hFile, &dwRecSize, sizeof(DWORD), &dwRead, NULL)) + { + DPRINT1("ReadFile() failed! %d\n", GetLastError()); + LeaveCriticalSection(&LogFile->cs); + return FALSE; + } + if(dwRecSize > BufSize) { *BytesRead = 0; @@ -456,12 +540,23 @@ BOOL LogfReadEvent(PLOGFILE LogFile, return FALSE; } - SetFilePointer(LogFile->hFile, + if(SetFilePointer(LogFile->hFile, -((LONG)sizeof(DWORD)), NULL, - FILE_CURRENT); + FILE_CURRENT) == INVALID_SET_FILE_POINTER) + { + DPRINT1("SetFilePointer() failed! %d\n", GetLastError()); + LeaveCriticalSection(&LogFile->cs); + return FALSE; + } - ReadFile(LogFile->hFile, Buffer, dwRecSize, &dwRead, NULL); + if(!ReadFile(LogFile->hFile, Buffer, dwRecSize, &dwRead, NULL)) + { + DPRINT1("ReadFile() failed! %d\n", GetLastError()); + LeaveCriticalSection(&LogFile->cs); + return FALSE; + } + dwBufferUsage+=dwRead; while(dwBufferUsagehFile, dwOffset, NULL, FILE_BEGIN); - ReadFile(LogFile->hFile, &dwRecSize, sizeof(DWORD), &dwRead, NULL); + if(SetFilePointer(LogFile->hFile, dwOffset, NULL, FILE_BEGIN) + == INVALID_SET_FILE_POINTER) + { + DPRINT1("SetFilePointer() failed! %d\n", GetLastError()); + LeaveCriticalSection(&LogFile->cs); + return FALSE; + } + + if(!ReadFile(LogFile->hFile, &dwRecSize, sizeof(DWORD), &dwRead, NULL)) + { + DPRINT1("ReadFile() failed! %d\n", GetLastError()); + LeaveCriticalSection(&LogFile->cs); + return FALSE; + } + if(dwBufferUsage+dwRecSize>BufSize)break; - SetFilePointer(LogFile->hFile, + if(SetFilePointer(LogFile->hFile, -((LONG)sizeof(DWORD)), NULL, - FILE_CURRENT); + FILE_CURRENT) == INVALID_SET_FILE_POINTER) + { + DPRINT1("SetFilePointer() failed! %d\n", GetLastError()); + LeaveCriticalSection(&LogFile->cs); + return FALSE; + } - ReadFile(LogFile->hFile, + if(!ReadFile(LogFile->hFile, Buffer+dwBufferUsage, dwRecSize, &dwRead, - NULL); + NULL)) + { + DPRINT1("ReadFile() failed! %d\n", GetLastError()); + LeaveCriticalSection(&LogFile->cs); + return FALSE; + } dwBufferUsage+=dwRead; } @@ -503,7 +621,6 @@ BOOL LogfWriteData(PLOGFILE LogFile, DWORD dwWritten; SYSTEMTIME st; EOF_RECORD EofRec; - BOOL bResult; if(!Buffer) { @@ -515,11 +632,18 @@ BOOL LogfWriteData(PLOGFILE LogFile, EnterCriticalSection(&LogFile->cs); - SetFilePointer(LogFile->hFile, LogFile->Header.EofOffset, NULL, FILE_BEGIN); - WriteFile(LogFile->hFile, Buffer, BufSize, &dwWritten, NULL); - - if(BufSize != dwWritten) + if(SetFilePointer(LogFile->hFile, + LogFile->Header.EofOffset, + NULL, FILE_BEGIN) == INVALID_SET_FILE_POINTER) { + DPRINT1("SetFilePointer() failed! %d\n", GetLastError()); + LeaveCriticalSection(&LogFile->cs); + return FALSE; + } + + if(!WriteFile(LogFile->hFile, Buffer, BufSize, &dwWritten, NULL)) + { + DPRINT1("WriteFile() failed! %d\n", GetLastError()); LeaveCriticalSection(&LogFile->cs); return FALSE; } @@ -549,24 +673,41 @@ BOOL LogfWriteData(PLOGFILE LogFile, EofRec.StartOffset = LogFile->Header.FirstRecordOffset; EofRec.EndOffset = LogFile->Header.EofOffset; - WriteFile(LogFile->hFile, &EofRec, sizeof(EOF_RECORD), &dwWritten, NULL); + if(!WriteFile(LogFile->hFile, + &EofRec, + sizeof(EOF_RECORD), + &dwWritten, NULL)) + { + DPRINT1("WriteFile() failed! %d\n", GetLastError()); + LeaveCriticalSection(&LogFile->cs); + return FALSE; + } - SetFilePointer(LogFile->hFile, 0, NULL, FILE_BEGIN); - bResult = WriteFile(LogFile->hFile, + if(SetFilePointer(LogFile->hFile, 0, NULL, FILE_BEGIN) + == INVALID_SET_FILE_POINTER) + { + DPRINT1("SetFilePointer() failed! %d\n", GetLastError()); + LeaveCriticalSection(&LogFile->cs); + return FALSE; + } + + if(!WriteFile(LogFile->hFile, &LogFile->Header, sizeof(FILE_HEADER), &dwWritten, - NULL); - - if(!bResult) + NULL)) { - DPRINT("WriteFile failed! LastError = %d\n", GetLastError()); + DPRINT1("WriteFile failed! LastError = %d\n", GetLastError()); LeaveCriticalSection(&LogFile->cs); return FALSE; } if(!FlushFileBuffers(LogFile->hFile)) - DPRINT("FlushFileBuffers() failed!\n"); + { + LeaveCriticalSection(&LogFile->cs); + DPRINT1("FlushFileBuffers() failed! %d\n", GetLastError()); + return FALSE; + } LeaveCriticalSection(&LogFile->cs); return TRUE; @@ -603,7 +744,7 @@ BOOL LogfAddOffsetInformation(PLOGFILE LogFile, sizeof(EVENT_OFFSET_INFO)); if(!NewOffsetInfo) { - DbgPrint("EventLog: Can't reallocate heap.\n"); + DPRINT1("Can't reallocate heap.\n"); return FALSE; }