mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-06 20:20:48 +00:00
sechost: Support decimal or octal access rights in ConvertStringSecurityDescriptorToSecurityDescriptor.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
4ce220e4e8
commit
f2583de38d
|
@ -4219,6 +4219,7 @@ static void test_ConvertStringSecurityDescriptor(void)
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
DWORD GLE;
|
DWORD GLE;
|
||||||
DWORD altGLE;
|
DWORD altGLE;
|
||||||
|
DWORD ace_Mask;
|
||||||
} cssd[] =
|
} cssd[] =
|
||||||
{
|
{
|
||||||
{ "D:(A;;GA;;;WD)", 0xdeadbeef, FALSE, ERROR_UNKNOWN_REVISION },
|
{ "D:(A;;GA;;;WD)", 0xdeadbeef, FALSE, ERROR_UNKNOWN_REVISION },
|
||||||
|
@ -4239,9 +4240,12 @@ static void test_ConvertStringSecurityDescriptor(void)
|
||||||
{ "D:(D;;GA;;; WD)", SDDL_REVISION_1, TRUE },
|
{ "D:(D;;GA;;; WD)", SDDL_REVISION_1, TRUE },
|
||||||
{ "D:(D;;GA;;;WD )", SDDL_REVISION_1, TRUE },
|
{ "D:(D;;GA;;;WD )", SDDL_REVISION_1, TRUE },
|
||||||
/* test ACE string access rights */
|
/* test ACE string access rights */
|
||||||
{ "D:(A;;GA;;;WD)", SDDL_REVISION_1, TRUE },
|
{ "D:(A;;GA;;;WD)", SDDL_REVISION_1, TRUE, 0, 0, GENERIC_ALL },
|
||||||
{ "D:(A;;GRGWGX;;;WD)", SDDL_REVISION_1, TRUE },
|
{ "D:(A;;1;;;WD)", SDDL_REVISION_1, TRUE, 0, 0, 1 },
|
||||||
{ "D:(A;;RCSDWDWO;;;WD)", SDDL_REVISION_1, TRUE },
|
{ "D:(A;;020000000000;;;WD)", SDDL_REVISION_1, TRUE, 0, 0, GENERIC_READ },
|
||||||
|
{ "D:(A;;0X40000000;;;WD)", SDDL_REVISION_1, TRUE, 0, 0, GENERIC_WRITE },
|
||||||
|
{ "D:(A;;GRGWGX;;;WD)", SDDL_REVISION_1, TRUE, 0, 0, GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE },
|
||||||
|
{ "D:(A;;RCSDWDWO;;;WD)", SDDL_REVISION_1, TRUE, 0, 0, READ_CONTROL | DELETE | WRITE_DAC | WRITE_OWNER },
|
||||||
{ "D:(A;;RPWPCCDCLCSWLODTCR;;;WD)", SDDL_REVISION_1, TRUE },
|
{ "D:(A;;RPWPCCDCLCSWLODTCR;;;WD)", SDDL_REVISION_1, TRUE },
|
||||||
{ "D:(A;;FAFRFWFX;;;WD)", SDDL_REVISION_1, TRUE },
|
{ "D:(A;;FAFRFWFX;;;WD)", SDDL_REVISION_1, TRUE },
|
||||||
{ "D:(A;;KAKRKWKX;;;WD)", SDDL_REVISION_1, TRUE },
|
{ "D:(A;;KAKRKWKX;;;WD)", SDDL_REVISION_1, TRUE },
|
||||||
|
@ -4275,8 +4279,21 @@ static void test_ConvertStringSecurityDescriptor(void)
|
||||||
(cssd[i].altGLE && GLE == cssd[i].altGLE),
|
(cssd[i].altGLE && GLE == cssd[i].altGLE),
|
||||||
"(%02u) Unexpected last error %ld\n", i, GLE);
|
"(%02u) Unexpected last error %ld\n", i, GLE);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
{
|
||||||
|
if (cssd[i].ace_Mask)
|
||||||
|
{
|
||||||
|
ACCESS_ALLOWED_ACE *ace;
|
||||||
|
|
||||||
|
acl = (ACL *)((char *)pSD + sizeof(SECURITY_DESCRIPTOR_RELATIVE));
|
||||||
|
ok(acl->AclRevision == ACL_REVISION, "(%02u) Got %u\n", i, acl->AclRevision);
|
||||||
|
|
||||||
|
ace = (ACCESS_ALLOWED_ACE *)(acl + 1);
|
||||||
|
ok(ace->Mask == cssd[i].ace_Mask, "(%02u) Expected %08lx, got %08lx\n",
|
||||||
|
i, cssd[i].ace_Mask, ace->Mask);
|
||||||
|
}
|
||||||
LocalFree(pSD);
|
LocalFree(pSD);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* test behaviour with NULL parameters */
|
/* test behaviour with NULL parameters */
|
||||||
SetLastError(0xdeadbeef);
|
SetLastError(0xdeadbeef);
|
||||||
|
|
|
@ -900,8 +900,8 @@ static DWORD parse_ace_right( const WCHAR **string_ptr )
|
||||||
const WCHAR *string = *string_ptr;
|
const WCHAR *string = *string_ptr;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
if (string[0] == '0' && string[1] == 'x')
|
if (iswdigit( string[0] ))
|
||||||
return wcstoul( string, (WCHAR **)string_ptr, 16 );
|
return wcstoul( string, (WCHAR **)string_ptr, 0 );
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(ace_rights); ++i)
|
for (i = 0; i < ARRAY_SIZE(ace_rights); ++i)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue