[PATCH v3 0/6] MR11706: advapi32/tests: Fix Win11 eventlog failures
Fix or skip tests in Win11. There are other failures need fixing. Win11 switched to using “Event Tracing for Windows“. https://learn.microsoft.com/en-us/windows-hardware/test/wpt/event-tracing-fo... -- v3: advapi32/tests: Also clean up filepath2 in eventlog test advapi32/tests: Add Win11 tests for zero-byte and corrupt event logs https://gitlab.winehq.org/wine/wine/-/merge_requests/11706
From: Ken Sharp <imwellcushtymelike@gmail.com> --- dlls/advapi32/tests/eventlog.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dlls/advapi32/tests/eventlog.c b/dlls/advapi32/tests/eventlog.c index 5649ca37b3b..bb225ec63e1 100644 --- a/dlls/advapi32/tests/eventlog.c +++ b/dlls/advapi32/tests/eventlog.c @@ -833,7 +833,7 @@ static void test_readwrite(void) ret = ReportEventA(handle, 0x20, 0, 0, NULL, 0, 0, NULL, NULL); if (!ret && GetLastError() == ERROR_CRC) { - win_skip("Win7 fails when using incorrect event types\n"); + win_skip("NT6+ fails when using incorrect event types\n"); ret = ReportEventA(handle, 0, 0, 0, NULL, 0, 0, NULL, NULL); ok(ret, "Expected success : %ld\n", GetLastError()); } @@ -859,7 +859,7 @@ static void test_readwrite(void) { record = (EVENTLOGRECORD *)buf; - /* Vista and W2K8 return EVENTLOG_SUCCESS, Windows versions before return + /* NT6+ return EVENTLOG_SUCCESS, Windows versions before return * the written eventtype (0x20 in this case). */ if (record->EventType == EVENTLOG_SUCCESS) @@ -941,7 +941,7 @@ static void test_readwrite(void) /* Report only once */ if (on_vista) - skip("There is no DWORD alignment enforced for UserSid on Vista, W2K8 or Win7\n"); + skip("There is no DWORD alignment enforced for UserSid on NT6+\n"); if (on_vista && pGetComputerNameExA) { -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11706
From: Ken Sharp <imwellcushtymelike@gmail.com> --- dlls/advapi32/tests/eventlog.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/dlls/advapi32/tests/eventlog.c b/dlls/advapi32/tests/eventlog.c index bb225ec63e1..5b6fb7fe7b5 100644 --- a/dlls/advapi32/tests/eventlog.c +++ b/dlls/advapi32/tests/eventlog.c @@ -60,11 +60,34 @@ static void init_function_pointers(void) pWow64RevertWow64FsRedirection = (void*)GetProcAddress(hkernel32, "Wow64RevertWow64FsRedirection"); } +static BOOL is_admin(void) +{ + BOOL (WINAPI *pIsUserAnAdmin)(void); + HMODULE hshell = GetModuleHandleA("shell32.dll"); + + if (!hshell) + hshell = LoadLibraryA("shell32.dll"); + + if (hshell) + { + pIsUserAnAdmin = (void *)GetProcAddress(hshell, "IsUserAnAdmin"); + if (pIsUserAnAdmin) + return pIsUserAnAdmin(); + } + return FALSE; +} + static BOOL create_backup(const char *filename) { HANDLE handle; DWORD rc, attribs; + if (!is_admin()) + { + skip("SeBackupPrivilege (administrator) privileges required to backup event log\n"); + return FALSE; + } + handle = OpenEventLogA(NULL, "Application"); if (!handle && (GetLastError() == ERROR_ACCESS_DENIED || GetLastError() == RPC_S_SERVER_UNAVAILABLE)) { @@ -75,6 +98,7 @@ static BOOL create_backup(const char *filename) DeleteFileA(filename); rc = BackupEventLogA(handle, filename); + // It's possible for an Administrator to have SeBackupPrivilege restricted if (!rc && GetLastError() == ERROR_PRIVILEGE_NOT_HELD) { skip("insufficient privileges to backup the eventlog\n"); @@ -327,6 +351,12 @@ static void test_backup(void) const char backup[] = "backup.evt"; const char backup2[] = "backup2.evt"; + if (!is_admin()) + { + skip("SeBackupPrivilege (administrator) privileges required to backup event log\n"); + return; + } + SetLastError(0xdeadbeef); ret = BackupEventLogA(NULL, NULL); ok(!ret, "Expected failure\n"); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11706
From: Ken Sharp <imwellcushtymelike@gmail.com> Windows 11 returns no error when opening a zero-byte or corrupt file. --- dlls/advapi32/tests/eventlog.c | 38 ++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/dlls/advapi32/tests/eventlog.c b/dlls/advapi32/tests/eventlog.c index 5b6fb7fe7b5..9c9ce325d38 100644 --- a/dlls/advapi32/tests/eventlog.c +++ b/dlls/advapi32/tests/eventlog.c @@ -645,13 +645,19 @@ static void test_openbackup(void) CloseHandle(file); SetLastError(0xdeadbeef); handle = OpenBackupEventLogA(NULL, backup); - ok(handle == NULL, "Didn't expect a handle\n"); - ok(GetLastError() == ERROR_NOT_ENOUGH_MEMORY || - GetLastError() == ERROR_ACCESS_DENIED || - GetLastError() == RPC_S_SERVER_UNAVAILABLE || - GetLastError() == ERROR_EVENTLOG_FILE_CORRUPT, /* Vista and Win7 */ - "got %ld\n", GetLastError()); - CloseEventLog(handle); + if (handle) + { + /* Win11 allows opening a zero-byte backup file */ + CloseEventLog(handle); + } + else + { + ok(GetLastError() == ERROR_NOT_ENOUGH_MEMORY || + GetLastError() == ERROR_ACCESS_DENIED || + GetLastError() == RPC_S_SERVER_UNAVAILABLE || + GetLastError() == ERROR_EVENTLOG_FILE_CORRUPT, /* Vista and Win7 */ + "got %ld\n", GetLastError()); + } DeleteFileA(backup); file = CreateFileA(backup, GENERIC_WRITE, 0, NULL, CREATE_NEW, 0, NULL); @@ -659,12 +665,18 @@ static void test_openbackup(void) CloseHandle(file); SetLastError(0xdeadbeef); handle = OpenBackupEventLogA(NULL, backup); - ok(handle == NULL, "Didn't expect a handle\n"); - ok(GetLastError() == ERROR_EVENTLOG_FILE_CORRUPT || - GetLastError() == ERROR_ACCESS_DENIED || - GetLastError() == RPC_S_SERVER_UNAVAILABLE, - "got %ld\n", GetLastError()); - CloseEventLog(handle); + if (handle) + { + /* Win11 allows this */ + CloseEventLog(handle); + } + else + { + ok(GetLastError() == ERROR_EVENTLOG_FILE_CORRUPT || + GetLastError() == ERROR_ACCESS_DENIED || + GetLastError() == RPC_S_SERVER_UNAVAILABLE, + "got %ld\n", GetLastError()); + } DeleteFileA(backup); } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11706
From: Ken Sharp <imwellcushtymelike@gmail.com> --- dlls/advapi32/tests/eventlog.c | 57 ++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 20 deletions(-) diff --git a/dlls/advapi32/tests/eventlog.c b/dlls/advapi32/tests/eventlog.c index 9c9ce325d38..f1145b80cfd 100644 --- a/dlls/advapi32/tests/eventlog.c +++ b/dlls/advapi32/tests/eventlog.c @@ -98,7 +98,7 @@ static BOOL create_backup(const char *filename) DeleteFileA(filename); rc = BackupEventLogA(handle, filename); - // It's possible for an Administrator to have SeBackupPrivilege restricted + /* It's possible for an Administrator to have SeBackupPrivilege restricted */ if (!rc && GetLastError() == ERROR_PRIVILEGE_NOT_HELD) { skip("insufficient privileges to backup the eventlog\n"); @@ -129,12 +129,14 @@ static void test_open_close(void) SetLastError(0xdeadbeef); handle = OpenEventLogA(NULL, NULL); ok(handle == NULL, "OpenEventLogA() succeeded\n"); - ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError()); + ok(GetLastError() == ERROR_INVALID_PARAMETER || GetLastError() == ERROR_INVALID_HANDLE, + "Expected ERROR_INVALID_(PARAMETER|HANDLE), got %ld\n", GetLastError()); SetLastError(0xdeadbeef); handle = OpenEventLogA("IDontExist", NULL); ok(handle == NULL, "OpenEventLogA(IDontExist,) succeeded\n"); - ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError()); + ok(GetLastError() == ERROR_INVALID_PARAMETER || GetLastError() == ERROR_INVALID_HANDLE, + "Expected ERROR_INVALID_(HANDLE|PARAMETER), got %ld\n", GetLastError()); SetLastError(0xdeadbeef); handle = OpenEventLogA("IDontExist", "deadbeef"); @@ -184,12 +186,13 @@ static void test_info(void) SetLastError(0xdeadbeef); ret = pGetEventLogInformation(NULL, 1, NULL, 0, NULL); ok(!ret, "Expected failure\n"); - ok(GetLastError() == ERROR_INVALID_LEVEL, "Expected ERROR_INVALID_LEVEL, got %ld\n", GetLastError()); + ok(GetLastError() == ERROR_INVALID_LEVEL || GetLastError() == ERROR_INVALID_HANDLE, + "Expected ERROR_INVALID_(LEVEL|HANDLE), got %ld\n", GetLastError()); SetLastError(0xdeadbeef); ret = pGetEventLogInformation(NULL, EVENTLOG_FULL_INFO, NULL, 0, NULL); - ok(!ret, "Expected failure\n"); - ok(GetLastError() == ERROR_INVALID_HANDLE, "Expected ERROR_INVALID_HANDLE, got %ld\n", GetLastError()); + ok(GetLastError() == ERROR_INVALID_LEVEL || GetLastError() == ERROR_INVALID_HANDLE, + "Expected ERROR_INVALID_(LEVEL|HANDLE), got %ld\n", GetLastError()); handle = OpenEventLogA(NULL, "Application"); ok(handle != NULL, "OpenEventLogA(Application) failed : %ld\n", GetLastError()); @@ -239,7 +242,8 @@ static void test_count(void) SetLastError(0xdeadbeef); ret = GetNumberOfEventLogRecords(NULL, NULL); ok(!ret, "Expected failure\n"); - ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError()); + ok(GetLastError() == ERROR_INVALID_PARAMETER || GetLastError() == ERROR_INVALID_HANDLE, + "Expected ERROR_INVALID_(PARAMETER|HANDLE), got %ld\n", GetLastError()); SetLastError(0xdeadbeef); count = 0xdeadbeef; @@ -254,7 +258,8 @@ static void test_count(void) SetLastError(0xdeadbeef); ret = GetNumberOfEventLogRecords(handle, NULL); ok(!ret, "Expected failure\n"); - ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError()); + ok(GetLastError() == ERROR_INVALID_PARAMETER || GetLastError() == ERROR_INVALID_HANDLE, + "Expected ERROR_INVALID_(PARAMETER|HANDLE), got %ld\n", GetLastError()); count = 0xdeadbeef; ret = GetNumberOfEventLogRecords(handle, &count); @@ -294,7 +299,8 @@ static void test_oldest(void) SetLastError(0xdeadbeef); ret = GetOldestEventLogRecord(NULL, NULL); ok(!ret, "Expected failure\n"); - ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError()); + ok(GetLastError() == ERROR_INVALID_PARAMETER || GetLastError() == ERROR_INVALID_HANDLE, + "Expected ERROR_INVALID_(PARAMETER|HANDLE), got %ld\n", GetLastError()); SetLastError(0xdeadbeef); oldest = 0xdeadbeef; @@ -314,7 +320,8 @@ static void test_oldest(void) SetLastError(0xdeadbeef); ret = GetOldestEventLogRecord(handle, NULL); ok(!ret, "Expected failure\n"); - ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError()); + ok(GetLastError() == ERROR_INVALID_PARAMETER || GetLastError() == ERROR_INVALID_HANDLE, + "Expected ERROR_INVALID_(PARAMETER|HANDLE), got %ld\n", GetLastError()); oldest = 0xdeadbeef; ret = GetOldestEventLogRecord(handle, &oldest); @@ -360,7 +367,8 @@ static void test_backup(void) SetLastError(0xdeadbeef); ret = BackupEventLogA(NULL, NULL); ok(!ret, "Expected failure\n"); - ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError()); + ok(GetLastError() == ERROR_INVALID_PARAMETER || GetLastError() == ERROR_INVALID_HANDLE, + "Expected ERROR_INVALID_(PARAMETER|HANDLE), got %ld\n", GetLastError()); SetLastError(0xdeadbeef); ret = BackupEventLogA(NULL, backup); @@ -378,7 +386,8 @@ static void test_backup(void) SetLastError(0xdeadbeef); ret = BackupEventLogA(handle, NULL); ok(!ret, "Expected failure\n"); - ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError()); + ok(GetLastError() == ERROR_INVALID_PARAMETER || GetLastError() == ERROR_INVALID_HANDLE, + "Expected ERROR_INVALID_(PARAMETER|HANDLE), got %ld\n", GetLastError()); ret = BackupEventLogA(handle, backup); if (!ret && GetLastError() == ERROR_PRIVILEGE_NOT_HELD) @@ -430,7 +439,8 @@ static void test_read(void) ret = ReadEventLogA(NULL, 0, 0, NULL, 0, NULL, NULL); ok(!ret, "Expected failure\n"); todo_wine - ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError()); + ok(GetLastError() == ERROR_INVALID_PARAMETER || GetLastError() == ERROR_INVALID_HANDLE, + "Expected ERROR_INVALID_(PARAMETER|HANDLE), got %ld\n", GetLastError()); read = 0xdeadbeef; SetLastError(0xdeadbeef); @@ -438,7 +448,8 @@ static void test_read(void) ok(!ret, "Expected failure\n"); ok(read == 0xdeadbeef, "Expected 'read' parameter to remain unchanged\n"); todo_wine - ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError()); + ok(GetLastError() == ERROR_INVALID_PARAMETER || GetLastError() == ERROR_INVALID_HANDLE, + "Expected ERROR_INVALID_(PARAMETER|HANDLE), got %ld\n", GetLastError()); needed = 0xdeadbeef; SetLastError(0xdeadbeef); @@ -446,26 +457,30 @@ static void test_read(void) ok(!ret, "Expected failure\n"); ok(needed == 0xdeadbeef, "Expected 'needed' parameter to remain unchanged\n"); todo_wine - ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError()); + ok(GetLastError() == ERROR_INVALID_PARAMETER || GetLastError() == ERROR_INVALID_HANDLE, + "Expected ERROR_INVALID_(PARAMETER|HANDLE), got %ld\n", GetLastError()); /* 'read' and 'needed' are only filled when the needed buffer size is passed back or when the call succeeds */ SetLastError(0xdeadbeef); ret = ReadEventLogA(NULL, 0, 0, NULL, 0, &read, &needed); ok(!ret, "Expected failure\n"); todo_wine - ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError()); + ok(GetLastError() == ERROR_INVALID_PARAMETER || GetLastError() == ERROR_INVALID_HANDLE, + "Expected ERROR_INVALID_(PARAMETER|HANDLE), got %ld\n", GetLastError()); SetLastError(0xdeadbeef); ret = ReadEventLogA(NULL, EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ, 0, NULL, 0, NULL, NULL); ok(!ret, "Expected failure\n"); todo_wine - ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError()); + ok(GetLastError() == ERROR_INVALID_PARAMETER || GetLastError() == ERROR_INVALID_HANDLE, + "Expected ERROR_INVALID_(PARAMETER|HANDLE), got %ld\n", GetLastError()); SetLastError(0xdeadbeef); ret = ReadEventLogA(NULL, EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ, 0, NULL, 0, &read, &needed); ok(!ret, "Expected failure\n"); todo_wine - ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError()); + ok(GetLastError() == ERROR_INVALID_PARAMETER || GetLastError() == ERROR_INVALID_HANDLE, + "Expected ERROR_INVALID_(PARAMETER|HANDLE), got %ld\n", GetLastError()); buf = NULL; SetLastError(0xdeadbeef); @@ -473,7 +488,8 @@ static void test_read(void) 0, buf, sizeof(EVENTLOGRECORD), &read, &needed); ok(!ret, "Expected failure\n"); todo_wine - ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError()); + ok(GetLastError() == ERROR_INVALID_PARAMETER || GetLastError() == ERROR_INVALID_HANDLE, + "Expected ERROR_INVALID_(PARAMETER|HANDLE), got %ld\n", GetLastError()); buf = malloc(sizeof(EVENTLOGRECORD)); SetLastError(0xdeadbeef); @@ -1627,7 +1643,8 @@ static void test_eventlog_start(void) ret = read_record(handle, EVENTLOG_SEEK_READ | EVENTLOG_BACKWARDS_READ, 0, &record, &size); ok(!ret, "Expected failure\n"); todo_wine - ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %ld\n", GetLastError()); + ok(GetLastError() == ERROR_INVALID_PARAMETER || GetLastError() == ERROR_INVALID_HANDLE, + "Expected ERROR_INVALID_(PARAMETER|HANDLE), got %ld\n", GetLastError()); todo_wine { ret = read_record(handle, EVENTLOG_SEEK_READ | EVENTLOG_BACKWARDS_READ, 5, &record, &size); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11706
From: Ken Sharp <imwellcushtymelike@gmail.com> --- dlls/advapi32/tests/eventlog.c | 80 ++++++++++++++++++++++++---------- 1 file changed, 56 insertions(+), 24 deletions(-) diff --git a/dlls/advapi32/tests/eventlog.c b/dlls/advapi32/tests/eventlog.c index f1145b80cfd..7a010e63483 100644 --- a/dlls/advapi32/tests/eventlog.c +++ b/dlls/advapi32/tests/eventlog.c @@ -595,6 +595,9 @@ static void test_openbackup(void) DWORD written; const char backup[] = "backup.evt"; const char text[] = "Just some text"; + CHAR temp_path[MAX_PATH]; + CHAR corrupt_file[MAX_PATH]; + CHAR zero_file[MAX_PATH]; SetLastError(0xdeadbeef); handle = OpenBackupEventLogA(NULL, NULL); @@ -656,17 +659,32 @@ static void test_openbackup(void) DeleteFileA(backup); } - /* Is there any content checking done? */ - file = CreateFileA(backup, GENERIC_WRITE, 0, NULL, CREATE_NEW, 0, NULL); - CloseHandle(file); + /* Zero-byte file */ + GetTempPathA(MAX_PATH, temp_path); + GetTempFileNameA(temp_path, "evt", 0, zero_file); SetLastError(0xdeadbeef); - handle = OpenBackupEventLogA(NULL, backup); - if (handle) + handle = OpenBackupEventLogA(NULL, zero_file); + if (handle) /* Win11 allows opening a zero-byte backup file */ { - /* Win11 allows opening a zero-byte backup file */ + DWORD count = 0xdeadbeef; + DWORD oldest = 0xdeadbeef; + BOOL ret; + + /* Get record count */ + SetLastError(0xdeadbeef); + ret = GetNumberOfEventLogRecords(handle, &count); + ok(ret, "Expected GetNumberOfEventLogRecords to succeed, got error %ld\n", GetLastError()); + ok(count == 0, "Expected 0 records, got %ld\n", count); + + /* Get oldest record number */ + SetLastError(0xdeadbeef); + ret = GetOldestEventLogRecord(handle, &oldest); + ok(ret, "Expected GetOldestEventLogRecord to succeed, got error %ld\n", GetLastError()); + ok(oldest == 0, "Expected oldest record to be 0, got %ld\n", oldest); + CloseEventLog(handle); } - else + else /* Older versions of Windows immediately fail */ { ok(GetLastError() == ERROR_NOT_ENOUGH_MEMORY || GetLastError() == ERROR_ACCESS_DENIED || @@ -674,26 +692,40 @@ static void test_openbackup(void) GetLastError() == ERROR_EVENTLOG_FILE_CORRUPT, /* Vista and Win7 */ "got %ld\n", GetLastError()); } - DeleteFileA(backup); + DeleteFileA(zero_file); - file = CreateFileA(backup, GENERIC_WRITE, 0, NULL, CREATE_NEW, 0, NULL); - WriteFile(file, text, sizeof(text), &written, NULL); - CloseHandle(file); - SetLastError(0xdeadbeef); - handle = OpenBackupEventLogA(NULL, backup); - if (handle) - { - /* Win11 allows this */ - CloseEventLog(handle); - } - else + /* Corrupt file (random text) */ + GetTempPathA(MAX_PATH, temp_path); + GetTempFileNameA(temp_path, "evt", 0, corrupt_file); + file = CreateFileA(corrupt_file, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); + if (file != INVALID_HANDLE_VALUE) { - ok(GetLastError() == ERROR_EVENTLOG_FILE_CORRUPT || - GetLastError() == ERROR_ACCESS_DENIED || - GetLastError() == RPC_S_SERVER_UNAVAILABLE, - "got %ld\n", GetLastError()); + WriteFile(file, text, sizeof(text), &written, NULL); + CloseHandle(file); + SetLastError(0xdeadbeef); + handle = OpenBackupEventLogA(NULL, corrupt_file); + + if (handle) /* Win11 does not validate the file on open */ + { + DWORD count = 0; + BOOL ret; + + SetLastError(0xdeadbeef); + ret = GetNumberOfEventLogRecords(handle, &count); + ok(!ret, "Expected GetNumberOfEventLogRecords to fail\n"); + ok(GetLastError() == ERROR_EVENTLOG_FILE_CORRUPT, + "Expected ERROR_EVENTLOG_FILE_CORRUPT, got %ld\n", GetLastError()); + CloseEventLog(handle); + } + else /* Older versions of Windows do */ + { + ok(GetLastError() == ERROR_EVENTLOG_FILE_CORRUPT || + GetLastError() == ERROR_ACCESS_DENIED || + GetLastError() == RPC_S_SERVER_UNAVAILABLE, + "got %ld\n", GetLastError()); + } } - DeleteFileA(backup); + DeleteFileA(corrupt_file); } static void test_clear(void) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11706
From: Ken Sharp <imwellcushtymelike@gmail.com> --- dlls/advapi32/tests/eventlog.c | 1 + 1 file changed, 1 insertion(+) diff --git a/dlls/advapi32/tests/eventlog.c b/dlls/advapi32/tests/eventlog.c index 7a010e63483..3882d4bfb11 100644 --- a/dlls/advapi32/tests/eventlog.c +++ b/dlls/advapi32/tests/eventlog.c @@ -1409,6 +1409,7 @@ static void test_start_trace(void) done: free(properties); DeleteFileA(filepath); + DeleteFileA(filepath2); } static BOOL read_record(HANDLE handle, DWORD flags, DWORD offset, EVENTLOGRECORD **record, DWORD *size) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11706
advapi32:security failures in Win10 are not related (occurred before). -- https://gitlab.winehq.org/wine/wine/-/merge_requests/11706#note_149282
On Thu Aug 20 12:51:33 2026 +0000, Ken Sharp wrote:
advapi32:security failures in Win10 are not related (occurred before). And I've now fixed some of them which I'll send in another MR if this ever gets merged.
However, I can't fix the PS script. ``` At C:\script.ps1:254 char:129 + ... other failures need fixing.`n`nWin11 switched to using "Event Tracing ... + ~~~~~ Unexpected token 'Event' in expression or statement. + CategoryInfo : ParserError: (:) [], ParseException + FullyQualifiedErrorId : UnexpectedToken ``` https://gitlab.winehq.org/imwellcushtymelike/wine/-/jobs/296738 -- https://gitlab.winehq.org/wine/wine/-/merge_requests/11706#note_149388
Alexandre Julliard (@julliard) commented about dlls/advapi32/tests/eventlog.c:
DeleteFileA(filename); rc = BackupEventLogA(handle, filename); + /* It's possible for an Administrator to have SeBackupPrivilege restricted */
Then adding IsUserAnAdmin checks doesn't seem useful. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/11706#note_149806
Alexandre Julliard (@julliard) commented about dlls/advapi32/tests/eventlog.c:
ret = ReportEventA(handle, 0x20, 0, 0, NULL, 0, 0, NULL, NULL); if (!ret && GetLastError() == ERROR_CRC) { - win_skip("Win7 fails when using incorrect event types\n"); + win_skip("NT6+ fails when using incorrect event types\n");
Actually we don't care about older versions, that code can be removed. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/11706#note_149807
On Tue Aug 25 09:16:59 2026 +0000, Alexandre Julliard wrote:
Then adding IsUserAnAdmin checks doesn't seem useful. Indeed that seems silly in hindsight. Will update tomorrow.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/11706#note_149838
participants (3)
-
Alexandre Julliard (@julliard) -
Ken Sharp -
Ken Sharp (@imwellcushtymelike)