diff options
author | Jeremy Allison <jra@samba.org> | 2008-09-15 14:21:28 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2008-09-15 14:21:28 -0700 |
commit | 458101b5776057549b35181a75b745604ae47d48 (patch) | |
tree | aafbf4de7720232d7b374413b5a03b655b3fe4ba /source3/smbd | |
parent | 9c455879f02606127686cde50552af53ccff8cb8 (diff) | |
download | samba-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.c | 10 |
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; } |