Module: wine Branch: master Commit: 5dafeacbd5b89d89c66bafbe3523278382158f98 URL: http://source.winehq.org/git/wine.git/?a=commit;h=5dafeacbd5b89d89c66bafbe35...
Author: Paul Vriens Paul.Vriens.Wine@gmail.com Date: Wed Nov 4 08:00:58 2009 +0100
advapi32: Add a input parameter check to ClearEventLog.
---
dlls/advapi32/eventlog.c | 23 ++++++++++++++++++----- dlls/advapi32/tests/eventlog.c | 12 ------------ 2 files changed, 18 insertions(+), 17 deletions(-)
diff --git a/dlls/advapi32/eventlog.c b/dlls/advapi32/eventlog.c index 4990112..af377ee 100644 --- a/dlls/advapi32/eventlog.c +++ b/dlls/advapi32/eventlog.c @@ -107,7 +107,7 @@ BOOL WINAPI BackupEventLogW( HANDLE hEventLog, LPCWSTR lpBackupFileName ) /****************************************************************************** * ClearEventLogA [ADVAPI32.@] * - * Clears the event log and/or saves the log to a backup file. + * Clears the event log and optionally saves the log to a backup file. * * PARAMS * hEvenLog [I] Handle to event log to clear. @@ -121,8 +121,14 @@ BOOL WINAPI BackupEventLogW( HANDLE hEventLog, LPCWSTR lpBackupFileName ) */ BOOL WINAPI ClearEventLogA( HANDLE hEventLog, LPCSTR lpBackupFileName ) { - FIXME("(%p,%s) stub\n", hEventLog, debugstr_a(lpBackupFileName)); - return TRUE; + LPWSTR backupW; + BOOL ret; + + backupW = SERV_dup(lpBackupFileName); + ret = ClearEventLogW(hEventLog, backupW); + HeapFree(GetProcessHeap(), 0, backupW); + + return ret; }
/****************************************************************************** @@ -132,8 +138,15 @@ BOOL WINAPI ClearEventLogA( HANDLE hEventLog, LPCSTR lpBackupFileName ) */ BOOL WINAPI ClearEventLogW( HANDLE hEventLog, LPCWSTR lpBackupFileName ) { - FIXME("(%p,%s) stub\n", hEventLog, debugstr_w(lpBackupFileName)); - return TRUE; + FIXME("(%p,%s) stub\n", hEventLog, debugstr_w(lpBackupFileName)); + + if (!hEventLog) + { + SetLastError(ERROR_INVALID_HANDLE); + return FALSE; + } + + return TRUE; }
/****************************************************************************** diff --git a/dlls/advapi32/tests/eventlog.c b/dlls/advapi32/tests/eventlog.c index 99990a2..6bc9a24 100644 --- a/dlls/advapi32/tests/eventlog.c +++ b/dlls/advapi32/tests/eventlog.c @@ -508,22 +508,16 @@ static void test_clear(void)
SetLastError(0xdeadbeef); ret = ClearEventLogA(NULL, NULL); - todo_wine - { ok(!ret, "Expected failure\n"); ok(GetLastError() == ERROR_INVALID_HANDLE, "Expected ERROR_INVALID_HANDLE, got %d\n", GetLastError()); - }
/* Make a backup eventlog to work with */ create_backup(backup);
SetLastError(0xdeadbeef); ret = ClearEventLogA(NULL, backup); - todo_wine - { ok(!ret, "Expected failure\n"); ok(GetLastError() == ERROR_INVALID_HANDLE, "Expected ERROR_INVALID_HANDLE, got %d\n", GetLastError()); - }
handle = OpenBackupEventLogA(NULL, backup); todo_wine @@ -532,20 +526,14 @@ static void test_clear(void) /* A real eventlog would fail with ERROR_ALREADY_EXISTS */ SetLastError(0xdeadbeef); ret = ClearEventLogA(handle, backup); - todo_wine - { ok(!ret, "Expected failure\n"); ok(GetLastError() == ERROR_INVALID_HANDLE, "Expected ERROR_INVALID_HANDLE, got %d\n", GetLastError()); - }
/* Show that ClearEventLog only works for real eventlogs. */ SetLastError(0xdeadbeef); ret = ClearEventLogA(handle, NULL); - todo_wine - { ok(!ret, "Expected failure\n"); ok(GetLastError() == ERROR_INVALID_HANDLE, "Expected ERROR_INVALID_HANDLE, got %d\n", GetLastError()); - }
CloseEventLog(handle); DeleteFileA(backup);