Paul Vriens : advapi32: Add some input parameter checks to BackupEventLog.

Alexandre Julliard julliard at winehq.org
Fri Oct 30 11:04:33 CDT 2009


Module: wine
Branch: master
Commit: d2227cb8a493eccb04e35328083973b4f7da4ebc
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d2227cb8a493eccb04e35328083973b4f7da4ebc

Author: Paul Vriens <Paul.Vriens.Wine at gmail.com>
Date:   Fri Oct 30 09:51:15 2009 +0100

advapi32: Add some input parameter checks to BackupEventLog.

---

 dlls/advapi32/eventlog.c       |   33 +++++++++++++++++++++++++++++----
 dlls/advapi32/tests/eventlog.c |    7 -------
 2 files changed, 29 insertions(+), 11 deletions(-)

diff --git a/dlls/advapi32/eventlog.c b/dlls/advapi32/eventlog.c
index 8ce255a..f72dba9 100644
--- a/dlls/advapi32/eventlog.c
+++ b/dlls/advapi32/eventlog.c
@@ -64,8 +64,14 @@ static inline LPWSTR SERV_dup( LPCSTR str )
  */
 BOOL WINAPI BackupEventLogA( HANDLE hEventLog, LPCSTR lpBackupFileName )
 {
-	FIXME("(%p,%s) stub\n", hEventLog, debugstr_a(lpBackupFileName));
-	return TRUE;
+    LPWSTR backupW;
+    BOOL ret;
+
+    backupW = SERV_dup(lpBackupFileName);
+    ret = BackupEventLogW(hEventLog, backupW);
+    HeapFree(GetProcessHeap(), 0, backupW);
+
+    return ret;
 }
 
 /******************************************************************************
@@ -75,8 +81,27 @@ BOOL WINAPI BackupEventLogA( HANDLE hEventLog, LPCSTR lpBackupFileName )
  */
 BOOL WINAPI BackupEventLogW( 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 (!lpBackupFileName)
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+        return FALSE;
+    }
+
+    if (!hEventLog)
+    {
+        SetLastError(ERROR_INVALID_HANDLE);
+        return FALSE;
+    }
+
+    if (GetFileAttributesW(lpBackupFileName) != INVALID_FILE_ATTRIBUTES)
+    {
+        SetLastError(ERROR_ALREADY_EXISTS);
+        return FALSE;
+    }
+
+    return TRUE;
 }
 
 /******************************************************************************
diff --git a/dlls/advapi32/tests/eventlog.c b/dlls/advapi32/tests/eventlog.c
index 41319ca..9794f30 100644
--- a/dlls/advapi32/tests/eventlog.c
+++ b/dlls/advapi32/tests/eventlog.c
@@ -223,15 +223,11 @@ static void test_backup(void)
 
     SetLastError(0xdeadbeef);
     ret = BackupEventLogA(NULL, NULL);
-    todo_wine
-    {
     ok(!ret, "Expected failure\n");
     ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
-    }
 
     SetLastError(0xdeadbeef);
     ret = BackupEventLogA(NULL, backup);
-    todo_wine
     ok(!ret, "Expected failure\n");
     ok(GetFileAttributesA(backup) == INVALID_FILE_ATTRIBUTES, "Expected no backup file\n");
 
@@ -239,11 +235,8 @@ static void test_backup(void)
 
     SetLastError(0xdeadbeef);
     ret = BackupEventLogA(handle, NULL);
-    todo_wine
-    {
     ok(!ret, "Expected failure\n");
     ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
-    }
 
     ret = BackupEventLogA(handle, backup);
     ok(ret, "Expected succes\n");




More information about the wine-cvs mailing list