1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-14 19:24:43 +03:00

419 Commits

Author SHA1 Message Date
Andrew Bartlett
f7c6a9438d r3185: Machines can login with krb5, so we need to allow them to map to a unix account.
Andrew Bartlett
(This used to be commit fbe932ddd4282c3d8af8a28fdd0cee83d0c8f4f3)
2007-10-10 13:04:38 -05:00
Andrew Tridgell
3cf018b517 r3180: - basic support for SEC_RIGHT_MAXIMUM_ALLOWED in pvfs
- RAW-CONTEXT test now passes
(This used to be commit 0dae9fef09ec8bce19c39a0caf36e0882e507bc4)
2007-10-10 13:04:37 -05:00
Andrew Tridgell
8af9b5e42e r3179: - fixed error return on utime failure
- formatting fix
(This used to be commit 8ca4d7c51e5c76aa28f600d49437a45a8a0d31a9)
2007-10-10 13:04:37 -05:00
Andrew Tridgell
e90ab07050 r3178: honor the write_time on pvfs_close()
(This used to be commit 4e28c45bafa453eaa94716a5b77d830b81efe6cf)
2007-10-10 13:04:36 -05:00
Andrew Tridgell
2a5eb0ceba r3177: check for open files on rename
(This used to be commit c334182095c53b09fcb65a40053b518acb6ec38b)
2007-10-10 13:04:36 -05:00
Andrew Tridgell
c1c696460b r3174: added pvfs_is_open() to allow us to check for open files on unlink. We
now pass BASE-UNLINK.
(This used to be commit f23a2f8538bda8f6790e86c93ee22436388b2975)
2007-10-10 13:04:36 -05:00
Andrew Tridgell
06d9380114 r3172: much better qfileinfo implementation in pvfs. We now pass RAW-QFILEINFO
(This used to be commit 65c2c81b8cf6aeeccdc53d8145c2595f230bd531)
2007-10-10 13:04:36 -05:00
Jelmer Vernooij
06b3879c8f r3167: Add a member 'endpoint' to the dcerpc_binding struct to use instead of
options[0].
(This used to be commit 18582083af800abd3d8de40eb73255c8ae6598dd)
2007-10-10 13:02:28 -05:00
Andrew Tridgell
62e58ea718 r3161: pvfs now passes the RAW-SEEK test
(This used to be commit a953d4a42c8fa3fe930c319d5157fc406a1035da)
2007-10-10 13:02:27 -05:00
Andrew Tridgell
36e3262846 r3160: recognise RAW_SFILEINFO_DISPOSITION_INFORMATION (fixes temporary files from excel)
(This used to be commit 1c05147f7103127c11b06bb0a812970577ace5f6)
2007-10-10 13:02:27 -05:00
Andrew Tridgell
5ea5d5c235 r3159: use easy to recognise file handle numbers for new file, old file and directory
in pvfs_open, to make analysing sniffs easy
(This used to be commit 5c16ed02542f7e143d66f4ba8d166bb6882bf53a)
2007-10-10 13:02:27 -05:00
Andrew Tridgell
2a16fd5453 r3154: pvfs now passes all of BASE-DELETE
(This used to be commit abbfca1401818edd896493ab9c875224e3b7e0e7)
2007-10-10 13:02:26 -05:00
Andrew Tridgell
d581727138 r3153: pvfs now passes the first 9 of the BASE-DELETE tests
(This used to be commit f8041feaebc9170763ce04d2dd90cfc1c7889c21)
2007-10-10 13:02:26 -05:00
Andrew Tridgell
3d5f3e39e5 r3147: added basic share modes support for pvfs (or more precisely, ntcreatex
share_access support).  This is enough for us to pass the BASE-DENY2
test, but is a long way from fully correct share modes.
(This used to be commit b5a6dd3cbf28a3a3b3a3656042ac8f50fca29e1c)
2007-10-10 13:02:25 -05:00
Andrew Tridgell
c785ca6504 r3142: fill in all the ntcreatex response fields explicitly, rather than
zeroing. This makes it clearer what bits are not yet implemented (and
is more valgrind friendly)
(This used to be commit 18b471327b596f3ea8f6a7b39ba0a83b2584ed0b)
2007-10-10 13:02:25 -05:00
Andrew Tridgell
020b386560 r3135: split the "create new" logic out from the "open existing" logic in
pvfs_open, and handle the various race conditions that are inherent in
cifs on unix, so we do the best we can when the race happens.

