NTDLL: ACL fixes and cleanups
Mike McCormack
mike at codeweavers.com
Thu Jan 20 01:04:33 CST 2005
ChangeLog:
Ulrich Czekalla <ulrich at codeweavers.com>
* ACL fixes and cleanups
-------------- next part --------------
Index: dlls/ntdll/sec.c
===================================================================
RCS file: /home/wine/wine/dlls/ntdll/sec.c,v
retrieving revision 1.48
diff -u -p -r1.48 sec.c
--- dlls/ntdll/sec.c 22 Dec 2004 15:31:16 -0000 1.48
+++ dlls/ntdll/sec.c 20 Jan 2005 06:58:16 -0000
@@ -408,10 +408,12 @@ ULONG WINAPI RtlLengthSecurityDescriptor
if ( lpsd->Group != NULL )
Size += RtlLengthSid((PSID)((LPBYTE)lpsd->Group + offset));
- if ( lpsd->Sacl != NULL )
+ if ( (lpsd->Control & SE_SACL_PRESENT) &&
+ lpsd->Sacl != NULL )
Size += ((PACL)((LPBYTE)lpsd->Sacl + offset))->AclSize;
- if ( lpsd->Dacl != NULL )
+ if ( (lpsd->Control & SE_DACL_PRESENT) &&
+ lpsd->Dacl != NULL )
Size += ((PACL)((LPBYTE)lpsd->Dacl + offset))->AclSize;
return Size;
@@ -430,7 +432,7 @@ NTSTATUS WINAPI RtlGetDaclSecurityDescri
SECURITY_DESCRIPTOR* lpsd=pSecurityDescriptor;
TRACE("(%p,%p,%p,%p)\n",
- pSecurityDescriptor, lpbDaclPresent, *pDacl, lpbDaclDefaulted);
+ pSecurityDescriptor, lpbDaclPresent, pDacl, lpbDaclDefaulted);
if (lpsd->Revision != SECURITY_DESCRIPTOR_REVISION)
return STATUS_UNKNOWN_REVISION ;
@@ -438,14 +440,12 @@ NTSTATUS WINAPI RtlGetDaclSecurityDescri
if ( (*lpbDaclPresent = (SE_DACL_PRESENT & lpsd->Control) ? 1 : 0) )
{
if ( SE_SELF_RELATIVE & lpsd->Control)
- { *pDacl = (PACL) ((LPBYTE)lpsd + (DWORD)lpsd->Dacl);
- }
+ *pDacl = (PACL) ((LPBYTE)lpsd + (DWORD)lpsd->Dacl);
else
- { *pDacl = lpsd->Dacl;
- }
- }
+ *pDacl = lpsd->Dacl;
- *lpbDaclDefaulted = (( SE_DACL_DEFAULTED & lpsd->Control ) ? 1 : 0);
+ *lpbDaclDefaulted = (( SE_DACL_DEFAULTED & lpsd->Control ) ? 1 : 0);
+ }
return STATUS_SUCCESS;
}
@@ -498,19 +498,17 @@ NTSTATUS WINAPI RtlGetSaclSecurityDescri
pSecurityDescriptor, lpbSaclPresent, *pSacl, lpbSaclDefaulted);
if (lpsd->Revision != SECURITY_DESCRIPTOR_REVISION)
- return STATUS_UNKNOWN_REVISION ;
+ return STATUS_UNKNOWN_REVISION;
if ( (*lpbSaclPresent = (SE_SACL_PRESENT & lpsd->Control) ? 1 : 0) )
{
- if ( SE_SELF_RELATIVE & lpsd->Control)
- { *pSacl = (PACL) ((LPBYTE)lpsd + (DWORD)lpsd->Sacl);
- }
+ if (SE_SELF_RELATIVE & lpsd->Control)
+ *pSacl = (PACL) ((LPBYTE)lpsd + (DWORD)lpsd->Sacl);
else
- { *pSacl = lpsd->Sacl;
- }
- }
+ *pSacl = lpsd->Sacl;
- *lpbSaclDefaulted = (( SE_SACL_DEFAULTED & lpsd->Control ) ? 1 : 0);
+ *lpbSaclDefaulted = (( SE_SACL_DEFAULTED & lpsd->Control ) ? 1 : 0);
+ }
return STATUS_SUCCESS;
}
@@ -620,6 +618,7 @@ NTSTATUS WINAPI RtlSetGroupSecurityDescr
lpsd->Control &= ~SE_GROUP_DEFAULTED;
return STATUS_SUCCESS;
}
+
/**************************************************************************
* RtlGetGroupSecurityDescriptor [NTDLL.@]
*/
@@ -730,8 +729,8 @@ NTSTATUS WINAPI RtlMakeSelfRelativeSD(
/**************************************************************************
-+ * RtlSelfRelativeToAbsoluteSD [NTDLL.@]
-+ */
+ * RtlSelfRelativeToAbsoluteSD [NTDLL.@]
+ */
NTSTATUS WINAPI RtlSelfRelativeToAbsoluteSD(
IN PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
OUT PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,
@@ -940,6 +939,8 @@ NTSTATUS WINAPI RtlDeleteAce(PACL pAcl,
pAcl->AceCount--;
}
+ TRACE("pAcl=%p dwAceIndex=%ld status=0x%08lx\n", pAcl, dwAceIndex, status);
+
return status;
}
@@ -1265,7 +1266,7 @@ NTSTATUS WINAPI RtlQueryInformationAcl(
if (pAcl->AclSize < paclsize->AclBytesInUse)
{
- WARN("Acl has %ld bytes free\n", pAcl->AclSize - paclsize->AclBytesInUse);
+ WARN("Acl has %ld bytes free\n", paclsize->AclBytesFree);
paclsize->AclBytesFree = 0;
paclsize->AclBytesInUse = pAcl->AclSize;
}
More information about the wine-patches
mailing list