summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2008-09-15 14:21:28 -0700
committerJeremy Allison <jra@samba.org>2008-09-15 14:21:28 -0700
commit458101b5776057549b35181a75b745604ae47d48 (patch)
treeaafbf4de7720232d7b374413b5a03b655b3fe4ba /source3/smbd
parent9c455879f02606127686cde50552af53ccff8cb8 (diff)
downloadsamba-458101b5776057549b35181a75b745604ae47d48.tar.gz
samba-458101b5776057549b35181a75b745604ae47d48.tar.bz2
samba-458101b5776057549b35181a75b745604ae47d48.zip
Fix bug 5761 "open of mangled directory name results in 'is a stream name'"
reported by Regan Heath <Regan.Heath@BridgeHeadSoftware.com>. Jeremy.
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/open.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/source3/smbd/open.c b/source3/smbd/open.c
index 8b32907a4b..71191475b3 100644
--- a/source3/smbd/open.c
+++ b/source3/smbd/open.c
@@ -1852,7 +1852,8 @@ NTSTATUS open_file_ntcreate(connection_struct *conn,
/* Handle strange delete on close create semantics. */
if ((create_options & FILE_DELETE_ON_CLOSE)
- && (is_ntfs_stream_name(fname)
+ && (((conn->fs_capabilities & FILE_NAMED_STREAMS)
+ && is_ntfs_stream_name(fname))
|| can_set_initial_delete_on_close(lck))) {
status = can_set_delete_on_close(fsp, True, new_dos_attributes);
@@ -2116,7 +2117,9 @@ NTSTATUS open_directory(connection_struct *conn,
(unsigned int)create_disposition,
(unsigned int)file_attributes));
- if (!(file_attributes & FILE_FLAG_POSIX_SEMANTICS) && is_ntfs_stream_name(fname)) {
+ if (!(file_attributes & FILE_FLAG_POSIX_SEMANTICS) &&
+ (conn->fs_capabilities & FILE_NAMED_STREAMS) &&
+ is_ntfs_stream_name(fname)) {
DEBUG(2, ("open_directory: %s is a stream name!\n", fname));
return NT_STATUS_NOT_A_DIRECTORY;
}
@@ -2907,7 +2910,8 @@ NTSTATUS create_file(connection_struct *conn,
* Check to see if this is a mac fork of some kind.
*/
- if (is_ntfs_stream_name(fname)) {
+ if ((conn->fs_capabilities & FILE_NAMED_STREAMS) &&
+ is_ntfs_stream_name(fname)) {
status = NT_STATUS_OBJECT_PATH_NOT_FOUND;
goto fail;
}