ntdll: Fix a few more thread information access rights.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2020-06-30 10:02:22 +02:00
parent e1e34cdc37
commit 64731a8e9f
3 changed files with 3 additions and 4 deletions

View File

@ -2215,12 +2215,9 @@ static void test_thread_info(void)
#endif #endif
case ThreadTimes: case ThreadTimes:
todo_wine
ok(status == STATUS_SUCCESS, "for info %u expected STATUS_SUCCESS, got %08x (ret_len %u)\n", i, status, ret_len); ok(status == STATUS_SUCCESS, "for info %u expected STATUS_SUCCESS, got %08x (ret_len %u)\n", i, status, ret_len);
break; break;
case ThreadAffinityMask:
case ThreadQuerySetWin32StartAddress:
case ThreadIsIoPending: case ThreadIsIoPending:
todo_wine todo_wine
ok(status == STATUS_ACCESS_DENIED, "for info %u expected STATUS_ACCESS_DENIED, got %08x (ret_len %u)\n", i, status, ret_len); ok(status == STATUS_ACCESS_DENIED, "for info %u expected STATUS_ACCESS_DENIED, got %08x (ret_len %u)\n", i, status, ret_len);

View File

@ -895,6 +895,7 @@ NTSTATUS WINAPI NtQueryInformationThread( HANDLE handle, THREADINFOCLASS class,
SERVER_START_REQ( get_thread_info ) SERVER_START_REQ( get_thread_info )
{ {
req->handle = wine_server_obj_handle( handle ); req->handle = wine_server_obj_handle( handle );
req->access = THREAD_QUERY_INFORMATION;
if (!(status = wine_server_call( req ))) affinity = reply->affinity & affinity_mask; if (!(status = wine_server_call( req ))) affinity = reply->affinity & affinity_mask;
} }
SERVER_END_REQ; SERVER_END_REQ;
@ -973,6 +974,7 @@ NTSTATUS WINAPI NtQueryInformationThread( HANDLE handle, THREADINFOCLASS class,
SERVER_START_REQ( get_thread_info ) SERVER_START_REQ( get_thread_info )
{ {
req->handle = wine_server_obj_handle( handle ); req->handle = wine_server_obj_handle( handle );
req->access = THREAD_QUERY_INFORMATION;
status = wine_server_call( req ); status = wine_server_call( req );
if (status == STATUS_SUCCESS) if (status == STATUS_SUCCESS)
{ {

View File

@ -1553,7 +1553,7 @@ DECL_HANDLER(get_thread_times)
{ {
struct thread *thread; struct thread *thread;
if ((thread = get_thread_from_handle( req->handle, THREAD_QUERY_INFORMATION ))) if ((thread = get_thread_from_handle( req->handle, THREAD_QUERY_LIMITED_INFORMATION )))
{ {
reply->creation_time = thread->creation_time; reply->creation_time = thread->creation_time;
reply->exit_time = thread->exit_time; reply->exit_time = thread->exit_time;