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);
|
||||
ok(GetSecurityDescriptorOwner(&sd, &psid, &isDefault), "GetSecurityDescriptorOwner failed\n");
|
||||
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;
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
|
@ -1473,10 +1473,10 @@ static void test_security_descriptor(void)
|
|||
expect_eq(MakeSelfRelativeSD(&sd, buf, &size), TRUE, BOOL, "%d");
|
||||
ok(GetSecurityDescriptorOwner(&sd, &psid, &isDefault), "GetSecurityDescriptorOwner failed\n");
|
||||
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");
|
||||
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");
|
||||
expect_eq(isPresent, TRUE, BOOL, "%d");
|
||||
expect_eq(psid, NULL, PSID, "%p");
|
||||
|
|
|
@ -713,6 +713,11 @@ NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(
|
|||
if ( !lpsd || !Owner || !OwnerDefaulted )
|
||||
return STATUS_INVALID_PARAMETER;
|
||||
|
||||
if ( lpsd->Control & SE_OWNER_DEFAULTED )
|
||||
*OwnerDefaulted = TRUE;
|
||||
else
|
||||
*OwnerDefaulted = FALSE;
|
||||
|
||||
if (lpsd->Owner != NULL)
|
||||
{
|
||||
if (lpsd->Control & SE_SELF_RELATIVE)
|
||||
|
@ -720,10 +725,6 @@ NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(
|
|||
else
|
||||
*Owner = lpsd->Owner;
|
||||
|
||||
if ( lpsd->Control & SE_OWNER_DEFAULTED )
|
||||
*OwnerDefaulted = TRUE;
|
||||
else
|
||||
*OwnerDefaulted = FALSE;
|
||||
}
|
||||
else
|
||||
*Owner = NULL;
|
||||
|
@ -790,17 +791,17 @@ NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(
|
|||
if ( !lpsd || !Group || !GroupDefaulted )
|
||||
return STATUS_INVALID_PARAMETER;
|
||||
|
||||
if ( lpsd->Control & SE_GROUP_DEFAULTED )
|
||||
*GroupDefaulted = TRUE;
|
||||
else
|
||||
*GroupDefaulted = FALSE;
|
||||
|
||||
if (lpsd->Group != NULL)
|
||||
{
|
||||
if (lpsd->Control & SE_SELF_RELATIVE)
|
||||
*Group = (PSID)((LPBYTE)lpsd + (ULONG_PTR)lpsd->Group);
|
||||
else
|
||||
*Group = lpsd->Group;
|
||||
|
||||
if ( lpsd->Control & SE_GROUP_DEFAULTED )
|
||||
*GroupDefaulted = TRUE;
|
||||
else
|
||||
*GroupDefaulted = FALSE;
|
||||
}
|
||||
else
|
||||
*Group = NULL;
|
||||
|
|
Loading…
Reference in New Issue