From: Ralph Boehme Date: Mon, 25 Jan 2021 14:48:59 +0000 (+0100) Subject: smbd: use parent_pathref() in smb_set_file_unix_link() X-Git-Tag: tevent-0.11.0~1909 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=02dd66bf4b5be4fbe413c08827dc64168a2f882b;p=thirdparty%2Fsamba.git smbd: use parent_pathref() in smb_set_file_unix_link() Signed-off-by: Ralph Boehme Reviewed-by: Jeremy Allison --- diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index 36a18edd1e0..ba19fd2897b 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -7011,7 +7011,6 @@ static NTSTATUS smb_set_file_unix_link(connection_struct *conn, int ret; struct smb_filename *parent_fname = NULL; struct smb_filename *base_name = NULL; - bool ok; /* Set a symbolic link. */ /* Don't allow this if follow links is false. */ @@ -7044,25 +7043,12 @@ static NTSTATUS smb_set_file_unix_link(connection_struct *conn, DEBUG(10,("smb_set_file_unix_link: SMB_SET_FILE_UNIX_LINK doing symlink %s -> %s\n", new_smb_fname->base_name, link_target )); - ok = parent_smb_fname(ctx, + status = parent_pathref(talloc_tos(), + conn->cwd_fsp, new_smb_fname, &parent_fname, &base_name); - if (!ok) { - return NT_STATUS_NO_MEMORY; - } - - ret = vfs_stat(conn, parent_fname); - if (ret == -1) { - TALLOC_FREE(parent_fname); - return map_nt_error_from_unix(errno); - } - status = openat_pathref_fsp(conn->cwd_fsp, parent_fname); - 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(parent_fname); return status; }