[PATCH 0/1] MR4860: ntdll: Add NtCompareTokens() stub.
SQL Native Client ODBC driver fails to load if GetProcAddress("NtCompareTokens") returns NULL, however it never calls it. Important: Run 'tools/make_specfiles' after applying the patch to update the syscalls list. Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> -- https://gitlab.winehq.org/wine/wine/-/merge_requests/4860
From: Dmitry Timoshkov <dmitry(a)baikal.ru> SQL Native Client ODBC driver fails to load if GetProcAddress("NtCompareTokens") returns NULL, however it never calls it. Important: Run 'tools/make_specfiles' after applying the patch to update the syscalls list. Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> --- dlls/ntdll/ntdll.spec | 4 ++-- dlls/ntdll/unix/server.c | 10 ++++++++++ dlls/wow64/security.c | 12 ++++++++++++ include/winternl.h | 1 + 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index 1908a089d44..90b64627ce5 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -161,7 +161,7 @@ @ stdcall -syscall NtCommitTransaction(long long) # @ stub NtCompactKeys @ stdcall -syscall NtCompareObjects(ptr ptr) -# @ stub NtCompareTokens +@ stdcall -syscall NtCompareTokens(ptr ptr ptr) @ stdcall -syscall NtCompleteConnectPort(ptr) # @ stub NtCompressKey @ stdcall -syscall NtConnectPort(ptr ptr ptr ptr ptr ptr ptr ptr) @@ -1211,7 +1211,7 @@ # @ stub ZwCloseObjectAuditAlarm # @ stub ZwCompactKeys @ stdcall -private -syscall ZwCompareObjects(ptr ptr) NtCompareObjects -# @ stub ZwCompareTokens +@ stdcall -private -syscall ZwCompareTokens(ptr ptr ptr) NtCompareTokens @ stdcall -private -syscall ZwCompleteConnectPort(ptr) NtCompleteConnectPort # @ stub ZwCompressKey @ stdcall -private -syscall ZwConnectPort(ptr ptr ptr ptr ptr ptr ptr ptr) NtConnectPort diff --git a/dlls/ntdll/unix/server.c b/dlls/ntdll/unix/server.c index 53fcc61ccf3..69e6567c911 100644 --- a/dlls/ntdll/unix/server.c +++ b/dlls/ntdll/unix/server.c @@ -1822,6 +1822,16 @@ NTSTATUS WINAPI NtCompareObjects( HANDLE first, HANDLE second ) } +/************************************************************************** + * NtCompareTokens (NTDLL.@) + */ +NTSTATUS WINAPI NtCompareTokens( HANDLE first, HANDLE second, BOOLEAN *equal ) +{ + FIXME( "%p,%p,%p: stub\n", first, second, equal ); + return STATUS_NOT_IMPLEMENTED; +} + + /************************************************************************** * NtClose */ diff --git a/dlls/wow64/security.c b/dlls/wow64/security.c index 26d413baa13..1a3d98fccee 100644 --- a/dlls/wow64/security.c +++ b/dlls/wow64/security.c @@ -236,6 +236,18 @@ NTSTATUS WINAPI wow64_NtFilterToken( UINT *args ) } +/********************************************************************** + * wow64_NtCompareTokens + */ +NTSTATUS WINAPI wow64_NtCompareTokens( UINT *args ) +{ + HANDLE first = get_handle( &args ); + HANDLE second = get_handle( &args ); + BOOLEAN *equal = get_ptr( &args ); + + return NtCompareTokens( first, second, equal ); +} + /********************************************************************** * wow64_NtImpersonateAnonymousToken */ diff --git a/include/winternl.h b/include/winternl.h index ff8756211a1..b72be6f5f04 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -4355,6 +4355,7 @@ NTSYSAPI NTSTATUS WINAPI NtClose(HANDLE); NTSYSAPI NTSTATUS WINAPI NtCloseObjectAuditAlarm(PUNICODE_STRING,HANDLE,BOOLEAN); NTSYSAPI NTSTATUS WINAPI NtCommitTransaction(HANDLE,BOOLEAN); NTSYSAPI NTSTATUS WINAPI NtCompareObjects(HANDLE,HANDLE); +NTSYSAPI NTSTATUS WINAPI NtCompareTokens(HANDLE,HANDLE,BOOLEAN*); NTSYSAPI NTSTATUS WINAPI NtCompleteConnectPort(HANDLE); NTSYSAPI NTSTATUS WINAPI NtConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PLPC_SECTION_READ,PULONG,PVOID,PULONG); NTSYSAPI NTSTATUS WINAPI NtContinue(PCONTEXT,BOOLEAN); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/4860
Hi, It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated. The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=141999 Your paranoid android. === debian11 (build log) === /usr/bin/i686-w64-mingw32-ld: tmp65c07946/ntdll-00000000.spec.o:fake:(.edata+0x238): undefined reference to `NtCompareTokens(a)12' /usr/bin/i686-w64-mingw32-ld: tmp65c07946/ntdll-00000000.spec.o:fake:(.edata+0xf8c): undefined reference to `NtCompareTokens(a)12' collect2: error: ld returned 1 exit status Task: The win32 Wine build failed === debian11b (build log) === /usr/bin/x86_64-w64-mingw32-ld: tmp65e3e94e/ntdll-00000000.spec.o:fake:(.edata+0x238): undefined reference to `NtCompareTokens' /usr/bin/x86_64-w64-mingw32-ld: tmp65e3e94e/ntdll-00000000.spec.o:fake:(.edata+0xf80): undefined reference to `NtCompareTokens' collect2: error: ld returned 1 exit status Task: The wow64 Wine build failed
Marvin <testbot(a)winehq.org> wrote:
=== debian11 (build log) ===
/usr/bin/i686-w64-mingw32-ld: tmp65c07946/ntdll-00000000.spec.o:fake:(.edata+0x238): undefined reference to `NtCompareTokens(a)12' /usr/bin/i686-w64-mingw32-ld: tmp65c07946/ntdll-00000000.spec.o:fake:(.edata+0xf8c): undefined reference to `NtCompareTokens(a)12' collect2: error: ld returned 1 exit status Task: The win32 Wine build failed
=== debian11b (build log) ===
/usr/bin/x86_64-w64-mingw32-ld: tmp65e3e94e/ntdll-00000000.spec.o:fake:(.edata+0x238): undefined reference to `NtCompareTokens' /usr/bin/x86_64-w64-mingw32-ld: tmp65e3e94e/ntdll-00000000.spec.o:fake:(.edata+0xf80): undefined reference to `NtCompareTokens' collect2: error: ld returned 1 exit status Task: The wow64 Wine build failed
Looks like testbot doesn't run tools/make_specfiles. -- Dmitry.
participants (4)
-
Dmitry Timoshkov -
Dmitry Timoshkov -
Dmitry Timoshkov (@dmitry) -
Marvin