summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2011-10-04 16:40:58 -0700
committerKarolin Seeger <kseeger@samba.org>2011-10-24 19:16:56 +0200
commita9fc6bd03469935470d220ce936e77d83b666058 (patch)
tree265c701490e22d944e1c6e81a3444c6e08b57843
parent8ffc3f4f206dfd729c943505cd36036882bc57ee (diff)
downloadsamba-a9fc6bd03469935470d220ce936e77d83b666058.tar.gz
samba-a9fc6bd03469935470d220ce936e77d83b666058.tar.xz
samba-a9fc6bd03469935470d220ce936e77d83b666058.zip
Fix bug #8507 - smbd doesn't correctly honor the "force create mode" bits from a cifsfs create.
Don't manipulate the new_dos_attributes bits until we know it's not a POSIX open. (cherry picked from commit 2bdf5042dd14283ae195d442d20385ed158367ae)
-rw-r--r--source3/smbd/open.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/source3/smbd/open.c b/source3/smbd/open.c
index 9048d6b74e9..70e6b4f56ec 100644
--- a/source3/smbd/open.c
+++ b/source3/smbd/open.c
@@ -1344,12 +1344,6 @@ static NTSTATUS open_file_ntcreate(connection_struct *conn,
ZERO_STRUCT(id);
- /* Windows allows a new file to be created and
- silently removes a FILE_ATTRIBUTE_DIRECTORY
- sent by the client. Do the same. */
-
- new_dos_attributes &= ~FILE_ATTRIBUTE_DIRECTORY;
-
if (conn->printer) {
/*
* Printers are handled completely differently.
@@ -1383,6 +1377,12 @@ static NTSTATUS open_file_ntcreate(connection_struct *conn,
unx_mode = (mode_t)(new_dos_attributes & ~FILE_FLAG_POSIX_SEMANTICS);
new_dos_attributes = 0;
} else {
+ /* Windows allows a new file to be created and
+ silently removes a FILE_ATTRIBUTE_DIRECTORY
+ sent by the client. Do the same. */
+
+ new_dos_attributes &= ~FILE_ATTRIBUTE_DIRECTORY;
+
/* We add aARCH to this as this mode is only used if the file is
* created new. */
unx_mode = unix_mode(conn, new_dos_attributes | aARCH,