diff options
author | Tim Prouty <tprouty@samba.org> | 2009-07-06 15:26:57 -0700 |
---|---|---|
committer | Tim Prouty <tprouty@samba.org> | 2009-07-06 15:38:47 -0700 |
commit | 431e63cd8bfff6f67b6e6595ee5a054877709c0d (patch) | |
tree | a7b680971e2b9a74e6ab065a5742b158bb895ccc /source3/modules | |
parent | 38b081f852db83cf3c2cce41b564449070be4be2 (diff) | |
download | samba-431e63cd8bfff6f67b6e6595ee5a054877709c0d.tar.gz samba-431e63cd8bfff6f67b6e6595ee5a054877709c0d.tar.bz2 samba-431e63cd8bfff6f67b6e6595ee5a054877709c0d.zip |
s3: Update streaminfo implementations now that only base names are passed through the vfs
Diffstat (limited to 'source3/modules')
-rw-r--r-- | source3/modules/onefs_streams.c | 7 | ||||
-rw-r--r-- | source3/modules/vfs_default.c | 12 | ||||
-rw-r--r-- | source3/modules/vfs_streams_depot.c | 6 | ||||
-rw-r--r-- | source3/modules/vfs_streams_xattr.c | 16 |
4 files changed, 20 insertions, 21 deletions
diff --git a/source3/modules/onefs_streams.c b/source3/modules/onefs_streams.c index 2be490f52d..91917eef44 100644 --- a/source3/modules/onefs_streams.c +++ b/source3/modules/onefs_streams.c @@ -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)) { diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c index 7565e7bb65..c4db8fa393 100644 --- a/source3/modules/vfs_default.c +++ b/source3/modules/vfs_default.c @@ -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) { diff --git a/source3/modules/vfs_streams_depot.c b/source3/modules/vfs_streams_depot.c index dca18e0953..ba3b180244 100644 --- a/source3/modules/vfs_streams_depot.c +++ b/source3/modules/vfs_streams_depot.c @@ -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 { diff --git a/source3/modules/vfs_streams_xattr.c b/source3/modules/vfs_streams_xattr.c index 6137d01159..74b14ff93f 100644 --- a/source3/modules/vfs_streams_xattr.c +++ b/source3/modules/vfs_streams_xattr.c @@ -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) { |