From 0d36c27e3ba2019b6c660cae49bc8e207c033984 Mon Sep 17 00:00:00 2001 From: Bernhard Loos Date: Wed, 14 Sep 2011 14:49:03 +0200 Subject: [PATCH] server: ReleaseMutex doesn't need any access rights. --- dlls/kernel32/tests/sync.c | 4 +++- server/mutex.c | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/dlls/kernel32/tests/sync.c b/dlls/kernel32/tests/sync.c index dd87f3e32ff..169571374b8 100644 --- a/dlls/kernel32/tests/sync.c +++ b/dlls/kernel32/tests/sync.c @@ -158,13 +158,15 @@ static void test_mutex(void) for (i = 0; i < 32; i++) { hOpened = OpenMutex(0x1 << i, FALSE, "WineTestMutex"); - ReleaseMutex(hCreated); if(hOpened != NULL) { + ret = ReleaseMutex(hOpened); + ok(ret, "ReleaseMutex failed with error %d, access %x\n", GetLastError(), 1 << i); CloseHandle(hOpened); } else { + ReleaseMutex(hCreated); failed |=0x1 << i; } } diff --git a/server/mutex.c b/server/mutex.c index faedcf39d4d..d21f3414f4d 100644 --- a/server/mutex.c +++ b/server/mutex.c @@ -175,7 +175,7 @@ static int mutex_signal( struct object *obj, unsigned int access ) struct mutex *mutex = (struct mutex *)obj; assert( obj->ops == &mutex_ops ); - if (!(access & SYNCHRONIZE)) /* FIXME: MUTEX_MODIFY_STATE? */ + if (!(access & SYNCHRONIZE)) { set_error( STATUS_ACCESS_DENIED ); return 0; @@ -265,7 +265,7 @@ DECL_HANDLER(release_mutex) struct mutex *mutex; if ((mutex = (struct mutex *)get_handle_obj( current->process, req->handle, - MUTEX_MODIFY_STATE, &mutex_ops ))) + 0, &mutex_ops ))) { if (!mutex->count || (mutex->owner != current)) set_error( STATUS_MUTANT_NOT_OWNED ); else