Fix bug 5761 "open of mangled directory name results in 'is a stream name'"
authorJeremy Allison <jra@samba.org>
Mon, 15 Sep 2008 21:21:28 +0000 (14:21 -0700)
committerJeremy Allison <jra@samba.org>
Mon, 15 Sep 2008 21:21:28 +0000 (14:21 -0700)
reported by Regan Heath <Regan.Heath@BridgeHeadSoftware.com>.
Jeremy.

source3/smbd/open.c

index 8b32907a4b6e7e80362b00c60d4ff007c3a00f42..71191475b365572ce212b106babc8bc07653f772 100644 (file)
@@ -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;
                        }