1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-24 21:49:29 +03:00

s3: smbd: Preserve the fsp->fsp_name->st buf across a MSG_SMB_FILE_RENAME message.

Remove knownfail.d/rename-full-info

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15038

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>

(Back-ported from commit 06bfac2125)
This commit is contained in:
Jeremy Allison
2022-03-28 18:39:55 -07:00
committed by Jule Anger
parent a68c572869
commit 414d890b65
2 changed files with 20 additions and 1 deletions

View File

@ -1 +0,0 @@
^samba3.smb2.rename.close-full-information\(fileserver\)

View File

@ -4831,16 +4831,36 @@ void msg_file_was_renamed(struct messaging_context *msg_ctx,
}
if (strcmp(fsp->conn->connectpath, msg->servicepath) == 0) {
SMB_STRUCT_STAT fsp_orig_sbuf;
NTSTATUS status;
DBG_DEBUG("renaming file %s from %s -> %s\n",
fsp_fnum_dbg(fsp),
fsp_str_dbg(fsp),
smb_fname_str_dbg(smb_fname));
/*
* The incoming smb_fname here has an
* invalid stat struct from synthetic_smb_fname()
* above.
* Preserve the existing stat from the
* open fsp after fsp_set_smb_fname()
* overwrites with the invalid stat.
*
* (We could just copy this into
* smb_fname->st, but keep this code
* identical to the fix in rename_open_files()
* for clarity.
*
* We will do an fstat before returning
* any of this metadata to the client anyway.
*/
fsp_orig_sbuf = fsp->fsp_name->st;
status = fsp_set_smb_fname(fsp, smb_fname);
if (!NT_STATUS_IS_OK(status)) {
DBG_DEBUG("fsp_set_smb_fname failed: %s\n",
nt_errstr(status));
}
fsp->fsp_name->st = fsp_orig_sbuf;
} else {
/* TODO. JRA. */
/*