mirror of
https://github.com/reactos/reactos.git
synced 2025-08-04 17:05:45 +00:00
Add missing return value checks. Finally fix bug #1526
svn path=/trunk/; revision=23138
This commit is contained in:
parent
6a97df1eec
commit
ba51348c89
1 changed files with 219 additions and 78 deletions
|
@ -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(dwBufferUsage<BufSize)
|
||||
|
@ -473,20 +568,43 @@ BOOL LogfReadEvent(PLOGFILE LogFile,
|
|||
dwOffset = LogfOffsetByNumber(LogFile, dwRecNum);
|
||||
if(!dwOffset) break;
|
||||
|
||||
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(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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue