mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
s3: Update streaminfo implementations now that only base names are passed through the vfs
This commit is contained in:
parent
38b081f852
commit
431e63cd8b
@ -739,17 +739,10 @@ NTSTATUS onefs_streaminfo(vfs_handle_struct *handle,
|
||||
|
||||
/* Get a valid stat. */
|
||||
if ((fsp != NULL) && (fsp->fh->fd != -1)) {
|
||||
if (is_ntfs_stream_name(fsp->fsp_name)) {
|
||||
return NT_STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
ret = SMB_VFS_FSTAT(fsp, &sbuf);
|
||||
} else {
|
||||
struct smb_filename *smb_fname = NULL;
|
||||
|
||||
if (is_ntfs_stream_name(fname)) {
|
||||
return NT_STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
status = create_synthetic_smb_fname(talloc_tos(), fname, NULL,
|
||||
NULL, &smb_fname);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
|
@ -1151,7 +1151,17 @@ static NTSTATUS vfswrap_streaminfo(vfs_handle_struct *handle,
|
||||
ret = SMB_VFS_FSTAT(fsp, &sbuf);
|
||||
}
|
||||
else {
|
||||
ret = vfs_stat_smb_fname(handle->conn, fname, &sbuf);
|
||||
struct smb_filename *smb_fname = NULL;
|
||||
NTSTATUS status;
|
||||
|
||||
status = create_synthetic_smb_fname(talloc_tos(), fname, NULL,
|
||||
NULL, &smb_fname);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
return status;
|
||||
}
|
||||
ret = SMB_VFS_STAT(handle->conn, smb_fname);
|
||||
sbuf = smb_fname->st;
|
||||
TALLOC_FREE(smb_fname);
|
||||
}
|
||||
|
||||
if (ret == -1) {
|
||||
|
@ -819,15 +819,9 @@ static NTSTATUS streams_depot_streaminfo(vfs_handle_struct *handle,
|
||||
}
|
||||
|
||||
if ((fsp != NULL) && (fsp->fh->fd != -1)) {
|
||||
if (is_ntfs_stream_name(fsp->fsp_name)) {
|
||||
return NT_STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
ret = SMB_VFS_NEXT_FSTAT(handle, fsp, &smb_fname_base->st);
|
||||
}
|
||||
else {
|
||||
if (is_ntfs_stream_name(fname)) {
|
||||
return NT_STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
if (lp_posix_pathnames()) {
|
||||
ret = SMB_VFS_NEXT_LSTAT(handle, smb_fname_base);
|
||||
} else {
|
||||
|
@ -785,20 +785,22 @@ static NTSTATUS streams_xattr_streaminfo(vfs_handle_struct *handle,
|
||||
struct streaminfo_state state;
|
||||
|
||||
if ((fsp != NULL) && (fsp->fh->fd != -1)) {
|
||||
if (is_ntfs_stream_name(fsp->fsp_name)) {
|
||||
return NT_STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
ret = SMB_VFS_FSTAT(fsp, &sbuf);
|
||||
}
|
||||
else {
|
||||
if (is_ntfs_stream_name(fname)) {
|
||||
return NT_STATUS_INVALID_PARAMETER;
|
||||
struct smb_filename *smb_fname = NULL;
|
||||
status = create_synthetic_smb_fname(talloc_tos(), fname, NULL,
|
||||
NULL, &smb_fname);
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
return status;
|
||||
}
|
||||
if (lp_posix_pathnames()) {
|
||||
ret = vfs_lstat_smb_fname(handle->conn, fname, &sbuf);
|
||||
ret = SMB_VFS_LSTAT(handle->conn, smb_fname);
|
||||
} else {
|
||||
ret = vfs_stat_smb_fname(handle->conn, fname, &sbuf);
|
||||
ret = SMB_VFS_STAT(handle->conn, smb_fname);
|
||||
}
|
||||
sbuf = smb_fname->st;
|
||||
TALLOC_FREE(smb_fname);
|
||||
}
|
||||
|
||||
if (ret == -1) {
|
||||
|
Loading…
Reference in New Issue
Block a user