From: Jeremy Allison Date: Thu, 28 Jul 2022 19:32:07 +0000 (-0700) Subject: s3: smbd: Convert smb_file_link_information() to use filename_convert_dirfsp(). X-Git-Tag: samba-4.17.0rc1~126 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0e7a151c2f76c8746ad2a374447f6e3233516dee;p=thirdparty%2Fsamba.git s3: smbd: Convert smb_file_link_information() to use filename_convert_dirfsp(). One less use of filename_convert(). Later we should optimize this by passing in the src_dirfsp from the caller. Signed-off-by: Jeremy Allison Reviewed-by: Volker Lendecke --- diff --git a/source3/smbd/smb2_trans2.c b/source3/smbd/smb2_trans2.c index f2d6e59da34..fb1b07ee588 100644 --- a/source3/smbd/smb2_trans2.c +++ b/source3/smbd/smb2_trans2.c @@ -5068,9 +5068,11 @@ static NTSTATUS smb_file_link_information(connection_struct *conn, bool overwrite; uint32_t len; char *newname = NULL; + struct files_struct *dst_dirfsp = NULL; struct smb_filename *smb_fname_dst = NULL; NTSTATUS status = NT_STATUS_OK; uint32_t ucf_flags = ucf_flags_from_smb_request(req); + NTTIME dst_twrp = 0; TALLOC_CTX *ctx = talloc_tos(); if (!fsp) { @@ -5115,12 +5117,16 @@ static NTSTATUS smb_file_link_information(connection_struct *conn, DEBUG(10,("smb_file_link_information: got name |%s|\n", newname)); - status = filename_convert(ctx, - conn, - newname, - ucf_flags, - 0, - &smb_fname_dst); + if (ucf_flags & UCF_GMT_PATHNAME) { + extract_snapshot_token(newname, &dst_twrp); + } + status = filename_convert_dirfsp(ctx, + conn, + newname, + ucf_flags, + dst_twrp, + &dst_dirfsp, + &smb_fname_dst); if (!NT_STATUS_IS_OK(status)) { return status; } @@ -5140,7 +5146,7 @@ static NTSTATUS smb_file_link_information(connection_struct *conn, overwrite, NULL, /* src_dirfsp */ fsp->fsp_name, - NULL, /* dst_dirfsp */ + dst_dirfsp, /* dst_dirfsp */ smb_fname_dst); TALLOC_FREE(smb_fname_dst);