summaryrefslogtreecommitdiff
path: root/source3/modules/vfs_acl_common.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2010-11-23 14:31:43 -0800
committerJeremy Allison <jra@samba.org>2010-11-24 00:18:57 +0100
commit6af05f10c1626bbc6206c786af5ba0cec42ec3fa (patch)
treeea797fb0a152a5bb04aa984e784756a0242d8a0b /source3/modules/vfs_acl_common.c
parentdf70a4a3b7886660dceab8ec9646ae449098851a (diff)
downloadsamba-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/vfs_acl_common.c')
-rw-r--r--source3/modules/vfs_acl_common.c6
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);