mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-06 07:00:41 +00:00
server: Fix generic access mapping for a semaphore.
This commit is contained in:
parent
deda14785a
commit
fdd483c083
|
@ -4653,14 +4653,14 @@ static void test_semaphore_security(HANDLE token)
|
||||||
STANDARD_RIGHTS_ALL | SEMAPHORE_ALL_ACCESS };
|
STANDARD_RIGHTS_ALL | SEMAPHORE_ALL_ACCESS };
|
||||||
static const struct
|
static const struct
|
||||||
{
|
{
|
||||||
int todo, generic, mapped;
|
int generic, mapped;
|
||||||
} map[] =
|
} map[] =
|
||||||
{
|
{
|
||||||
{ 0, 0, 0 },
|
{ 0, 0 },
|
||||||
{ 1, GENERIC_READ, STANDARD_RIGHTS_READ | SEMAPHORE_QUERY_STATE },
|
{ GENERIC_READ, STANDARD_RIGHTS_READ | SEMAPHORE_QUERY_STATE },
|
||||||
{ 0, GENERIC_WRITE, STANDARD_RIGHTS_WRITE | SEMAPHORE_MODIFY_STATE },
|
{ GENERIC_WRITE, STANDARD_RIGHTS_WRITE | SEMAPHORE_MODIFY_STATE },
|
||||||
{ 1, GENERIC_EXECUTE, STANDARD_RIGHTS_EXECUTE | SYNCHRONIZE },
|
{ GENERIC_EXECUTE, STANDARD_RIGHTS_EXECUTE | SYNCHRONIZE },
|
||||||
{ 0, GENERIC_ALL, STANDARD_RIGHTS_ALL | SEMAPHORE_QUERY_STATE | SEMAPHORE_MODIFY_STATE }
|
{ GENERIC_ALL, STANDARD_RIGHTS_ALL | SEMAPHORE_QUERY_STATE | SEMAPHORE_MODIFY_STATE }
|
||||||
};
|
};
|
||||||
|
|
||||||
SetLastError(0xdeadbeef);
|
SetLastError(0xdeadbeef);
|
||||||
|
@ -4683,10 +4683,6 @@ static void test_semaphore_security(HANDLE token)
|
||||||
ok(ret, "DuplicateHandle error %d\n", GetLastError());
|
ok(ret, "DuplicateHandle error %d\n", GetLastError());
|
||||||
|
|
||||||
access = get_obj_access(dup);
|
access = get_obj_access(dup);
|
||||||
if (map[i].todo)
|
|
||||||
todo_wine
|
|
||||||
ok(access == map[i].mapped, "%d: expected %#x, got %#x\n", i, map[i].mapped, access);
|
|
||||||
else
|
|
||||||
ok(access == map[i].mapped, "%d: expected %#x, got %#x\n", i, map[i].mapped, access);
|
ok(access == map[i].mapped, "%d: expected %#x, got %#x\n", i, map[i].mapped, access);
|
||||||
|
|
||||||
CloseHandle(dup);
|
CloseHandle(dup);
|
||||||
|
|
|
@ -153,9 +153,9 @@ static void semaphore_satisfied( struct object *obj, struct wait_queue_entry *en
|
||||||
|
|
||||||
static unsigned int semaphore_map_access( struct object *obj, unsigned int access )
|
static unsigned int semaphore_map_access( struct object *obj, unsigned int access )
|
||||||
{
|
{
|
||||||
if (access & GENERIC_READ) access |= STANDARD_RIGHTS_READ | SYNCHRONIZE;
|
if (access & GENERIC_READ) access |= STANDARD_RIGHTS_READ | SEMAPHORE_QUERY_STATE;
|
||||||
if (access & GENERIC_WRITE) access |= STANDARD_RIGHTS_WRITE | SEMAPHORE_MODIFY_STATE;
|
if (access & GENERIC_WRITE) access |= STANDARD_RIGHTS_WRITE | SEMAPHORE_MODIFY_STATE;
|
||||||
if (access & GENERIC_EXECUTE) access |= STANDARD_RIGHTS_EXECUTE;
|
if (access & GENERIC_EXECUTE) access |= STANDARD_RIGHTS_EXECUTE | SYNCHRONIZE;
|
||||||
if (access & GENERIC_ALL) access |= STANDARD_RIGHTS_ALL | SEMAPHORE_ALL_ACCESS;
|
if (access & GENERIC_ALL) access |= STANDARD_RIGHTS_ALL | SEMAPHORE_ALL_ACCESS;
|
||||||
return access & ~(GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE | GENERIC_ALL);
|
return access & ~(GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE | GENERIC_ALL);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue