From: Jeremy Allison Date: Wed, 27 Jul 2022 19:23:42 +0000 (-0700) Subject: s3: smbd: Convert reply_ctemp() to use filename_convert_dirfsp(). X-Git-Tag: samba-4.17.0rc1~177 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f599e469066cd8048498067e083747a611f16342;p=thirdparty%2Fsamba.git s3: smbd: Convert reply_ctemp() to use filename_convert_dirfsp(). One less use of filename_convert(). Signed-off-by: Jeremy Allison Reviewed-by: Volker Lendecke --- diff --git a/source3/smbd/smb1_reply.c b/source3/smbd/smb1_reply.c index c74d76dbc85..52aa8ca1d30 100644 --- a/source3/smbd/smb1_reply.c +++ b/source3/smbd/smb1_reply.c @@ -2183,12 +2183,14 @@ void reply_ctemp(struct smb_request *req) char *wire_name = NULL; char *fname = NULL; uint32_t fattr; + struct files_struct *dirfsp = NULL; files_struct *fsp; int oplock_request; char *s; NTSTATUS status; int i; uint32_t ucf_flags; + NTTIME twrp = 0; TALLOC_CTX *ctx = talloc_tos(); START_PROFILE(SMBctemp); @@ -2226,11 +2228,16 @@ void reply_ctemp(struct smb_request *req) } ucf_flags = filename_create_ucf_flags(req, FILE_CREATE); - status = filename_convert(ctx, conn, - fname, - ucf_flags, - 0, - &smb_fname); + if (ucf_flags & UCF_GMT_PATHNAME) { + extract_snapshot_token(fname, &twrp); + } + status = filename_convert_dirfsp(ctx, + conn, + fname, + ucf_flags, + twrp, + &dirfsp, + &smb_fname); if (!NT_STATUS_IS_OK(status)) { if (NT_STATUS_EQUAL(status,NT_STATUS_PATH_NOT_COVERED)) { reply_botherror(req, NT_STATUS_PATH_NOT_COVERED, @@ -2245,7 +2252,7 @@ void reply_ctemp(struct smb_request *req) status = SMB_VFS_CREATE_FILE( conn, /* conn */ req, /* req */ - NULL, /* dirfsp */ + dirfsp, /* dirfsp */ smb_fname, /* fname */ FILE_GENERIC_READ | FILE_GENERIC_WRITE, /* access_mask */ FILE_SHARE_READ | FILE_SHARE_WRITE, /* share_access */ @@ -2264,6 +2271,7 @@ void reply_ctemp(struct smb_request *req) if (NT_STATUS_EQUAL(status, NT_STATUS_OBJECT_NAME_COLLISION)) { TALLOC_FREE(fname); + TALLOC_FREE(dirfsp); TALLOC_FREE(smb_fname); continue; }