From: Jeremy Allison Date: Tue, 11 Mar 2008 19:37:01 +0000 (-0700) Subject: Fix S3 to pass the test_raw_oplock_exclusive3 test. X-Git-Tag: samba-3.3.0pre1~3329 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=028302fac53083d66c969b876db1d831e53b8e35;p=thirdparty%2Fsamba.git Fix S3 to pass the test_raw_oplock_exclusive3 test. Jeremy. --- diff --git a/source/smbd/open.c b/source/smbd/open.c index cc785033790..0cc48c4f1c3 100644 --- a/source/smbd/open.c +++ b/source/smbd/open.c @@ -1366,7 +1366,7 @@ NTSTATUS open_file_ntcreate(connection_struct *conn, se_map_generic(&access_mask, &file_generic_mapping); open_access_mask = access_mask; - if (flags2 & O_TRUNC) { + if ((flags2 & O_TRUNC) || (oplock_request & FORCE_OPLOCK_BREAK_TO_NONE)) { open_access_mask |= FILE_WRITE_DATA; /* This will cause oplock breaks. */ } @@ -1378,7 +1378,8 @@ NTSTATUS open_file_ntcreate(connection_struct *conn, * mean the same thing under DOS and Unix. */ - if (access_mask & (FILE_WRITE_DATA | FILE_APPEND_DATA)) { + if ((access_mask & (FILE_WRITE_DATA | FILE_APPEND_DATA)) || + (oplock_request & FORCE_OPLOCK_BREAK_TO_NONE)) { /* DENY_DOS opens are always underlying read-write on the file handle, no matter what the requested access mask says. */ diff --git a/source/smbd/trans2.c b/source/smbd/trans2.c index 008ffed5a11..716f94f661c 100644 --- a/source/smbd/trans2.c +++ b/source/smbd/trans2.c @@ -4930,7 +4930,7 @@ static NTSTATUS smb_set_file_size(connection_struct *conn, } status = open_file_ntcreate(conn, req, fname, psbuf, - FILE_WRITE_DATA, + FILE_READ_ATTRIBUTES|FILE_WRITE_ATTRIBUTES, FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, FILE_OPEN, 0,