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