Fix bug #8507 - smbd doesn't correctly honor the "force create mode" bits from a...
authorJeremy Allison <jra@samba.org>
Tue, 4 Oct 2011 21:46:00 +0000 (14:46 -0700)
committerKarolin Seeger <kseeger@samba.org>
Sat, 8 Oct 2011 18:07:45 +0000 (20:07 +0200)
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
(cherry picked from commit f93fd128eb623e324459806a34052bd40afe82e5)

source3/smbd/open.c

index 1cab9ab98a02e0e8de58548bbd045322ae86d2b3..e30d36ebf9a707cd87b88786be7dcae0795a581a 100644 (file)
@@ -1540,12 +1540,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.
@@ -1579,6 +1573,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,