the ntcreatex code is really starting to take shape now
(This used to be commit 395c3815b468ae55de9a1135e478711f0e7d8cfc)
2007-10-10 13:02:25 -05:00
Andrew Tridgell
f71e7ae1e3 r3133: - more consistent error checking in rename and setfileinfo
- add paranoid checking of device/inode change during open to detect race conditions
(This used to be commit 043361fed487ed494fa497ffde1007b3f3bc0c29)
2007-10-10 13:02:25 -05:00
Andrew Tridgell
6e8867bff5 r3132: - fixed a type conflict found by talloc_array_p()
- use struct idr_context * in ipc code
(This used to be commit c33cdd0d550fcaf78573e73b50ffe530ea6d9b17)
2007-10-10 13:02:24 -05:00
Andrew Tridgell
651f3903f0 r3131: - make map_nt_error_from_unix() return NT_STATUS_UNSUCCESSFUL if errno is 0
- more consistent checking for system call return values in simple backend
(This used to be commit 375a9a1347abf0b917cf94ea0cabcdea37d60e98)
2007-10-10 13:02:24 -05:00
Volker Lendecke
e51ae38d7b r3129: typo
(This used to be commit f9dfd5ff1fcfd21fee9b08993b5fe6a6fae7f9d5)
2007-10-10 13:02:24 -05:00
Andrew Tridgell
1cd1b172d5 r3127: added the initial code for the open files database. Doesn't do
anything yet, but will soon be the core of the shares modes code.
(This used to be commit ad1edabf95c6c331aac4f0caa7d31193e26bc176)
2007-10-10 13:02:24 -05:00
Andrew Tridgell
1ec644619d r3126: in the brlock code I had used a void* for the brl context as I didn't
want to expose the brl context structure outside the brlock.c
code. Instead, I now use "struct brl_context *" and rely on C being
happy to pass around pointers to unknown structures as long as they
are not dereferenced. I will be interested to see how the build farm
likes this.
(This used to be commit cb155c8ad837285c5a7f5b104968239df0b65fd2)
2007-10-10 13:02:24 -05:00
Jelmer Vernooij
a9081b527b r3118: Eliminate struct dcesrv_ep_description and replace it with
struct dcerpc_binding.
(This used to be commit 2046e14cf8d010d4e715124859df2c1c3c782266)
2007-10-10 13:02:23 -05:00
Jelmer Vernooij
ac989eda6d r3114: - More work on merging the various structs that describe endpoints
- Add protocol sequence to dcerpc transports (will be used later on)
- Add more transports to the list
(This used to be commit ab110192e6e2c1e5a3b2befe7b61158744f15d18)
2007-10-10 13:02:23 -05:00
Andrew Tridgell
d33ae23165 r3107: slight tweak to the openx -> ntcreatex mapping routine. This mapping
can never be perfect, as openx can do things that ntcreatex can't, but
with this tweak we get close (the BASE-DENY1 test passes completely,
for example)
(This used to be commit 88112b9677b3c9ca97d349905c95516c6f29c8a7)
2007-10-10 13:02:22 -05:00
Andrew Tridgell
4b95dd5516 r3106: don't call a tree disconnect in the cifs backend, as during a smbd
server shutdown we don't want a synchronous operation which may block
to be called, thus delaying the shutdown.
(This used to be commit 5882f7305fa850c39088e85eefd311c8ede15597)
2007-10-10 13:02:21 -05:00
Andrew Tridgell
82a56fae99 r3087: fixed a typo
(This used to be commit 3791b97694f052b0b7e170e07c21f7a5739d74dd)
2007-10-10 13:01:58 -05:00
Andrew Tridgell
042a045025 r3086: fixed smbpid handling in the cifs backend
(This used to be commit fbc6949e95df6ea70ca9892099efb537ded97287)
2007-10-10 13:01:57 -05:00
Andrew Tridgell
2e4c8c0159 r3083: fixed a couple of generic mapping errors found with RAW-* and cifs:mapgeneric
(This used to be commit 76329798ff7f804bf4d7e6e9c1bb4c4dc7b9bb01)
2007-10-10 13:01:57 -05:00
Andrew Tridgell
4b14c8a09f r3082: added a "cifs:mapgeneric" option, which tells the cifs backend to use
the ntvfs_generic mapping functions rather than sending the exact
function asked for. This allows the generic mapping functions to be
tested by comparing the behaviour of smbtorture against two cifs
backend shares, one using "cifs:mapgeneric = true" and the other
"cifs:mapgeneric = False"
(This used to be commit c240c6bca5e10f1acbff45b0ed41c4c1ebcaae96)
2007-10-10 13:01:57 -05:00
Andrew Tridgell
20d17b8057 r3081: several updates to ntvfs and server side async request handling in
preparation for the full share modes and ntcreatex code that I am
working on.

