From a209f6be5869f7e83f26b9866b3ef71e0f9a4678 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Fri, 20 Jan 2012 16:37:50 -0800 Subject: [PATCH] Fix bug 8636 - When returning an ACL without SECINFO_DACL requested, we still set SEC_DESC_DACL_PRESENT in the type field. --- source3/modules/vfs_acl_common.c | 8 ++++++-- source3/smbd/nttrans.c | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/source3/modules/vfs_acl_common.c b/source3/modules/vfs_acl_common.c index 17e1874..3ca0384 100644 --- a/source3/modules/vfs_acl_common.c +++ b/source3/modules/vfs_acl_common.c @@ -408,9 +408,11 @@ static NTSTATUS get_nt_acl_internal(vfs_handle_struct *handle, psd->group_sid = NULL; } if (!(security_info & DACL_SECURITY_INFORMATION)) { + psd->type &= ~SEC_DESC_DACL_PRESENT; psd->dacl = NULL; } if (!(security_info & SACL_SECURITY_INFORMATION)) { + psd->type &= ~SEC_DESC_SACL_PRESENT; psd->sacl = NULL; } @@ -532,7 +534,8 @@ static NTSTATUS get_parent_acl_common(vfs_handle_struct *handle, parent_name, (SECINFO_OWNER | SECINFO_GROUP | - SECINFO_DACL), + SECINFO_DACL | + SECINFO_SACL), pp_parent_desc); if (!NT_STATUS_IS_OK(status)) { @@ -615,7 +618,8 @@ static int open_acl_common(vfs_handle_struct *handle, fname, (OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION | - DACL_SECURITY_INFORMATION), + DACL_SECURITY_INFORMATION | + SACL_SECURITY_INFORMATION), &pdesc); if (NT_STATUS_IS_OK(status)) { /* See if we can access it. */ diff --git a/source3/smbd/nttrans.c b/source3/smbd/nttrans.c index decb07c..6fbbed9 100644 --- a/source3/smbd/nttrans.c +++ b/source3/smbd/nttrans.c @@ -1883,9 +1883,11 @@ static void call_nt_transact_query_security_desc(connection_struct *conn, psd->group_sid = NULL; } if (!(security_info_wanted & SECINFO_DACL)) { + psd->type &= ~SEC_DESC_DACL_PRESENT; psd->dacl = NULL; } if (!(security_info_wanted & SECINFO_SACL)) { + psd->type &= ~SEC_DESC_SACL_PRESENT; psd->sacl = NULL; } -- 1.7.7.3