From e5adfe64fc116defaba0aea376f81a31b70e1e4d Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Thu, 12 Nov 2020 12:51:04 +0100 Subject: [PATCH] smbd: use openat_pathref_fsp() in get_file_handle_for_metadata() Ensures we have a pathref handle in the smb_fname we pass to SMB_VFS_CREATE_FILE(). As the create_disposition is FILE_OPEN we just return the error if openat_pathref_fsp() fails Signed-off-by: Ralph Boehme Reviewed-by: Jeremy Allison --- source3/smbd/dosmode.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source3/smbd/dosmode.c b/source3/smbd/dosmode.c index b2cb83d9a94..9fc5f6ece6c 100644 --- a/source3/smbd/dosmode.c +++ b/source3/smbd/dosmode.c @@ -1392,6 +1392,15 @@ static NTSTATUS get_file_handle_for_metadata(connection_struct *conn, return NT_STATUS_NO_MEMORY; } + status = openat_pathref_fsp(conn->cwd_fsp, smb_fname_cp); + if (NT_STATUS_EQUAL(status, NT_STATUS_STOPPED_ON_SYMLINK)) { + status = NT_STATUS_OBJECT_NAME_NOT_FOUND; + } + if (!NT_STATUS_IS_OK(status)) { + TALLOC_FREE(smb_fname_cp); + return status; + } + /* Opens an INTERNAL_OPEN_ONLY write handle. */ status = SMB_VFS_CREATE_FILE( conn, /* conn */ -- 2.47.3