From: Jeremy Allison Date: Tue, 4 Oct 2011 23:40:58 +0000 (-0700) Subject: Fix bug #8507 - smbd doesn't correctly honor the "force create mode" bits from a... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2bdf5042dd14283ae195d442d20385ed158367ae;p=thirdparty%2Fsamba.git 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. --- 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,