From: Noel Power Date: Mon, 24 May 2021 22:55:59 +0000 (-0700) Subject: s3/smbd: pysmbd: Ensure SMB_VFS_GET_NT_ACL_AT() has an fsp when called. X-Git-Tag: tevent-0.11.0~595 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=32b92d7cdf127a506b46c26d1415a101cf531a08;p=thirdparty%2Fsamba.git s3/smbd: pysmbd: Ensure SMB_VFS_GET_NT_ACL_AT() has an fsp when called. Signed-off-by: Noel Power Reviewed-by: Jeremy Allison Reviewed-by: Ralph Boehme --- diff --git a/source3/smbd/pysmbd.c b/source3/smbd/pysmbd.c index ac1ed4d1ba1..bbbb1a8e556 100644 --- a/source3/smbd/pysmbd.c +++ b/source3/smbd/pysmbd.c @@ -300,19 +300,30 @@ static NTSTATUS get_nt_acl_conn(TALLOC_CTX *mem_ctx, { TALLOC_CTX *frame = talloc_stackframe(); NTSTATUS status; - struct smb_filename *smb_fname = synthetic_smb_fname(talloc_tos(), + int ret; + struct smb_filename *smb_fname = NULL; + + smb_fname = synthetic_smb_fname_split(frame, fname, - NULL, - NULL, - 0, - lp_posix_pathnames() ? - SMB_FILENAME_POSIX_PATH : 0); + lp_posix_pathnames()); if (smb_fname == NULL) { TALLOC_FREE(frame); return NT_STATUS_NO_MEMORY; } + ret = vfs_stat(conn, smb_fname); + if (ret == -1) { + TALLOC_FREE(frame); + return NT_STATUS_OBJECT_NAME_NOT_FOUND; + } + + status = openat_pathref_fsp(conn->cwd_fsp, smb_fname); + if (!NT_STATUS_IS_OK(status)) { + TALLOC_FREE(frame); + return status; + } + status = SMB_VFS_GET_NT_ACL_AT(conn, conn->cwd_fsp, smb_fname,