mirror of
https://github.com/samba-team/samba.git
synced 2024-12-25 23:21:54 +03:00
smbd: Alternative fix for smb2.stream.attributes2 test
It confused me that a function that supposedly just retrieves dos attributes also updates something. Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Ralph Boehme <slow@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
This commit is contained in:
parent
9544332084
commit
7dca8a9686
@ -1292,6 +1292,10 @@ struct timespec get_create_timespec(connection_struct *conn,
|
||||
struct files_struct *fsp,
|
||||
const struct smb_filename *smb_fname)
|
||||
{
|
||||
if (fsp != NULL) {
|
||||
struct files_struct *meta_fsp = metadata_fsp(fsp);
|
||||
return meta_fsp->fsp_name->st.st_ex_btime;
|
||||
}
|
||||
return smb_fname->st.st_ex_btime;
|
||||
}
|
||||
|
||||
|
@ -1303,37 +1303,11 @@ NTSTATUS vfs_fget_dos_attributes(struct files_struct *fsp,
|
||||
NTSTATUS status;
|
||||
|
||||
/*
|
||||
* First make sure to pass the base_fsp to the VFS
|
||||
* Make sure to pass the base_fsp to the VFS
|
||||
*/
|
||||
status = SMB_VFS_FGET_DOS_ATTRIBUTES(
|
||||
fsp->conn, metadata_fsp(fsp), dosmode);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
return status;
|
||||
}
|
||||
|
||||
/*
|
||||
* If this isn't a stream fsp we're done, ...
|
||||
*/
|
||||
if (!fsp_is_alternate_stream(fsp)) {
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* ...otherwise the VFS might have updated the btime, propagate the
|
||||
* btime from the base_fsp to the stream fsp.
|
||||
*/
|
||||
|
||||
if (fsp->base_fsp->fsp_name->st.st_ex_iflags & ST_EX_IFLAG_CALCULATED_BTIME) {
|
||||
/*
|
||||
* Not a value from backend storage, ignore it
|
||||
*/
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
||||
update_stat_ex_create_time(&fsp->fsp_name->st,
|
||||
fsp->base_fsp->fsp_name->st.st_ex_btime);
|
||||
|
||||
return NT_STATUS_OK;
|
||||
return status;
|
||||
}
|
||||
|
||||
static struct smb_vfs_deny_state *smb_vfs_deny_global;
|
||||
|
Loading…
Reference in New Issue
Block a user