diff options
author | Jeremy Allison <jra@samba.org> | 2010-11-23 14:31:43 -0800 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2010-11-24 00:18:57 +0100 |
commit | 6af05f10c1626bbc6206c786af5ba0cec42ec3fa (patch) | |
tree | ea797fb0a152a5bb04aa984e784756a0242d8a0b /source3/modules | |
parent | df70a4a3b7886660dceab8ec9646ae449098851a (diff) | |
download | samba-6af05f10c1626bbc6206c786af5ba0cec42ec3fa.tar.gz samba-6af05f10c1626bbc6206c786af5ba0cec42ec3fa.tar.bz2 samba-6af05f10c1626bbc6206c786af5ba0cec42ec3fa.zip |
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.
Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Wed Nov 24 00:18:57 CET 2010 on sn-devel-104
Diffstat (limited to 'source3/modules')
-rw-r--r-- | 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 5fbf686e6b..3296ddc55c 100644 --- a/source3/modules/vfs_acl_common.c +++ b/source3/modules/vfs_acl_common.c @@ -726,6 +726,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; } @@ -734,9 +738,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); |