s3: smbd: open_file(). All calls to SMB_VFS_FSTAT(fsp, &fsp->fsp_name->st) clobber...
authorJeremy Allison <jra@samba.org>
Fri, 18 Mar 2022 19:11:23 +0000 (12:11 -0700)
committerJeremy Allison <jra@samba.org>
Thu, 24 Mar 2022 16:28:37 +0000 (16:28 +0000)
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>
source3/smbd/open.c

index 8b44574c80646ab96b74eca6327e9c18219ebdf3..8f6bb8eb12041414dcb0db0dcfcc46d0aa5cd9cc 100644 (file)
@@ -1544,12 +1544,11 @@ static NTSTATUS open_file(files_struct *fsp,
                        }
 
                        if (need_re_stat) {
-                               ret = SMB_VFS_FSTAT(fsp, &smb_fname->st);
+                               status = vfs_stat_fsp(fsp);
                                /*
                                 * If we have an fd, this stat should succeed.
                                 */
-                               if (ret == -1) {
-                                       status = map_nt_error_from_unix(errno);
+                               if (!NT_STATUS_IS_OK(status)) {
                                        DBG_ERR("Error doing fstat on open "
                                                "file %s (%s)\n",
                                                 smb_fname_str_dbg(smb_fname),