{
SMB_STRUCT_STAT sbuf;
SMB_ACL_T posix_acl = NULL;
+ SMB_ACL_T def_acl = NULL;
struct pai_val *pal;
TALLOC_CTX *frame = talloc_stackframe();
NTSTATUS status;
/* Get the ACL from the fd. */
posix_acl = SMB_VFS_SYS_ACL_GET_FD(fsp, frame);
+ /* If it's a directory get the default POSIX ACL. */
+ if(fsp->fsp_flags.is_directory) {
+ def_acl = SMB_VFS_SYS_ACL_GET_FILE(fsp->conn,
+ fsp->fsp_name,
+ SMB_ACL_TYPE_DEFAULT,
+ frame);
+ def_acl = free_empty_sys_acl(fsp->conn, def_acl);
+ }
+
pal = fload_inherited_info(fsp);
status = posix_get_nt_acl_common(fsp->conn, fsp->fsp_name->base_name,
- &sbuf, pal, posix_acl, NULL,
+ &sbuf, pal, posix_acl, def_acl,
security_info, mem_ctx, ppdesc);
TALLOC_FREE(frame);
return status;