SEH protect all remote calls to the Eventlog Service.

svn path=/trunk/; revision=37138
This commit is contained in:
Eric Kohl 2008-11-01 20:37:04 +00:00
parent ae24c33a4f
commit 032300fbc9

View file

@ -156,8 +156,17 @@ BackupEventLogA(IN HANDLE hEventLog,
BackupFileName.Length = BackupFileName.MaximumLength =
lpBackupFileName ? strlen(lpBackupFileName) : 0;
_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 @@ BackupEventLogW(IN HANDLE hEventLog,
BackupFileName.Length = BackupFileName.MaximumLength =
lpBackupFileName ? wcslen(lpBackupFileName) * sizeof(WCHAR) : 0;
_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 @@ ClearEventLogA(IN HANDLE hEventLog,
BackupFileName.Length = BackupFileName.MaximumLength =
lpBackupFileName ? strlen(lpBackupFileName) : 0;
_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 @@ ClearEventLogW(IN HANDLE hEventLog,
BackupFileName.Length = BackupFileName.MaximumLength =
lpBackupFileName ? wcslen(lpBackupFileName) * sizeof(WCHAR) : 0;
_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 @@ CloseEventLog(IN HANDLE hEventLog)
TRACE("%p\n", 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 @@ DeregisterEventSource(IN HANDLE hEventLog)
TRACE("%p\n", 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 @@ GetNumberOfEventLogRecords(IN HANDLE hEventLog,
TRACE("%p, %p\n", hEventLog, NumberOfRecords);
_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 @@ GetOldestEventLogRecord(IN HANDLE hEventLog,
TRACE("%p, %p\n", hEventLog, OldestRecord);
_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 @@ OpenBackupEventLogW(IN LPCWSTR lpUNCServerName,
FileName.Length = FileName.MaximumLength =
lpFileName ? wcslen(lpFileName) * sizeof(WCHAR) : 0;
_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 @@ OpenEventLogW(IN LPCWSTR lpUNCServerName,
SourceName.Length = SourceName.MaximumLength =
lpSourceName ? wcslen(lpSourceName) * sizeof(WCHAR) : 0;
_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,6 +633,8 @@ ReadEventLogA(IN HANDLE hEventLog,
hEventLog, dwReadFlags, dwRecordOffset, lpBuffer,
nNumberOfBytesToRead, pnBytesRead, pnMinNumberOfBytesNeeded);
_SEH_TRY
{
Status = ElfrReadELA(hEventLog,
dwReadFlags,
dwRecordOffset,
@ -550,6 +642,13 @@ ReadEventLogA(IN HANDLE hEventLog,
lpBuffer,
&bytesRead,
&minNumberOfBytesNeeded);
}
_SEH_HANDLE
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
_SEH_END;
if (!NT_SUCCESS(Status))
{
SetLastError(RtlNtStatusToDosError(Status));
@ -591,6 +690,8 @@ ReadEventLogW(IN HANDLE hEventLog,
hEventLog, dwReadFlags, dwRecordOffset, lpBuffer,
nNumberOfBytesToRead, pnBytesRead, pnMinNumberOfBytesNeeded);
_SEH_TRY
{
Status = ElfrReadELW(hEventLog,
dwReadFlags,
dwRecordOffset,
@ -598,6 +699,13 @@ ReadEventLogW(IN HANDLE hEventLog,
lpBuffer,
&bytesRead,
&minNumberOfBytesNeeded);
}
_SEH_HANDLE
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
_SEH_END;
if (!NT_SUCCESS(Status))
{
SetLastError(RtlNtStatusToDosError(Status));
@ -673,12 +781,21 @@ RegisterEventSourceW(IN LPCWSTR lpUNCServerName,
SourceName.Length = SourceName.MaximumLength =
lpSourceName ? wcslen(lpSourceName) * sizeof(WCHAR) : 0;
_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));
@ -807,6 +924,8 @@ ReportEventW(IN HANDLE hEventLog,
for (i = 0; i < wNumStrings; i++)
RtlInitUnicodeString(&Strings[i], lpStrings[i]);
_SEH_TRY
{
Status = ElfrReportEventW(hEventLog,
0, /* FIXME: Time */
wType,
@ -821,6 +940,13 @@ ReportEventW(IN HANDLE hEventLog,
0,
NULL,
NULL);
}
_SEH_HANDLE
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
_SEH_END;
HeapFree(GetProcessHeap(), 0, Strings);
if (!NT_SUCCESS(Status))