advapi32/ntdll: GetSecurityDescriptorOwner/Group should fill isDefaulted also for NULL sids.
This commit is contained in:
parent
3c51b2c645
commit
611f57bc20
@ -1460,7 +1460,7 @@ static void test_security_descriptor(void)
|
|||||||
InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);
|
InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);
|
||||||
ok(GetSecurityDescriptorOwner(&sd, &psid, &isDefault), "GetSecurityDescriptorOwner failed\n");
|
ok(GetSecurityDescriptorOwner(&sd, &psid, &isDefault), "GetSecurityDescriptorOwner failed\n");
|
||||||
expect_eq(psid, NULL, PSID, "%p");
|
expect_eq(psid, NULL, PSID, "%p");
|
||||||
todo_wine expect_eq(isDefault, FALSE, BOOL, "%d");
|
expect_eq(isDefault, FALSE, BOOL, "%d");
|
||||||
sd.Control |= SE_DACL_PRESENT | SE_SACL_PRESENT;
|
sd.Control |= SE_DACL_PRESENT | SE_SACL_PRESENT;
|
||||||
|
|
||||||
SetLastError(0xdeadbeef);
|
SetLastError(0xdeadbeef);
|
||||||
@ -1473,10 +1473,10 @@ static void test_security_descriptor(void)
|
|||||||
expect_eq(MakeSelfRelativeSD(&sd, buf, &size), TRUE, BOOL, "%d");
|
expect_eq(MakeSelfRelativeSD(&sd, buf, &size), TRUE, BOOL, "%d");
|
||||||
ok(GetSecurityDescriptorOwner(&sd, &psid, &isDefault), "GetSecurityDescriptorOwner failed\n");
|
ok(GetSecurityDescriptorOwner(&sd, &psid, &isDefault), "GetSecurityDescriptorOwner failed\n");
|
||||||
expect_eq(psid, NULL, PSID, "%p");
|
expect_eq(psid, NULL, PSID, "%p");
|
||||||
todo_wine expect_eq(isDefault, FALSE, BOOL, "%d");
|
expect_eq(isDefault, FALSE, BOOL, "%d");
|
||||||
ok(GetSecurityDescriptorGroup(&sd, &psid, &isDefault), "GetSecurityDescriptorOwner failed\n");
|
ok(GetSecurityDescriptorGroup(&sd, &psid, &isDefault), "GetSecurityDescriptorOwner failed\n");
|
||||||
expect_eq(psid, NULL, PSID, "%p");
|
expect_eq(psid, NULL, PSID, "%p");
|
||||||
todo_wine expect_eq(isDefault, FALSE, BOOL, "%d");
|
expect_eq(isDefault, FALSE, BOOL, "%d");
|
||||||
ok(GetSecurityDescriptorDacl(&sd, &isPresent, &pacl, &isDefault), "GetSecurityDescriptorOwner failed\n");
|
ok(GetSecurityDescriptorDacl(&sd, &isPresent, &pacl, &isDefault), "GetSecurityDescriptorOwner failed\n");
|
||||||
expect_eq(isPresent, TRUE, BOOL, "%d");
|
expect_eq(isPresent, TRUE, BOOL, "%d");
|
||||||
expect_eq(psid, NULL, PSID, "%p");
|
expect_eq(psid, NULL, PSID, "%p");
|
||||||
|
@ -713,6 +713,11 @@ NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(
|
|||||||
if ( !lpsd || !Owner || !OwnerDefaulted )
|
if ( !lpsd || !Owner || !OwnerDefaulted )
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
if ( lpsd->Control & SE_OWNER_DEFAULTED )
|
||||||
|
*OwnerDefaulted = TRUE;
|
||||||
|
else
|
||||||
|
*OwnerDefaulted = FALSE;
|
||||||
|
|
||||||
if (lpsd->Owner != NULL)
|
if (lpsd->Owner != NULL)
|
||||||
{
|
{
|
||||||
if (lpsd->Control & SE_SELF_RELATIVE)
|
if (lpsd->Control & SE_SELF_RELATIVE)
|
||||||
@ -720,10 +725,6 @@ NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(
|
|||||||
else
|
else
|
||||||
*Owner = lpsd->Owner;
|
*Owner = lpsd->Owner;
|
||||||
|
|
||||||
if ( lpsd->Control & SE_OWNER_DEFAULTED )
|
|
||||||
*OwnerDefaulted = TRUE;
|
|
||||||
else
|
|
||||||
*OwnerDefaulted = FALSE;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
*Owner = NULL;
|
*Owner = NULL;
|
||||||
@ -790,17 +791,17 @@ NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(
|
|||||||
if ( !lpsd || !Group || !GroupDefaulted )
|
if ( !lpsd || !Group || !GroupDefaulted )
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
if ( lpsd->Control & SE_GROUP_DEFAULTED )
|
||||||
|
*GroupDefaulted = TRUE;
|
||||||
|
else
|
||||||
|
*GroupDefaulted = FALSE;
|
||||||
|
|
||||||
if (lpsd->Group != NULL)
|
if (lpsd->Group != NULL)
|
||||||
{
|
{
|
||||||
if (lpsd->Control & SE_SELF_RELATIVE)
|
if (lpsd->Control & SE_SELF_RELATIVE)
|
||||||
*Group = (PSID)((LPBYTE)lpsd + (ULONG_PTR)lpsd->Group);
|
*Group = (PSID)((LPBYTE)lpsd + (ULONG_PTR)lpsd->Group);
|
||||||
else
|
else
|
||||||
*Group = lpsd->Group;
|
*Group = lpsd->Group;
|
||||||
|
|
||||||
if ( lpsd->Control & SE_GROUP_DEFAULTED )
|
|
||||||
*GroupDefaulted = TRUE;
|
|
||||||
else
|
|
||||||
*GroupDefaulted = FALSE;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
*Group = NULL;
|
*Group = NULL;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user