highlights include:

 - changed the way a backend determines if it is allowed to process a
   request asynchronously. The previous method of looking at the
   send_fn caused problems when an intermediate ntvfs module disabled
   it, and the caller then wanted to finished processing using this
   function. The new method is a REQ_CONTROL_MAY_ASYNC flag in
   req->control_flags, which is also a bit easier to read

 - fixed 2 bugs in the readbraw server code. One related to trying to
   answer a readbraw with smb signing (which can't work, and crashed
   our signing code), the second related to error handling, which
   attempted to send a normal SMB error packet, when readbraw must
   send a 0 read reply (as it has no header)

 - added several more ntvfs_generic.c generic mapping functions. This
   means that backends no longer need to implement such esoteric
   functions as SMBwriteunlock() if they don't want to. The backend
   can just request the mapping layer turn it into a write followed by
   an unlock. This makes the backends considerably simpler as they
   only need to implement one style of each function for lock, read,
   write, open etc, rather than the full host of functions that SMB
   provides. A backend can still choose to implement them
   individually, of course, and the CIFS backend does that.

 - simplified the generic structures to make them identical to the
   principal call for several common SMB calls (such as
   RAW_WRITE_GENERIC now being an alias for RAW_WRITE_WRITEX).

 - started rewriting the pvfs_open() code in preparation for the full
   ntcreatex semantics.

 - in pvfs_open and ipc_open, initially allocate the open file
   structure as a child of the request, so on error we don't need to
   clean up. Then when we are going to succeed the open steal the
   pointer into the long term backend context. This makes for much
   simpler error handling (and fixes some bugs)

 - use a destructor in the ipc backend to make sure that everthing is
   cleaned up on receive error conditions.

 - switched the ipc backend to using idtree for fnum allocation

 - in the ntvfs_generic mapping routines, use a allocated secondary
   structure not a stack structure to ensure the request pointer
   remains valid even if the backend replies async.
(This used to be commit 3457c1836c09c82956697eb21627dfa2ed37682e)
2007-10-10 13:01:57 -05:00
Andrew Tridgell
72093ce62f r3064: - use UINT8_MAX and UINT16_MAX instead of hex values for idr_get_new() limits
- change idr_get_new() to use > instead of >= in the limit check
(This used to be commit 834b09929bcb8aabdd151b7c2306001497cabdb4)
2007-10-10 13:01:55 -05:00
Andrew Tridgell
b2b8282b8c r3057: - moved the idtree.c code into lib/
- converted the tid handling to use a idtree instead of bitmaps
(This used to be commit 4220914179d10132057216650b65ed7f7679717e)
2007-10-10 13:01:54 -05:00
Andrew Tridgell
cf1b85348a r3056: added a id -> pointer data structure (a type of radix tree). This is
an extremely efficient way of mapping from an integer handle (such as
an open file handle) to a pointer (such as the structure containing
the open file information). The code is taken from lib/idr.c in the
2.6 Linux kernel, and is very fast and space efficient. By using
talloc it even has auto cleanup.

