Paul Vriens : advapi32: Add some input parameter checks to OpenBackupEventLog.
Alexandre Julliard
julliard at winehq.org
Tue Nov 3 15:37:19 CST 2009
Module: wine
Branch: master
Commit: e94c1ce3aea2f3ccf7468a2ea5aed82df17b013b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e94c1ce3aea2f3ccf7468a2ea5aed82df17b013b
Author: Paul Vriens <Paul.Vriens.Wine at gmail.com>
Date: Mon Nov 2 10:31:17 2009 +0100
advapi32: Add some input parameter checks to OpenBackupEventLog.
---
dlls/advapi32/eventlog.c | 36 ++++++++++++++++++++++++++++++++----
dlls/advapi32/tests/eventlog.c | 12 ------------
2 files changed, 32 insertions(+), 16 deletions(-)
diff --git a/dlls/advapi32/eventlog.c b/dlls/advapi32/eventlog.c
index f72dba9..4990112 100644
--- a/dlls/advapi32/eventlog.c
+++ b/dlls/advapi32/eventlog.c
@@ -378,8 +378,16 @@ BOOL WINAPI NotifyChangeEventLog( HANDLE hEventLog, HANDLE hEvent )
*/
HANDLE WINAPI OpenBackupEventLogA( LPCSTR lpUNCServerName, LPCSTR lpFileName )
{
- FIXME("(%s,%s) stub\n", debugstr_a(lpUNCServerName), debugstr_a(lpFileName));
- return (HANDLE)0xcafe4242;
+ LPWSTR uncnameW, filenameW;
+ HANDLE handle;
+
+ uncnameW = SERV_dup(lpUNCServerName);
+ filenameW = SERV_dup(lpFileName);
+ handle = OpenBackupEventLogW(uncnameW, filenameW);
+ HeapFree(GetProcessHeap(), 0, uncnameW);
+ HeapFree(GetProcessHeap(), 0, filenameW);
+
+ return handle;
}
/******************************************************************************
@@ -389,8 +397,28 @@ HANDLE WINAPI OpenBackupEventLogA( LPCSTR lpUNCServerName, LPCSTR lpFileName )
*/
HANDLE WINAPI OpenBackupEventLogW( LPCWSTR lpUNCServerName, LPCWSTR lpFileName )
{
- FIXME("(%s,%s) stub\n", debugstr_w(lpUNCServerName), debugstr_w(lpFileName));
- return (HANDLE)0xcafe4242;
+ FIXME("(%s,%s) stub\n", debugstr_w(lpUNCServerName), debugstr_w(lpFileName));
+
+ if (!lpFileName)
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return NULL;
+ }
+
+ if (lpUNCServerName && lpUNCServerName[0])
+ {
+ FIXME("Remote server not supported\n");
+ SetLastError(RPC_S_SERVER_UNAVAILABLE);
+ return NULL;
+ }
+
+ if (GetFileAttributesW(lpFileName) == INVALID_FILE_ATTRIBUTES)
+ {
+ SetLastError(ERROR_FILE_NOT_FOUND);
+ return NULL;
+ }
+
+ return (HANDLE)0xcafe4242;
}
/******************************************************************************
diff --git a/dlls/advapi32/tests/eventlog.c b/dlls/advapi32/tests/eventlog.c
index 56df6d9..8a96c69 100644
--- a/dlls/advapi32/tests/eventlog.c
+++ b/dlls/advapi32/tests/eventlog.c
@@ -413,37 +413,25 @@ static void test_openbackup(void)
SetLastError(0xdeadbeef);
handle = OpenBackupEventLogA(NULL, NULL);
- todo_wine
- {
ok(handle == NULL, "Didn't expect a handle\n");
ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
- }
SetLastError(0xdeadbeef);
handle = OpenBackupEventLogA(NULL, "idontexist.evt");
- todo_wine
- {
ok(handle == NULL, "Didn't expect a handle\n");
ok(GetLastError() == ERROR_FILE_NOT_FOUND, "Expected ERROR_FILE_NOT_FOUND, got %d\n", GetLastError());
- }
SetLastError(0xdeadbeef);
handle = OpenBackupEventLogA("IDontExist", NULL);
- todo_wine
- {
ok(handle == NULL, "Didn't expect a handle\n");
ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
- }
SetLastError(0xdeadbeef);
handle = OpenBackupEventLogA("IDontExist", "idontexist.evt");
- todo_wine
- {
ok(handle == NULL, "Didn't expect a handle\n");
ok(GetLastError() == RPC_S_SERVER_UNAVAILABLE ||
GetLastError() == RPC_S_INVALID_NET_ADDR, /* Some Vista and Win7 */
"Expected RPC_S_SERVER_UNAVAILABLE, got %d\n", GetLastError());
- }
/* Make a backup eventlog to work with */
DeleteFileA(backup);
More information about the wine-cvs
mailing list