From: Ralph Boehme Date: Tue, 28 Apr 2020 12:43:20 +0000 (+0200) Subject: vfs_default: use parent_smb_fname() X-Git-Tag: ldb-2.2.0~836 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=036ed35b3bba237f68fec2f1c16173bec729474e;p=thirdparty%2Fsamba.git vfs_default: use parent_smb_fname() Signed-off-by: Ralph Boehme Reviewed-by: Jeremy Allison --- 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;