This commit converts the handling of open file handles and open
directory search handles to use the idtree routines. In combination
with talloc destructors, this simplifies the structure handling in the
pvfs backend a lot. For example, we no longer need to keep a linked
list of open directory searches at all, and we no longer need to do
linear scans of the list of open files on most operations.

The end result is that the pvfs code is now extremely scalable. You
can have 10s of thousands of open files and open searches and the code
still runs very fast.

I have also added a small optimisation into the file close path, to
avoid looking in the byte range locking database if we know that there
are no locks outstanding.
(This used to be commit 16835a0ef91a16fa01145b773aad8d43da215dbf)
2007-10-10 13:01:54 -05:00
Andrew Tridgell
2b8aa720f4 r3055: use talloc_zero_p()
(This used to be commit 7bea9afeed219efa51aa8268af96f782f23f2400)
2007-10-10 13:01:54 -05:00
Jelmer Vernooij
06fe5d6cd9 r3047: Always include a \ again before the pipe name we're opening. Without a
backslash works, but is not like Windows does it.
(This used to be commit f6deb3d065e1a88f92bcb8a4a138453650c97b0b)
2007-10-10 13:01:53 -05:00
Jelmer Vernooij
2c081d2c47 r3046: \\PIPE\\ is internal (not actually included on the wire)
(This used to be commit 7771b5d8fa3db759487474eb7172df45bb3221ae)
2007-10-10 13:01:53 -05:00
Jelmer Vernooij
31403d548e r3043: Use binding strings for specifying endpoints. The property for
specifying a endpoint is now also 'endpoint' instead of 'endpoints'. The
default endpoint (if none is specified) is still "ncacn_np:[\\pipe\\ifacename]",
where ifacename is the name of the interface.

Examples:

[
  uuid(60a15ec5-4de8-11d7-a637-005056a20182),
  endpoint("ncacn_np:[\\pipe\\rpcecho]", "ncacn_ip_tcp:")
]
interface rpcecho
{
	void dummy();
}

dcerpc_binding is now converted to ep_description in the server, but I hope to
completely eliminate ep_description later on.

The eventual goal of all these changes is to make it easier to add
 transports as I'm going to add support for
 ncalrpc (local RPC over named pipes) and ncacn_unix_stream (Unix sockets).
(This used to be commit f3da7c8b443a29b0c656c687a277384ae1353792)
2007-10-10 13:01:53 -05:00
Andrew Tridgell
142d295aa8 r3039: This solves the problem of async handlers in ntvfs backends not being
in the right state when called. For example, when we use the unixuid
handler in the chain of handlers, and a backend decides to continue a
call asynchronously then we need to ensure that the continuation
happens with the right security context.

The solution is to add a new ntvfs operation ntvfs_async_setup(),
which calls all the way down through the layers, setting up anything
that is required, and takes a private pointer. The backend wanting to
make a async calls can use ntvfs_async_setup() to ensure that the
modules above it are called when doing async processing.
(This used to be commit a256e71029727fa1659ade6257085df537308c7d)
2007-10-10 13:00:01 -05:00
Andrew Tridgell
8e8c6aef3c r3035: if the ntvfs layers prior to us have said that we can't perform an
operation asynchronously (such as the nbench module), then ignore lock
timeouts, as they would make no sense
(This used to be commit 2894dd0ac0ddd0ae5b4d536d5cff0690bbfab1a0)
2007-10-10 13:00:00 -05:00
Andrew Tridgell
384f87bd38 r3034: - fixed a bug in message dispatch, when the dispatch function called messaging_deregister()
- added a pvfs_lock_close_pending() hook to remove pending locks on file close

 - fixed the private ptr argument to messaging_deregister() in pvfs_wait

 - fixed a bug in continuing lock requests after a lock that is blocking a pending lock is removed

 - removed bogus brl_unlock() call in lock continue

 - corrected error code for LOCKING_ANDX_CHANGE_LOCKTYPE

 - expanded the lock cancel test suite to test lock cancel by unlock and by close

 - added a testsuite for LOCKING_ANDX_CHANGE_LOCKTYPE
