Kai Blin [Fri, 4 Dec 2009 08:47:25 +0000 (09:47 +0100)]
s3 aclocal.m4: Fix iconv checks, clean up m4 code
The check for iconv requiring giconv.h and libgiconv as well as
the check for iconv requiring biconv.h and libbiconv were using the wrong
variable to check for previous successful test results. This caused the checks
to always fall back to libbiconv on systems where that library was available.
In the course of fixing this, I had to clean up the indentation in that piece of
code, and I also rewrote/added some comments.
Many thanks to Tsurutani Naoki <turutani@scphys.kyoto-u.ac.jp> for the initial
patch and diagnosis.
Andrew Tridgell [Fri, 4 Dec 2009 06:46:14 +0000 (17:46 +1100)]
s4-ldb: fixed show_deleted module not to corrupt parse trees
The show_deleted module was using a static private ptr in the module
to hold a parse tree to save on parsing. The code caused this
static ptr to change with each search, which caused incorrect
searches and numerous valgrind errors.
This patch replaces it with a hand-built parse tree.
Andrew Tridgell [Fri, 4 Dec 2009 06:45:38 +0000 (17:45 +1100)]
s4-drsutil: fixed a memory leak in samdb_search_count
In general functions that don't return any memory should not take a memory context.
Otherwise it is too easy to have a bug like this where memory is leaked
Tim Prouty [Fri, 4 Dec 2009 01:01:53 +0000 (17:01 -0800)]
s4 selftest/quicktest: Update known failures for the sfileinfo and oplock changes
Two new samba4 bugs have been filed for the two corresponding known
failures. For the short term raw.sfileinfo had to be removed from
quicktest. It is no longer an individual test, but a test-suite and
quicktest can only run top level tests.
After further review, The reason for server to fail with sharing
violation is that the windows server that executes a path-based
rename request opens the file for DELETE access, but only with
FILE_SHARED_READ as ShareAccess . Therefore, the existing
open(frame 76), which has shared read/write/delete , is compatible
with the Windows servers access mode (DELETE), but Windows servers
open is not compatible with access mode in existing open.
Note that it is correct to state that the logic in Windows server
could have been written to allow shared read/write/delete in which
case it would succeed as you mention. The behavior here is
historical based on the existing implementation.
Tim Prouty [Thu, 3 Dec 2009 02:39:05 +0000 (18:39 -0800)]
s4 torture: Convert an error to a warning in RAW-OPLOCK-BATCH22
Some servers choose to mark a client as bad if they fail an oplock
break request by timing out (win7 is an example). Once the client is
marked as bad, future oplock requests will timeout instantly. This
causes subsequent runs of this test to fail, so rather than erroring
out as a failure, a warning is printed instead.
There is also a bug in w2k3 where it was incorrectly returning
contending a share mode lock. It worked in XP and has been re-fixed
in win7.
Jeremy Allison [Thu, 3 Dec 2009 02:06:40 +0000 (18:06 -0800)]
Remove unneeded argument from can_set_delete_on_close(). Ensure
can_set_delete_on_close() is correctly called before any setting
of the disposition bit (clean up the do_unlink() call).
Jeremy.
Steven Danneman [Thu, 26 Nov 2009 01:39:42 +0000 (17:39 -0800)]
s4/torture: add multiple lock cancel test
See what happens when we have multiple outstanding lock requests and
we try to cancel both of them within a single LockingAndX.
On Windows, it seems only the first lock in the array is cancelled,
and the second is left pending. Though, this behavior goes against
the MS-CIFS spec.
Steven Danneman [Tue, 1 Dec 2009 01:05:27 +0000 (17:05 -0800)]
s4/torture: add addition multiple lock tests
* test that 2 locks in a single LockAndX are transactional
* test that 1 unlock and 1 lock in a single LockAndX are not
transactional
* test that SMB2 doesn't like mixed lock/unlock in a single
PDU
Steven Danneman [Wed, 25 Nov 2009 00:58:25 +0000 (16:58 -0800)]
s4/torture: Add target functionality parameters to SMBv1 BRL tests
Abstract the server requirements to pass some BRL tests.
* The new default for >64bit lock tests, is that the server should
return STATUS_INVALID_LOCK_RANGE.
* Add parameter for targets that don't implement DENY_DOS
Andrew Tridgell [Wed, 2 Dec 2009 22:19:55 +0000 (09:19 +1100)]
s4-drs: fixed UDV and overlapping sync calls in DRS
When windows abandons a DRS sync, it will sometimes re-use the same bind handle for
a new sync. This means we need to check the DN of the sync and blank the getnc_state
if the DN has changed.
This also fixes the UDV to use the highest uSN for the partition, not for
the whole SAM.
Jeremy Allison [Wed, 2 Dec 2009 23:02:28 +0000 (15:02 -0800)]
Restructure the ACL code some more, get the internal semantics
right. The previous bugs were due to the fact that get_nt_acl_internal()
could return an NTSTATUS error if there was no stored ACL blob, but
otherwise would return the underlying ACL from the filysystem. Fix
this so it always returns a valid acl if it can, and if it does not
its an error to be reported back to the client. This then changes
the inherit acl code. Previously we were trying to match Windows
by setting a minimal ACL on a new file that didn't inherit anything
from a parent directory. This is silly - the returned ACL wouldn't
match the underlying UNIX permissions. The current code will correctly
inherit from a parent if a parent has any inheritable ACE entries
that apply to the new object, but will return a mapping from the
underlying UNIX permissions if the parent has no inheritable entries.
This makes much more sense for new files/directories.
Jeremy.
Björn Jacke [Wed, 2 Dec 2009 14:13:37 +0000 (15:13 +0100)]
s3: prefer posix_fallocate for doing "strict allocate"
posix_fallocate is more efficient than manual zero'ing the file. When
preallocation in kernel space is supported it's extremely fast. Support for
preallocation at fs layer via posix_fallocate and fallocate at kernel site
can be found in Linux kernel 2.6.23/glibc 2.10 with ext4, XFS and OCFS2. Other
systems that I know of which support fast preallocation in kernel space are
AIX 6.1 with JFS2 and recent Solaris versions with ZFS maybe UFS2, too.
People who have a system with preallocation in kernel space might want to set
"strict allocate = yes". This reduces file fragentation and it's also safer for
setups with quota being turned on.
As of today most systems still don't have preallocation in kernel space, and
that's why "strict allocate = no" will stay the default for now.
Jeremy Allison [Wed, 2 Dec 2009 20:09:48 +0000 (12:09 -0800)]
Ensure get_nt_acl_internal() only looks at the ACL blobs, not
reads off the underlying filesystem. Ensure that vfs_acl_tdb.c
returns NT_STATUS_NOT_FOUND, not NT_STATUS_OBJECT_NAME_NOT_FOUND
when it can't find a blob matching the file.
Jeremy.
Jeremy Allison [Wed, 2 Dec 2009 18:01:14 +0000 (10:01 -0800)]
Fix bug #6837 - "Too many open files" when trying to access large number of files
from Windows 7. Original patch by me fixed up with the correct open files number
by jmaggard10@hotmail.com.
Jeremy.
Jeremy Allison [Tue, 1 Dec 2009 22:08:16 +0000 (14:08 -0800)]
Ensure we don't see the xattr used to store NT security (visible when xattr_tdb
is used). Allows make test to pass with acl_xattr.so prepended to the vfs modules.
Jeremy.
Tim Prouty [Tue, 1 Dec 2009 00:43:00 +0000 (16:43 -0800)]
s4 torture: Change oplock to use passthrough for exclusive3/batch11
In light of the INVALID_LEVEL that is seen for RAW_SFILEINFO_END_OF_FILE_INFO
requests on a path, I'm changing these back to using the passthrough
RAW_SFILEINFO_END_OF_FILE_INFORMATION to test the oplock break behavior as
originally intended
Tim Prouty [Mon, 30 Nov 2009 19:59:19 +0000 (11:59 -0800)]
s4 torture: Update RAW-SFILEINFO-END-OF-FILE to test some additional corner cases
It turns out setting the end-of-file with Trans2SetPathInfo using the
snia spec's info level will attempt to open the file, enforcing share
modes, but then subsequentlys fail the setpathinfo with a dos error of
INVALID_LEVEL. Doing a Trans2SetFileInfo with either end-of-file info
level succeeds as expected.
Michael Adam [Tue, 1 Dec 2009 13:55:02 +0000 (14:55 +0100)]
s3:build: fix the build when no external talloc and tdb are installed.
The check for the external libs and the addition of the include paths
to the CPPFLAGS was too late in configure.
This patch moves the whole subsystem/library section up right below
the detection of "BLDSHARED".
And it updates not only SAMBA_CPPFLAGS but also SAMBA_CONFIGURE_CPPFLAGS
so that many tests that use these flags can now succeed.
Jeremy Allison [Tue, 1 Dec 2009 00:50:34 +0000 (16:50 -0800)]
Fix bug 6938 : No hook exists to check creation rights when using acl_xattr module
Fix ACL modules to test for permissions on open/mkdir/opendir.
Ensure that underlying ACLs are returned for directories/files with
no Windows xattr or tdb acls stored.
Jeremy.
Jeremy Allison [Mon, 30 Nov 2009 23:53:04 +0000 (15:53 -0800)]
Restructure the connect function code to always call
down to NEXT-> before initializing. This allows us to
do cleanup (by calling DISCONNECT) if initialization
fails. Also fix vfs_acl_xattr which was failing to
call the NEXT connect function.
Jeremy.