Alexandre Julliard : ntdll: Fix RtlGetSacl/ DaclSecurityDescriptor for relative descriptors on 64-bit.
Alexandre Julliard
julliard at winehq.org
Wed Mar 9 11:12:49 CST 2011
Module: wine
Branch: master
Commit: ab7efe727363b52e31ff7a29763a1bcaa623efe1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ab7efe727363b52e31ff7a29763a1bcaa623efe1
Author: Alexandre Julliard <julliard at winehq.org>
Date: Wed Mar 9 13:44:11 2011 +0100
ntdll: Fix RtlGetSacl/DaclSecurityDescriptor for relative descriptors on 64-bit.
---
dlls/ntdll/sec.c | 30 ++++++++++++++++++------------
1 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/dlls/ntdll/sec.c b/dlls/ntdll/sec.c
index 6784848..c8e8a4d 100644
--- a/dlls/ntdll/sec.c
+++ b/dlls/ntdll/sec.c
@@ -604,12 +604,15 @@ NTSTATUS WINAPI RtlGetDaclSecurityDescriptor(
if ( (*lpbDaclPresent = (SE_DACL_PRESENT & lpsd->Control) ? 1 : 0) )
{
- if ((SE_SELF_RELATIVE & lpsd->Control) && lpsd->Dacl)
- *pDacl = (PACL)SELF_RELATIVE_FIELD( lpsd, Dacl );
- else
- *pDacl = lpsd->Dacl;
+ if (lpsd->Control & SE_SELF_RELATIVE)
+ {
+ SECURITY_DESCRIPTOR_RELATIVE *sdr = pSecurityDescriptor;
+ if (sdr->Dacl) *pDacl = (PACL)SELF_RELATIVE_FIELD( sdr, Dacl );
+ else *pDacl = NULL;
+ }
+ else *pDacl = lpsd->Dacl;
- *lpbDaclDefaulted = (( SE_DACL_DEFAULTED & lpsd->Control ) ? 1 : 0);
+ *lpbDaclDefaulted = (lpsd->Control & SE_DACL_DEFAULTED) != 0;
}
else
{
@@ -673,12 +676,15 @@ NTSTATUS WINAPI RtlGetSaclSecurityDescriptor(
if ( (*lpbSaclPresent = (SE_SACL_PRESENT & lpsd->Control) ? 1 : 0) )
{
- if ((SE_SELF_RELATIVE & lpsd->Control) && lpsd->Sacl)
- *pSacl = (PACL)SELF_RELATIVE_FIELD( lpsd, Sacl );
- else
- *pSacl = lpsd->Sacl;
+ if (lpsd->Control & SE_SELF_RELATIVE)
+ {
+ SECURITY_DESCRIPTOR_RELATIVE *sdr = pSecurityDescriptor;
+ if (sdr->Sacl) *pSacl = (PACL)SELF_RELATIVE_FIELD( sdr, Sacl );
+ else *pSacl = NULL;
+ }
+ else *pSacl = lpsd->Sacl;
- *lpbSaclDefaulted = (( SE_SACL_DEFAULTED & lpsd->Control ) ? 1 : 0);
+ *lpbSaclDefaulted = (lpsd->Control & SE_SACL_DEFAULTED) != 0;
}
return STATUS_SUCCESS;
}
More information about the wine-cvs
mailing list