From: Jeremy Allison Date: Fri, 18 Mar 2022 22:04:34 +0000 (-0700) Subject: s3: cmd_vfs: cmd_set_nt_acl(). All calls to SMB_VFS_FSTAT(fsp, &fsp->fsp_name->st... X-Git-Tag: tevent-0.12.0~262 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=23d5c909286d438534f1a7defb2faacd1877fea1;p=thirdparty%2Fsamba.git s3: cmd_vfs: cmd_set_nt_acl(). 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 Reviewed-by: Ralph Boehme --- diff --git a/source3/torture/cmd_vfs.c b/source3/torture/cmd_vfs.c index b1c8b128e0b..470f039c4a3 100644 --- a/source3/torture/cmd_vfs.c +++ b/source3/torture/cmd_vfs.c @@ -1712,7 +1712,6 @@ static NTSTATUS cmd_fset_nt_acl(struct vfs_state *vfs, TALLOC_CTX *mem_ctx, static NTSTATUS cmd_set_nt_acl(struct vfs_state *vfs, TALLOC_CTX *mem_ctx, int argc, const char **argv) { int flags; - int ret; mode_t mode; files_struct *fsp; struct files_struct *fspcwd = NULL; @@ -1783,18 +1782,13 @@ static NTSTATUS cmd_set_nt_acl(struct vfs_state *vfs, TALLOC_CTX *mem_ctx, int a } fsp_set_fd(fsp, fd); - status = NT_STATUS_OK; - 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) )); - status = map_nt_error_from_unix(errno); - } - - if (!NT_STATUS_IS_OK(status)) { + nt_errstr(status) )); goto out; }