mirror of
https://github.com/samba-team/samba.git
synced 2025-08-08 13:49:29 +03:00
Fix old bug in openX code, exposed when "strict allocate" is set to true.
We need to return the file size here, not the allocation size, but we were not updating the stat struct after the vfs_set_filesize() call. Ensure we always use fresh data in openX replies. Jeremy. Autobuild-User: Jeremy Allison <jra@samba.org> Autobuild-Date: Thu Dec 16 02:37:58 CET 2010 on sn-devel-104
This commit is contained in:
@ -1985,12 +1985,16 @@ void reply_open_and_X(struct smb_request *req)
|
||||
reply_nterror(req, NT_STATUS_DISK_FULL);
|
||||
goto out;
|
||||
}
|
||||
smb_fname->st.st_ex_size =
|
||||
SMB_VFS_GET_ALLOC_SIZE(conn, fsp, &smb_fname->st);
|
||||
status = vfs_stat_fsp(fsp);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
close_file(req, fsp, ERROR_CLOSE);
|
||||
reply_nterror(req, status);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
fattr = dos_mode(conn, smb_fname);
|
||||
mtime = convert_timespec_to_time_t(smb_fname->st.st_ex_mtime);
|
||||
fattr = dos_mode(conn, fsp->fsp_name);
|
||||
mtime = convert_timespec_to_time_t(fsp->fsp_name->st.st_ex_mtime);
|
||||
if (fattr & aDIR) {
|
||||
close_file(req, fsp, ERROR_CLOSE);
|
||||
reply_nterror(req, NT_STATUS_ACCESS_DENIED);
|
||||
@ -2038,7 +2042,7 @@ void reply_open_and_X(struct smb_request *req)
|
||||
} else {
|
||||
srv_put_dos_date3((char *)req->outbuf,smb_vwv4,mtime);
|
||||
}
|
||||
SIVAL(req->outbuf,smb_vwv6,(uint32)smb_fname->st.st_ex_size);
|
||||
SIVAL(req->outbuf,smb_vwv6,(uint32)fsp->fsp_name->st.st_ex_size);
|
||||
SSVAL(req->outbuf,smb_vwv8,GET_OPENX_MODE(deny_mode));
|
||||
SSVAL(req->outbuf,smb_vwv11,smb_action);
|
||||
|
||||
|
Reference in New Issue
Block a user