Add GetEventLogInformation stub.
authorSylvain Petreolle <spetreolle@yahoo.fr>
Fri, 1 Jan 2010 14:41:44 +0000 (14:41 +0000)
committerSylvain Petreolle <spetreolle@yahoo.fr>
Fri, 1 Jan 2010 14:41:44 +0000 (14:41 +0000)
Add parameter checks for GetNumberOfEventLogRecords and GetOldestEventLogRecord.

Fixes 3 crashes for advapi32:eventlog winetest.

svn path=/trunk/; revision=44852

reactos/dll/win32/advapi32/advapi32.spec
reactos/dll/win32/advapi32/service/eventlog.c
reactos/include/psdk/winbase.h

index 624cf66..c397a5a 100644 (file)
 @ stdcall GetCurrentHwProfileW(ptr)
 @ stdcall GetEffectiveRightsFromAclA(ptr ptr ptr)
 @ stdcall GetEffectiveRightsFromAclW(ptr ptr ptr)
-@ stub GetEventLogInformation
+@ stdcall GetEventLogInformation(long long ptr long ptr)
 @ stdcall GetExplicitEntriesFromAclA(ptr ptr ptr) advapi32.GetExplicitEntriesFromAclW
 @ stdcall GetExplicitEntriesFromAclW(ptr ptr ptr)
 @ stdcall GetFileSecurityA(str long ptr long ptr)
index 75a5ff9..7a4acb5 100644 (file)
@@ -360,6 +360,29 @@ DeregisterEventSource(IN HANDLE hEventLog)
 }
 
 
+/******************************************************************************
+ * GetEventLogInformation [ADVAPI32.@]
+ *
+ * PARAMS
+ *   hEventLog      [I] Handle to event log
+ *   dwInfoLevel    [I] Level of event log information to return
+ *   lpBuffer       [O] Buffer that receives the event log information
+ *   cbBufSize      [I] Size of the lpBuffer buffer
+ *   pcbBytesNeeded [O] Required buffer size
+ */
+BOOL WINAPI
+GetEventLogInformation(IN HANDLE hEventLog,
+                       IN DWORD dwInfoLevel,
+                       OUT LPVOID lpBuffer,
+                       IN DWORD cbBufSize,
+                       OUT LPDWORD pcbBytesNeeded)
+{
+    UNIMPLEMENTED;
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return FALSE;
+}
+
+
 /******************************************************************************
  * GetNumberOfEventLogRecords [ADVAPI32.@]
  *
@@ -376,6 +399,12 @@ GetNumberOfEventLogRecords(IN HANDLE hEventLog,
 
     TRACE("%p, %p\n", hEventLog, NumberOfRecords);
 
+    if(!NumberOfRecords)
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+        return FALSE;
+    }
+    
     RpcTryExcept
     {
         Status = ElfrNumberOfRecords(hEventLog,
@@ -415,6 +444,12 @@ GetOldestEventLogRecord(IN HANDLE hEventLog,
 
     TRACE("%p, %p\n", hEventLog, OldestRecord);
 
+    if(!OldestRecord)
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+        return FALSE;
+    }
+    
     RpcTryExcept
     {
         Status = ElfrOldestRecord(hEventLog,
index d483ac8..ca1549f 100644 (file)
@@ -1628,6 +1628,7 @@ BOOL WINAPI GetNamedPipeInfo(HANDLE,PDWORD,PDWORD,PDWORD,PDWORD);
 #if (_WIN32_WINNT >= 0x0501)
 VOID WINAPI GetNativeSystemInfo(LPSYSTEM_INFO);
 #endif
+BOOL WINAPI GetEventLogInformation(HANDLE,DWORD,LPVOID,DWORD,LPDWORD);
 BOOL WINAPI GetNumberOfEventLogRecords(HANDLE,PDWORD);
 BOOL WINAPI GetOldestEventLogRecord(HANDLE,PDWORD);
 BOOL WINAPI GetOverlappedResult(HANDLE,LPOVERLAPPED,PDWORD,BOOL);