[ros-diffs] [ekohl] 37138: SEH protect all remote calls to the Eventlog Service.

ekohl at svn.reactos.org ekohl at svn.reactos.org
Sat Nov 1 21:37:05 CET 2008


Author: ekohl
Date: Sat Nov  1 15:37:04 2008
New Revision: 37138

URL: http://svn.reactos.org/svn/reactos?rev=37138&view=rev
Log:
SEH protect all remote calls to the Eventlog Service.

Modified:
    trunk/reactos/dll/win32/advapi32/service/eventlog.c

Modified: trunk/reactos/dll/win32/advapi32/service/eventlog.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/advapi32/service/eventlog.c?rev=37138&r1=37137&r2=37138&view=diff
==============================================================================
--- trunk/reactos/dll/win32/advapi32/service/eventlog.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/advapi32/service/eventlog.c [iso-8859-1] Sat Nov  1 15:37:04 2008
@@ -156,8 +156,17 @@
     BackupFileName.Length = BackupFileName.MaximumLength =
         lpBackupFileName ? strlen(lpBackupFileName) : 0;
 
-    Status = ElfrBackupELFA(hEventLog,
-                            &BackupFileName);
+    _SEH_TRY
+    {
+        Status = ElfrBackupELFA(hEventLog,
+                                &BackupFileName);
+    }
+    _SEH_HANDLE
+    {
+        Status = I_RpcMapWin32Status(RpcExceptionCode());
+    }
+    _SEH_END;
+
     if (!NT_SUCCESS(Status))
     {
         SetLastError(RtlNtStatusToDosError(Status));
@@ -187,8 +196,17 @@
     BackupFileName.Length = BackupFileName.MaximumLength =
         lpBackupFileName ? wcslen(lpBackupFileName) * sizeof(WCHAR) : 0;
 
-    Status = ElfrBackupELFW(hEventLog,
-                            &BackupFileName);
+    _SEH_TRY
+    {
+        Status = ElfrBackupELFW(hEventLog,
+                                &BackupFileName);
+    }
+    _SEH_HANDLE
+    {
+        Status = I_RpcMapWin32Status(RpcExceptionCode());
+    }
+    _SEH_END;
+
     if (!NT_SUCCESS(Status))
     {
         SetLastError(RtlNtStatusToDosError(Status));
@@ -215,8 +233,17 @@
     BackupFileName.Length = BackupFileName.MaximumLength =
         lpBackupFileName ? strlen(lpBackupFileName) : 0;
 
-    Status = ElfrClearELFA(hEventLog,
-                           &BackupFileName);
+    _SEH_TRY
+    {
+        Status = ElfrClearELFA(hEventLog,
+                               &BackupFileName);
+    }
+    _SEH_HANDLE
+    {
+        Status = I_RpcMapWin32Status(RpcExceptionCode());
+    }
+    _SEH_END;
+
     if (!NT_SUCCESS(Status))
     {
         SetLastError(RtlNtStatusToDosError(Status));
@@ -243,8 +270,17 @@
     BackupFileName.Length = BackupFileName.MaximumLength =
         lpBackupFileName ? wcslen(lpBackupFileName) * sizeof(WCHAR) : 0;
 
-    Status = ElfrClearELFW(hEventLog,
-                           &BackupFileName);
+    _SEH_TRY
+    {
+        Status = ElfrClearELFW(hEventLog,
+                               &BackupFileName);
+    }
+    _SEH_HANDLE
+    {
+        Status = I_RpcMapWin32Status(RpcExceptionCode());
+    }
+    _SEH_END;
+
     if (!NT_SUCCESS(Status))
     {
         SetLastError(RtlNtStatusToDosError(Status));
@@ -265,7 +301,16 @@
 
     TRACE("%p\n", hEventLog);
 
-    Status = ElfrCloseEL(&hEventLog);
+    _SEH_TRY
+    {
+        Status = ElfrCloseEL(&hEventLog);
+    }
+    _SEH_HANDLE
+    {
+        Status = I_RpcMapWin32Status(RpcExceptionCode());
+    }
+    _SEH_END;
+
     if (!NT_SUCCESS(Status))
     {
         SetLastError(RtlNtStatusToDosError(Status));
@@ -292,7 +337,16 @@
 
     TRACE("%p\n", hEventLog);
 
-    Status = ElfrDeregisterEventSource(&hEventLog);
+    _SEH_TRY
+    {
+        Status = ElfrDeregisterEventSource(&hEventLog);
+    }
+    _SEH_HANDLE
+    {
+        Status = I_RpcMapWin32Status(RpcExceptionCode());
+    }
+    _SEH_END;
+
     if (!NT_SUCCESS(Status))
     {
         SetLastError(RtlNtStatusToDosError(Status));
@@ -319,8 +373,17 @@
 
     TRACE("%p, %p\n", hEventLog, NumberOfRecords);
 
-    Status = ElfrNumberOfRecords(hEventLog,
-                                 &Records);
+    _SEH_TRY
+    {
+        Status = ElfrNumberOfRecords(hEventLog,
+                                     &Records);
+    }
+    _SEH_HANDLE
+    {
+        Status = I_RpcMapWin32Status(RpcExceptionCode());
+    }
+    _SEH_END;
+
     if (!NT_SUCCESS(Status))
     {
         SetLastError(RtlNtStatusToDosError(Status));
@@ -349,8 +412,17 @@
 
     TRACE("%p, %p\n", hEventLog, OldestRecord);
 
-    Status = ElfrOldestRecord(hEventLog,
-                              &Oldest);
+    _SEH_TRY
+    {
+        Status = ElfrOldestRecord(hEventLog,
+                                  &Oldest);
+    }
+    _SEH_HANDLE
+    {
+        Status = I_RpcMapWin32Status(RpcExceptionCode());
+    }
+    _SEH_END;
+
     if (!NT_SUCCESS(Status))
     {
         SetLastError(RtlNtStatusToDosError(Status));
@@ -438,11 +510,20 @@
     FileName.Length = FileName.MaximumLength =
         lpFileName ? wcslen(lpFileName) * sizeof(WCHAR) : 0;
 
-    Status = ElfrOpenBELW((LPWSTR)lpUNCServerName,
-                          &FileName,
-                          0,
-                          0,
-                          &LogHandle);
+    _SEH_TRY
+    {
+        Status = ElfrOpenBELW((LPWSTR)lpUNCServerName,
+                              &FileName,
+                              0,
+                              0,
+                              &LogHandle);
+    }
+    _SEH_HANDLE
+    {
+        Status = I_RpcMapWin32Status(RpcExceptionCode());
+    }
+    _SEH_END;
+
     if (!NT_SUCCESS(Status))
     {
         SetLastError(RtlNtStatusToDosError(Status));
@@ -508,12 +589,21 @@
     SourceName.Length = SourceName.MaximumLength =
         lpSourceName ? wcslen(lpSourceName) * sizeof(WCHAR) : 0;
 
-    Status = ElfrOpenELW((LPWSTR)lpUNCServerName,
-                         &SourceName,
-                         &EmptyString,
-                         0,
-                         0,
-                         &LogHandle);
+    _SEH_TRY
+    {
+        Status = ElfrOpenELW((LPWSTR)lpUNCServerName,
+                             &SourceName,
+                             &EmptyString,
+                             0,
+                             0,
+                             &LogHandle);
+    }
+    _SEH_HANDLE
+    {
+        Status = I_RpcMapWin32Status(RpcExceptionCode());
+    }
+    _SEH_END;
+
     if (!NT_SUCCESS(Status))
     {
         SetLastError(RtlNtStatusToDosError(Status));
@@ -543,13 +633,22 @@
         hEventLog, dwReadFlags, dwRecordOffset, lpBuffer,
         nNumberOfBytesToRead, pnBytesRead, pnMinNumberOfBytesNeeded);
 
-    Status = ElfrReadELA(hEventLog,
-                         dwReadFlags,
-                         dwRecordOffset,
-                         nNumberOfBytesToRead,
-                         lpBuffer,
-                         &bytesRead,
-                         &minNumberOfBytesNeeded);
+    _SEH_TRY
+    {
+        Status = ElfrReadELA(hEventLog,
+                             dwReadFlags,
+                             dwRecordOffset,
+                             nNumberOfBytesToRead,
+                             lpBuffer,
+                             &bytesRead,
+                             &minNumberOfBytesNeeded);
+    }
+    _SEH_HANDLE
+    {
+        Status = I_RpcMapWin32Status(RpcExceptionCode());
+    }
+    _SEH_END;
+
     if (!NT_SUCCESS(Status))
     {
         SetLastError(RtlNtStatusToDosError(Status));
@@ -591,13 +690,22 @@
         hEventLog, dwReadFlags, dwRecordOffset, lpBuffer,
         nNumberOfBytesToRead, pnBytesRead, pnMinNumberOfBytesNeeded);
 
-    Status = ElfrReadELW(hEventLog,
-                         dwReadFlags,
-                         dwRecordOffset,
-                         nNumberOfBytesToRead,
-                         lpBuffer,
-                         &bytesRead,
-                         &minNumberOfBytesNeeded);
+    _SEH_TRY
+    {
+        Status = ElfrReadELW(hEventLog,
+                             dwReadFlags,
+                             dwRecordOffset,
+                             nNumberOfBytesToRead,
+                             lpBuffer,
+                             &bytesRead,
+                             &minNumberOfBytesNeeded);
+    }
+    _SEH_HANDLE
+    {
+        Status = I_RpcMapWin32Status(RpcExceptionCode());
+    }
+    _SEH_END;
+
     if (!NT_SUCCESS(Status))
     {
         SetLastError(RtlNtStatusToDosError(Status));
@@ -673,12 +781,21 @@
     SourceName.Length = SourceName.MaximumLength =
         lpSourceName ? wcslen(lpSourceName) * sizeof(WCHAR) : 0;
 
-    Status = ElfrRegisterEventSourceW((LPWSTR)lpUNCServerName,
-                                      &SourceName,
-                                      &EmptyString,
-                                      0,
-                                      0,
-                                      &LogHandle);
+    _SEH_TRY
+    {
+        Status = ElfrRegisterEventSourceW((LPWSTR)lpUNCServerName,
+                                          &SourceName,
+                                          &EmptyString,
+                                          0,
+                                          0,
+                                          &LogHandle);
+    }
+    _SEH_HANDLE
+    {
+        Status = I_RpcMapWin32Status(RpcExceptionCode());
+    }
+    _SEH_END;
+
     if (!NT_SUCCESS(Status))
     {
         SetLastError(RtlNtStatusToDosError(Status));
@@ -792,8 +909,8 @@
     WORD i;
 
     TRACE("%p, %u, %u, %lu, %p, %u, %lu, %p, %p\n",
-        hEventLog, wType, wCategory, dwEventID, lpUserSid,
-        wNumStrings, dwDataSize, lpStrings, lpRawData);
+          hEventLog, wType, wCategory, dwEventID, lpUserSid,
+          wNumStrings, dwDataSize, lpStrings, lpRawData);
 
     Strings = HeapAlloc(GetProcessHeap(),
                         0,
@@ -807,20 +924,29 @@
     for (i = 0; i < wNumStrings; i++)
         RtlInitUnicodeString(&Strings[i], lpStrings[i]);
 
-    Status = ElfrReportEventW(hEventLog,
-                              0, /* FIXME: Time */
-                              wType,
-                              wCategory,
-                              dwEventID,
-                              wNumStrings,
-                              dwDataSize,
-                              L"", /* FIXME: ComputerName */
-                              lpUserSid,
-                              (LPWSTR *)lpStrings, /* FIXME: should be Strings */
-                              lpRawData,
-                              0,
-                              NULL,
-                              NULL);
+    _SEH_TRY
+    {
+        Status = ElfrReportEventW(hEventLog,
+                                  0, /* FIXME: Time */
+                                  wType,
+                                  wCategory,
+                                  dwEventID,
+                                  wNumStrings,
+                                  dwDataSize,
+                                  L"", /* FIXME: ComputerName */
+                                  lpUserSid,
+                                  (LPWSTR *)lpStrings, /* FIXME: should be Strings */
+                                  lpRawData,
+                                  0,
+                                  NULL,
+                                  NULL);
+    }
+    _SEH_HANDLE
+    {
+        Status = I_RpcMapWin32Status(RpcExceptionCode());
+    }
+    _SEH_END;
+
     HeapFree(GetProcessHeap(), 0, Strings);
 
     if (!NT_SUCCESS(Status))



More information about the Ros-diffs mailing list