diff options
author | Jeremy Allison <jra@samba.org> | 2009-12-02 12:29:16 -0800 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2009-12-02 12:29:16 -0800 |
commit | 148e79d156d92b41dfe7d6ae6f8cd2e571a3bee6 (patch) | |
tree | 18946ab6ba436e8b6a541b73489057b42e2f150c /source3 | |
parent | 95c18626107484d5d1d475e34fc4dde03cfe6ff5 (diff) | |
download | samba-148e79d156d92b41dfe7d6ae6f8cd2e571a3bee6.tar.gz samba-148e79d156d92b41dfe7d6ae6f8cd2e571a3bee6.tar.bz2 samba-148e79d156d92b41dfe7d6ae6f8cd2e571a3bee6.zip |
Ensure check_parent_acl_common() only looks at stored
blobs - returns NT_STATUS_OK if there aren't any.
Jeremy.
Diffstat (limited to 'source3')
-rw-r--r-- | source3/modules/vfs_acl_common.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/source3/modules/vfs_acl_common.c b/source3/modules/vfs_acl_common.c index ff97a04c73..68bf0b0530 100644 --- a/source3/modules/vfs_acl_common.c +++ b/source3/modules/vfs_acl_common.c @@ -493,14 +493,28 @@ static NTSTATUS check_parent_acl_common(vfs_handle_struct *handle, return NT_STATUS_NO_MEMORY; } - status = SMB_VFS_GET_NT_ACL(handle->conn, + status = get_nt_acl_internal(handle, + NULL, parent_name, (OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION), &parent_desc); + + if (NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND)) { + /* No Windows ACL stored as a blob. Let the + * underlying filesystem take care of checking + * permissions. */ + DEBUG(10,("check_parent_acl_common: no Windows ACL blob " + "stored on directory %s for " + "path %s\n", + parent_name, + path )); + return NT_STATUS_OK; + } + if (!NT_STATUS_IS_OK(status)) { - DEBUG(10,("check_parent_acl_common: SMB_VFS_GET_NT_ACL " + DEBUG(10,("check_parent_acl_common: get_nt_acl_internal " "on directory %s for " "path %s returned %s\n", parent_name, |