From a39d75de3057787e726a62d5eb0e7c51dc9af2ae Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Fri, 6 Sep 2024 12:40:43 +0200 Subject: [PATCH] smbd: call notify_rename() after dropping the lck in rename_internals_fsp() Same here, cf the explanation in the previous commit. Signed-off-by: Ralph Boehme Reviewed-by: Stefan Metzmacher --- source3/smbd/smb2_reply.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/source3/smbd/smb2_reply.c b/source3/smbd/smb2_reply.c index c877b578b66..bb438989a0f 100644 --- a/source3/smbd/smb2_reply.c +++ b/source3/smbd/smb2_reply.c @@ -1738,17 +1738,19 @@ NTSTATUS rename_internals_fsp(connection_struct *conn, &rhow); if (ret == 0) { uint32_t create_options = fh_get_private_options(fsp->fh); + struct smb_filename *old_fname = NULL; DBG_NOTICE("succeeded doing rename on " "%s -> %s\n", smb_fname_str_dbg(fsp->fsp_name), smb_fname_str_dbg(smb_fname_dst)); - notify_rename(conn, - fsp->fsp_flags.is_directory, - fsp->fsp_name, - smb_fname_dst); - + old_fname = cp_smb_filename(talloc_tos(), fsp->fsp_name); + if (old_fname == NULL) { + status = NT_STATUS_NO_MEMORY; + TALLOC_FREE(lck); + goto out; + } rename_open_files(conn, lck, fsp->file_id, fsp->name_hash, smb_fname_dst); @@ -1795,7 +1797,15 @@ NTSTATUS rename_internals_fsp(connection_struct *conn, fsp->fsp_flags.initial_delete_on_close = true; } } + TALLOC_FREE(lck); + + notify_rename(conn, + fsp->fsp_flags.is_directory, + old_fname, + smb_fname_dst); + + TALLOC_FREE(old_fname); status = NT_STATUS_OK; goto out; } -- 2.47.3