Module: wine Branch: master Commit: a0b08adbe40aaaaed0868af00f094123f7ab8b5d URL: http://source.winehq.org/git/wine.git/?a=commit;h=a0b08adbe40aaaaed0868af00f...
Author: Dmitry Timoshkov dmitry@baikal.ru Date: Thu Feb 6 20:48:13 2014 +0900
server: Add PROCESS_QUERY_LIMITED_INFORMATION to GENERIC_EXECUTE access mapping and appropriately change PROCESS_ALL_ACCESS.
---
dlls/advapi32/tests/security.c | 1 - include/winnt.h | 2 +- server/process.c | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c index 6225529..f3cc85d 100644 --- a/dlls/advapi32/tests/security.c +++ b/dlls/advapi32/tests/security.c @@ -5061,7 +5061,6 @@ static void test_process_access(void) "%d: expected %#x, got %#x\n", i, map[i].mapped, access); break; case GENERIC_EXECUTE: -todo_wine ok(access == map[i].mapped || access == (map[i].mapped | PROCESS_QUERY_LIMITED_INFORMATION | PROCESS_TERMINATE) /* Vista+ */, "%d: expected %#x, got %#x\n", i, map[i].mapped, access); break; diff --git a/include/winnt.h b/include/winnt.h index dd4ef63..ded7600 100644 --- a/include/winnt.h +++ b/include/winnt.h @@ -4542,7 +4542,7 @@ typedef enum tagSID_NAME_USE { #define PROCESS_QUERY_INFORMATION 0x0400 #define PROCESS_SUSPEND_RESUME 0x0800 #define PROCESS_QUERY_LIMITED_INFORMATION 0x1000 -#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0xfff) +#define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0xffff)
#define THREAD_TERMINATE 0x0001 #define THREAD_SUSPEND_RESUME 0x0002 diff --git a/server/process.c b/server/process.c index 41b5eca..ceaef64 100644 --- a/server/process.c +++ b/server/process.c @@ -451,7 +451,7 @@ static unsigned int process_map_access( struct object *obj, unsigned int access if (access & GENERIC_READ) access |= STANDARD_RIGHTS_READ | PROCESS_QUERY_INFORMATION | PROCESS_VM_READ; if (access & GENERIC_WRITE) access |= STANDARD_RIGHTS_WRITE | PROCESS_SET_QUOTA | PROCESS_SET_INFORMATION | PROCESS_SUSPEND_RESUME | PROCESS_VM_WRITE | PROCESS_DUP_HANDLE | PROCESS_CREATE_PROCESS | PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION; - if (access & GENERIC_EXECUTE) access |= STANDARD_RIGHTS_EXECUTE | SYNCHRONIZE | PROCESS_TERMINATE; + if (access & GENERIC_EXECUTE) access |= STANDARD_RIGHTS_EXECUTE | SYNCHRONIZE | PROCESS_QUERY_LIMITED_INFORMATION | PROCESS_TERMINATE; if (access & GENERIC_ALL) access |= PROCESS_ALL_ACCESS; return access & ~(GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE | GENERIC_ALL); }