From 7b03c470bafeb823b445be1a1baf95a9e0afe632 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 23 Nov 2010 14:21:25 -0800 Subject: [PATCH] Fix bug #7812 - vfs_acl_xattr/vfs_acl_tdb: ACL inheritance cannot be disabled We were losing the incoming security descriptor revision number and most importantly the "type" field as sent by the client. Ensure we correctly store these in the xattr object. Jeremy. --- source3/modules/vfs_acl_common.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/source3/modules/vfs_acl_common.c b/source3/modules/vfs_acl_common.c index c91765c..f1884f5 100644 --- a/source3/modules/vfs_acl_common.c +++ b/source3/modules/vfs_acl_common.c @@ -723,6 +723,10 @@ static NTSTATUS fset_nt_acl_common(vfs_handle_struct *handle, files_struct *fsp, return status; } + psd->revision = orig_psd->revision; + /* All our SD's are self relative. */ + psd->type = orig_psd->type | SEC_DESC_SELF_RELATIVE; + if ((security_info_sent & SECINFO_OWNER) && (orig_psd->owner_sid != NULL)) { psd->owner_sid = orig_psd->owner_sid; } @@ -731,9 +735,11 @@ static NTSTATUS fset_nt_acl_common(vfs_handle_struct *handle, files_struct *fsp, } if (security_info_sent & SECINFO_DACL) { psd->dacl = orig_psd->dacl; + psd->type |= SEC_DESC_DACL_PRESENT; } if (security_info_sent & SECINFO_SACL) { psd->sacl = orig_psd->sacl; + psd->type |= SEC_DESC_SACL_PRESENT; } status = SMB_VFS_NEXT_FSET_NT_ACL(handle, fsp, security_info_sent, psd); -- 1.7.3.1