1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-03 13:47:25 +03:00

s3: pysmbd.c: init_files_struct(). All calls to SMB_VFS_FSTAT(fsp, &fsp->fsp_name->st) clobber fsp->fsp_name->st.st_ex_iflags.

If doing an SMB_VFS_FSTAT() returning onto the stat struct stored in the fsp,
we must call vfs_stat_fsp() as this preserves the iflags.

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

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
(cherry picked from commit c4193f11d1871051d4cce4521b1f444a083c9189)
This commit is contained in:
Jeremy Allison 2022-03-18 14:57:13 -07:00 committed by Jule Anger
parent 6d66132ed2
commit bbf4e324f7

View File

@ -176,7 +176,6 @@ static NTSTATUS init_files_struct(TALLOC_CTX *mem_ctx,
{
struct smb_filename *smb_fname = NULL;
int fd;
int ret;
mode_t saved_umask;
struct files_struct *fsp;
struct files_struct *fspcwd = NULL;
@ -230,13 +229,13 @@ static NTSTATUS init_files_struct(TALLOC_CTX *mem_ctx,
}
fsp_set_fd(fsp, fd);
ret = SMB_VFS_FSTAT(fsp, &smb_fname->st);
if (ret == -1) {
status = vfs_stat_fsp(fsp);
if (!NT_STATUS_IS_OK(status)) {
/* If we have an fd, this stat should succeed. */
DEBUG(0,("Error doing fstat on open file %s (%s)\n",
smb_fname_str_dbg(smb_fname),
strerror(errno) ));
return map_nt_error_from_unix(errno);
nt_errstr(status) ));
return status;
}
fsp->file_id = vfs_file_id_from_sbuf(conn, &smb_fname->st);