Dmitry Timoshkov : server: Fix generic access mapping for a process.

Alexandre Julliard julliard at winehq.org
Thu Feb 6 13:25:31 CST 2014


Module: wine
Branch: master
Commit: 53847fd6a1b78e16a9591992bad051c9b6431bf5
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=53847fd6a1b78e16a9591992bad051c9b6431bf5

Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date:   Thu Feb  6 20:47:29 2014 +0900

server: Fix generic access mapping for a process.

---

 dlls/advapi32/tests/security.c |    2 --
 server/process.c               |    7 ++++---
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c
index 87f3ea93..6225529 100644
--- a/dlls/advapi32/tests/security.c
+++ b/dlls/advapi32/tests/security.c
@@ -5053,12 +5053,10 @@ static void test_process_access(void)
         switch (map[i].generic)
         {
         case GENERIC_READ:
-todo_wine
             ok(access == map[i].mapped || access == (map[i].mapped | PROCESS_QUERY_LIMITED_INFORMATION) /* Vista+ */,
                "%d: expected %#x, got %#x\n", i, map[i].mapped, access);
             break;
         case GENERIC_WRITE:
-todo_wine
             ok(access == map[i].mapped || access == (map[i].mapped | PROCESS_TERMINATE) /* before Vista */,
                "%d: expected %#x, got %#x\n", i, map[i].mapped, access);
             break;
diff --git a/server/process.c b/server/process.c
index 4a73662..41b5eca 100644
--- a/server/process.c
+++ b/server/process.c
@@ -448,9 +448,10 @@ static int process_signaled( struct object *obj, struct wait_queue_entry *entry
 
 static unsigned int process_map_access( struct object *obj, unsigned int access )
 {
-    if (access & GENERIC_READ)    access |= STANDARD_RIGHTS_READ | SYNCHRONIZE;
-    if (access & GENERIC_WRITE)   access |= STANDARD_RIGHTS_WRITE | SYNCHRONIZE;
-    if (access & GENERIC_EXECUTE) access |= STANDARD_RIGHTS_EXECUTE;
+    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_ALL)     access |= PROCESS_ALL_ACCESS;
     return access & ~(GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE | GENERIC_ALL);
 }




More information about the wine-cvs mailing list