summaryrefslogtreecommitdiff
path: root/source3/smbd/open.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2011-10-04 14:46:00 -0700
committerJeremy Allison <jra@samba.org>2011-10-05 01:19:17 +0200
commitf93fd128eb623e324459806a34052bd40afe82e5 (patch)
treec4eacfaacacd945ffb91a0dcf1b1beac5e52879c /source3/smbd/open.c
parente30e7a6ec02700234f73671c113743e1572efa01 (diff)
downloadsamba-f93fd128eb623e324459806a34052bd40afe82e5.tar.gz
samba-f93fd128eb623e324459806a34052bd40afe82e5.tar.bz2
samba-f93fd128eb623e324459806a34052bd40afe82e5.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. Autobuild-User: Jeremy Allison <jra@samba.org> Autobuild-Date: Wed Oct 5 01:19:17 CEST 2011 on sn-devel-104
Diffstat (limited to 'source3/smbd/open.c')
-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 61d1a2e3cc..a44f15f0cc 100644
--- a/source3/smbd/open.c
+++ b/source3/smbd/open.c
@@ -1541,12 +1541,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.
@@ -1580,6 +1574,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 FILE_ATTRIBUTE_ARCHIVE to this as this mode is only used if the file is
* created new. */
unx_mode = unix_mode(conn, new_dos_attributes | FILE_ATTRIBUTE_ARCHIVE,