From 036ed35b3bba237f68fec2f1c16173bec729474e Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Tue, 28 Apr 2020 14:43:20 +0200 Subject: [PATCH] vfs_default: use parent_smb_fname() Signed-off-by: Ralph Boehme Reviewed-by: Jeremy Allison --- source3/modules/vfs_default.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c index 2a7e04f79d1..de4fc5d6a1b 100644 --- a/source3/modules/vfs_default.c +++ b/source3/modules/vfs_default.c @@ -628,22 +628,25 @@ static int vfswrap_mkdirat(vfs_handle_struct *handle, mode_t mode) { int result; - const char *path = smb_fname->base_name; - char *parent = NULL; + struct smb_filename *parent = NULL; + bool ok; START_PROFILE(syscall_mkdirat); SMB_ASSERT(dirfsp == dirfsp->conn->cwd_fsp); - if (lp_inherit_acls(SNUM(handle->conn)) - && parent_dirname(talloc_tos(), path, &parent, NULL) - && directory_has_default_acl(handle->conn, parent)) { - mode = (0777 & lp_directory_mask(SNUM(handle->conn))); + if (lp_inherit_acls(SNUM(handle->conn))) { + ok = parent_smb_fname(talloc_tos(), smb_fname, &parent, NULL); + if (ok && directory_has_default_acl(handle->conn, + parent->base_name)) + { + mode = (0777 & lp_directory_mask(SNUM(handle->conn))); + } } TALLOC_FREE(parent); - result = mkdirat(dirfsp->fh->fd, path, mode); + result = mkdirat(dirfsp->fh->fd, smb_fname->base_name, mode); END_PROFILE(syscall_mkdirat); return result; -- 2.47.3