From fa332ffd2729671b2d5e8d36b7dff6d5842510e8 Mon Sep 17 00:00:00 2001 From: Mikolaj Zalewski Date: Thu, 27 Sep 2007 10:36:58 -0700 Subject: [PATCH] advapi32/ntdll: GetSecurityDescriptorOwner/Group should fill isDefaulted also for NULL sids --- dlls/advapi32/tests/security.c | 6 +++--- dlls/ntdll/sec.c | 19 ++++++++++--------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/dlls/advapi32/tests/security.c b/dlls/advapi32/tests/security.c index 3e8e047..4f430e1 100644 --- a/dlls/advapi32/tests/security.c +++ b/dlls/advapi32/tests/security.c @@ -1460,7 +1460,7 @@ void test_security_descriptor() 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 @@ void test_security_descriptor() 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"); diff --git a/dlls/ntdll/sec.c b/dlls/ntdll/sec.c index 38ab402..e827efa 100644 --- a/dlls/ntdll/sec.c +++ b/dlls/ntdll/sec.c @@ -713,6 +713,11 @@ NTSTATUS WINAPI RtlGetOwnerSecurityDescr 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 RtlGetOwnerSecurityDescr else *Owner = lpsd->Owner; - if ( lpsd->Control & SE_OWNER_DEFAULTED ) - *OwnerDefaulted = TRUE; - else - *OwnerDefaulted = FALSE; } else *Owner = NULL; @@ -790,17 +791,17 @@ NTSTATUS WINAPI RtlGetGroupSecurityDescr 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; -- 1.4.1