summaryrefslogtreecommitdiff
path: root/source3/modules
diff options
context:
space:
mode:
authorTim Prouty <tprouty@samba.org>2009-07-06 15:26:57 -0700
committerTim Prouty <tprouty@samba.org>2009-07-06 15:38:47 -0700
commit431e63cd8bfff6f67b6e6595ee5a054877709c0d (patch)
treea7b680971e2b9a74e6ab065a5742b158bb895ccc /source3/modules
parent38b081f852db83cf3c2cce41b564449070be4be2 (diff)
downloadsamba-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.c7
-rw-r--r--source3/modules/vfs_default.c12
-rw-r--r--source3/modules/vfs_streams_depot.c6
-rw-r--r--source3/modules/vfs_streams_xattr.c16
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) {