From: Jeremy Allison Date: Fri, 18 Mar 2022 18:45:50 +0000 (-0700) Subject: s3: smbd: smbd_smb2_getinfo_send(). All calls to SMB_VFS_FSTAT(fsp, &fsp->fsp_name... X-Git-Tag: tevent-0.12.0~261 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7fb2038faca256c03c2bd7d982f39f5b1a57f784;p=thirdparty%2Fsamba.git s3: smbd: smbd_smb2_getinfo_send(). 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/smbd/smb2_getinfo.c b/source3/smbd/smb2_getinfo.c index a918cc03385..0320dcc5fde 100644 --- a/source3/smbd/smb2_getinfo.c +++ b/source3/smbd/smb2_getinfo.c @@ -362,11 +362,11 @@ static struct tevent_req *smbd_smb2_getinfo_send(TALLOC_CTX *mem_ctx, * Original code - this is an open file. */ - if (SMB_VFS_FSTAT(fsp, &fsp->fsp_name->st) != 0) { + status = vfs_stat_fsp(fsp); + if (!NT_STATUS_IS_OK(status)) { DEBUG(3, ("smbd_smb2_getinfo_send: " "fstat of %s failed (%s)\n", - fsp_fnum_dbg(fsp), strerror(errno))); - status = map_nt_error_from_unix(errno); + fsp_fnum_dbg(fsp), nt_errstr(status))); tevent_req_nterror(req, status); return tevent_req_post(req, ev); }