(This used to be commit 5ef80f034d4aa4dd6810532c63ad041bfc019cb8)
2007-10-10 13:00:00 -05:00
Andrew Tridgell
43a80e1d83 r3031: added support for lock cancelation, which effectively just triggers an early lock timeout
added support for more of the bizarre special lock offset semantics of w2k3
(This used to be commit d5bfc910b1200fb283e26572dc57fcf93652fd32)
2007-10-10 13:00:00 -05:00
Andrew Tridgell
d0cc571e30 r3029: implemented byte range lock timeouts.
This adds a pvfs_wait_message() routine which uses the new messaging
system, event timers and talloc destructors to give a nice generic
async event handling system with a easy to use interface. The
extensions to pvfs_lock.c are based on calls to pvfs_wait_message()
routines.

We now pass all of our smbtorture locking tests, although while
writing this code I have thought of some additonal tests that should
be added, particularly for lock cancel operations. I'll work on that
soon.

This commit also extends the smbtorture lock tests to test the rather
weird 0xEEFFFFFF locking semantics that I have discovered in
win2003. Win2003 treats the 0xEEFFFFFF boundary as special, and will
give different error codes on either side of it. Locks on both sides
are allowed, the only difference is which error code is given when a
lock is denied. Anyone like to hazard a guess as to why? It has
me stumped.
(This used to be commit 4395c0557ab175d6a8dd99df03c266325949ffa5)
2007-10-10 13:00:00 -05:00
Andrew Tridgell
e81230df4b r3024: run the *_connect() NTVFS initialisation operation as root, to allow
backends to open databases and perform any other privileged
operations that might be needed.
(This used to be commit 54fd395025656d9b264ba1c1fab6e3ce8ca3d357)
2007-10-10 12:59:59 -05:00
Andrew Tridgell
53891ed37e r3017: nicer memory handling for event_context_merge()
(This used to be commit 1cef44505e5de9b8ae5206522b624082ad2343b2)
2007-10-10 12:59:58 -05:00
Andrew Tridgell
fef617c31b r3012: added initial support for byte range locking in the posix vfs. This is
enough for us to pass locktest, but does not yet support lock timeouts
and some of the other esoteric features.
(This used to be commit 58a92abd88f190bc60894a68e0528e95ae33fe39)
2007-10-10 12:59:57 -05:00
Andrew Tridgell
9d9b42b059 r2984: fixed the error code for a non-terminal component of a path name not existing
(This used to be commit c6a922dbd844c69bbba83c259169655d17e9f87f)
2007-10-10 12:59:54 -05:00
Andrew Tridgell
2003ab2598 r2941: added pvfs_flush() implementation to the posix backend
(This used to be commit dac00ef3b0d0f8467367d7b6ff77db7b63a042cc)
2007-10-10 12:59:50 -05:00
Andrew Tridgell
59d3259171 r2934: - changed the unixuid module to use the nt_user_token instead of the server supplied info structure.
- added SID_WORLD and SID_NETWORK to the foreign sids in the
  provisioning, as these are auto-added to the nt_user_token (why is
  that done? Andrew?)
(This used to be commit 1dff12fba88827660a2647457867bf4ff6bc8d3d)
2007-10-10 12:59:49 -05:00
Andrew Tridgell
2ec58445ca r2931: use next_codepoint() to ensure we properly handle multi-byte characters in pvfs_unix_path()
(This used to be commit 0acf95d84c51d564f7215d34364c37ca74a2a150)
2007-10-10 12:59:49 -05:00