Module: wine Branch: master Commit: d2227cb8a493eccb04e35328083973b4f7da4ebc URL: http://source.winehq.org/git/wine.git/?a=commit;h=d2227cb8a493eccb04e3532808...
Author: Paul Vriens Paul.Vriens.Wine@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");