summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/smbd/filename.c18
-rw-r--r--source3/smbd/open.c2
2 files changed, 11 insertions, 9 deletions
diff --git a/source3/smbd/filename.c b/source3/smbd/filename.c
index 1d44c7498e..10e9583049 100644
--- a/source3/smbd/filename.c
+++ b/source3/smbd/filename.c
@@ -214,16 +214,18 @@ NTSTATUS unix_convert(TALLOC_CTX *ctx,
return NT_STATUS_NO_MEMORY;
}
- stream = strchr_m(name, ':');
+ if (!lp_posix_pathnames()) {
+ stream = strchr_m(name, ':');
- if (stream != NULL) {
- char *tmp = talloc_strdup(ctx, stream);
- if (tmp == NULL) {
- TALLOC_FREE(name);
- return NT_STATUS_NO_MEMORY;
+ if (stream != NULL) {
+ char *tmp = talloc_strdup(ctx, stream);
+ if (tmp == NULL) {
+ TALLOC_FREE(name);
+ return NT_STATUS_NO_MEMORY;
+ }
+ *stream = '\0';
+ stream = tmp;
}
- *stream = '\0';
- stream = tmp;
}
/*
diff --git a/source3/smbd/open.c b/source3/smbd/open.c
index 0d6e07a032..ad221c3227 100644
--- a/source3/smbd/open.c
+++ b/source3/smbd/open.c
@@ -2106,7 +2106,7 @@ NTSTATUS open_directory(connection_struct *conn,
(unsigned int)create_disposition,
(unsigned int)file_attributes));
- if (is_ntfs_stream_name(fname)) {
+ if (!(file_attributes & FILE_FLAG_POSIX_SEMANTICS) && is_ntfs_stream_name(fname)) {
DEBUG(2, ("open_directory: %s is a stream name!\n", fname));
return NT_STATUS_NOT_A_DIRECTORY;
}