Paul Vriens : advapi32: Add a input parameter check to ClearEventLog.
Alexandre Julliard
julliard at winehq.org
Wed Nov 4 10:26:22 CST 2009
Module: wine
Branch: master
Commit: 5dafeacbd5b89d89c66bafbe3523278382158f98
URL: http://source.winehq.org/git/wine.git/?a=commit;h=5dafeacbd5b89d89c66bafbe3523278382158f98
Author: Paul Vriens <Paul.Vriens.Wine at 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);
More information about the wine-cvs
mailing list