From 93e8bea2bd9cf06faebdd0407dacde6c46b98a63 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Fri, 21 Aug 2015 12:14:15 +0800 Subject: [PATCH] server: Add implicit THREAD_[QUERY|SET]_LIMITED_INFORMATION access. --- server/thread.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/server/thread.c b/server/thread.c index e1696baaa12..9df2da6dda4 100644 --- a/server/thread.c +++ b/server/thread.c @@ -338,11 +338,15 @@ static int thread_signaled( struct object *obj, struct wait_queue_entry *entry ) static unsigned int thread_map_access( struct object *obj, unsigned int access ) { - if (access & GENERIC_READ) access |= STANDARD_RIGHTS_READ | THREAD_QUERY_INFORMATION | THREAD_GET_CONTEXT | THREAD_QUERY_LIMITED_INFORMATION; + if (access & GENERIC_READ) access |= STANDARD_RIGHTS_READ | THREAD_QUERY_INFORMATION | THREAD_GET_CONTEXT; if (access & GENERIC_WRITE) access |= STANDARD_RIGHTS_WRITE | THREAD_SET_INFORMATION | THREAD_SET_CONTEXT | - THREAD_TERMINATE | THREAD_SUSPEND_RESUME | THREAD_SET_LIMITED_INFORMATION; + THREAD_TERMINATE | THREAD_SUSPEND_RESUME; if (access & GENERIC_EXECUTE) access |= STANDARD_RIGHTS_EXECUTE | SYNCHRONIZE | THREAD_QUERY_LIMITED_INFORMATION; if (access & GENERIC_ALL) access |= THREAD_ALL_ACCESS; + + if (access & THREAD_QUERY_INFORMATION) access |= THREAD_QUERY_LIMITED_INFORMATION; + if (access & THREAD_SET_INFORMATION) access |= THREAD_SET_LIMITED_INFORMATION; + return access & ~(GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE | GENERIC_ALL); }