1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-03 13:47:25 +03:00

742 Commits

Author SHA1 Message Date
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
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
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
Andrew Tridgell
4962d9d03e r2928: - fixed the handling of reserved names (rejecting them with ACCESS_DENIED)
- don't check for '.' specially in checking for legal names. Longhorn
  doesn't do this any more, and its a real pain. Longhorn allows for
  filenames ending in '.', and with as many '.' elements as you like.
(This used to be commit 0a475175c53016bfa5b8246819676ddcd8b66feb)
2007-10-10 12:59:49 -05:00
Andrew Tridgell
52f525c104 r2927: imported the hash2 name mangling code from Samba3 into Samba4, but
heavily modified to suit the Samba4 architecture.

Samba4 with posix backend now passes the BASE-MANGLE test
(This used to be commit ed52d69e8a065b6a8df2fb73c89be67acfdbca65)
2007-10-10 12:59:49 -05:00
Andrew Tridgell
c7130b816b r2926: name->dos.attrib is not valid unless name->exists is true
(This used to be commit f85a0b725d3bf67531e6874d4e8558fb050bb66f)
2007-10-10 12:59:48 -05:00
Andrew Tridgell
4d69d2d52b r2916: longhorn client doesn't bother setting the directory bit in ntcreatex
when opening directories. This change allows samba4 server to work
with longhorn client.
(This used to be commit 4a8b0302eff37ccfcb66b91259ee5da20879c652)
2007-10-10 12:59:48 -05:00
Andrew Tridgell
af3866903e r2904: - fixed the old style SMBsearch to return the pvfs shortname, not a truncated long name.
- short name can be up to 12 bytes, not 11
(This used to be commit 657103ec6264bf4c2986fedd3fc6577746395d49)
2007-10-10 12:59:46 -05:00
Andrew Tridgell
18dc1cd00f r2893: added very primitive name mangling support to pvfs
(This used to be commit 749fa73544201f521d9cd3fa972b89cae99bc2c0)
2007-10-10 12:59:45 -05:00
Andrew Tridgell
a56c984df4 r2800: removed the warning about using the posix ntvfs handler, as it is now
considerably more complete than the simple handler
(This used to be commit e6ecd31be8e91f552d891c41b2f8737519a490a1)
2007-10-10 12:59:35 -05:00
Andrew Tridgell
5a872512b0 r2794: a very simple version of the unixuid NTVFS pass-thru module. In
conjunction with the posix backend this gives us a way to correctly
setup the unix security context in Samba4.

I chose the following method to determine the unix uid's and gid's to
use given the list of SIDs from the login process

 - look for a "UnixID" field in the sam record. If present, then use it
   (check if the record is of the right type as well)

 - if UnixID is not present, then look for the "UnixName" sam
   field. If it is present then use getpwnam() or getgrnam() to find
   the unix id.

 - if UnixID and UnixName are not present, then look for a unix
   account of the right type called by the same name as the sAMAccountName field.

 - if none of the above work then fail the operation with NT_STATUS_ACCESS_DENIED

obviously these steps only work well with a local SAM. It will need to
be more sophisticated in future.

I did not put any cache in place at all. That will need to be added
for decent performance.
(This used to be commit 78b67d19b9766131f0270e451089ee5bb1aa8bd9)
2007-10-10 12:59:34 -05:00
Simo Sorce
54ae58fbcd r2789: fix compile
(This used to be commit a34ba8dafebb65e59616a0e68cc3d6fe3a349801)
2007-10-10 12:59:34 -05:00
Andrew Tridgell
421ff99f5d r2788: prevent a memory leak in the pvfs search backend
(This used to be commit 1de22070610231e60d329f56997bbec2cc674a4e)
2007-10-10 12:59:33 -05:00
Andrew Tridgell
84bbe948f3 r2786: - match on both long and short name for search posix backend
- a final name component of . is illegal
(This used to be commit 11c852170b83e5adbdb58407e1c7d3aeb4ab5bb8)
2007-10-10 12:59:33 -05:00
Stefan Metzmacher
dcad0f6fd4 r2751: this is a new ntvfs design which tries to solve:
- the stacking of modules
- finding the modules private data
- hide the ntvfs details from the calling layer
- I set NTVFS_INTERFACE_VERSION 0 till we are closer to release
  (because we need to solve some async problems with the module stacking)

metze
(This used to be commit 3ff03b5cb21bb79afdd3b1609be9635f6688a539)
2007-10-10 12:59:30 -05:00
Andrew Tridgell
3aa3428bc9 r2679: fixed an uninitialised variable found with valgrind
(This used to be commit 9087fab0adcf1791caeb795509ca9f14f5f47e82)
2007-10-10 12:59:21 -05:00
Andrew Tridgell
5b44130afa r2671: we're getting too many errors caused by the talloc_realloc() API not
taking a context (so when you pass a NULL pointer you end up with
memory in a top level context). Fixed it by changing the API to take a
context. The context is only used if the pointer you are reallocing is
NULL.
(This used to be commit 8dc23821c9f54b2f13049b5e608a0cafb81aa540)
2007-10-10 12:59:20 -05:00
Andrew Tridgell
e3880fa759 r2660: - converted the libcli/raw/ library to use talloc_increase_ref_count()
rather than manual reference counts

- properly support SMBexit in the cifs and posix backends

- added a logoff method to all backends

With these changes the RAW-CONTEXT test now passes against the posix backend
(This used to be commit c315d6ac1cc40546fde1474702a6d66d07ee13c8)
2007-10-10 12:59:18 -05:00
Andrew Tridgell
aeb9d1e1ad r2656: moved the seteuid configure tests into the posix backend (these tests
don't actually work yet, that will come later)
(This used to be commit 46b790c19da25ba88d29f555f828688bb05e531d)
2007-10-10 12:59:17 -05:00
Andrew Tridgell
3ea916b227 r2654: fixed some more server memory leaks. We are now down to a single leak
of 16 bytes, caused by the 16 byte data_blob in the smb_signing
code.
(This used to be commit 2f1b788e09686e065d22f621f5c0c585192c6740)
2007-10-10 12:59:17 -05:00
Andrew Tridgell
4fa2904290 r2613: use a talloc destructor to ensure that file descriptors are not leaked
on abnormal termination of a connection. As long as the top level
connection structure is freed then that should cascade down to the
file structure, and call this destructor which will close the open file descriptor.

In general I'd like to use this technique in any place in Samba4 where
we hold operating system resources that we need to make sure are
released on abnormal termination.
(This used to be commit ed87b7fcbd9fedc155528ce6dd8ab5d5fce637b2)
2007-10-10 12:59:12 -05:00
Andrew Tridgell
cb0cd473a0 r2573: - added a configure test for nanosecond time resolution in struct stat
(recently Linux systems support this, allowing us to support the
  full resolution in NTTIME)

- use nanosecond resolution in the posix backend if available

- moved the configure tests and list of object files for the posix
  backend into ntvfs/posix/ to keep them more neatlly separated.
(This used to be commit d92ad9f307fe16a3b253a0555b437f14c94b4dd7)
2007-10-10 12:59:06 -05:00
Andrew Tridgell
a3cec511bb r2561: completely redid the ntvfs module chaining code, You can now do something like:
ntvfs handler = nbench posix

and the nbench pass-thru module will be called before the posix
module. The chaining logic is now much saner, and less racy, with each
level in the chain getting its own private pointer rather than relying
on save/restore logic in the pass-thru module.

The only pass-thru module we have at the moment is the nbench one
(which records all traffic in a nbench compatibe format), but I plan
on soon writing a "unixuid" pass-thru module that will implement the
setegid()/setgroups()/seteuid() logic for standard posix uid
handling. This separation of the posix backend from the uid handling
should simplify the code, and make development easier.

I also modified the nbench module so it can do multiple chaining, so
if you want to you can do:

   ntvfs module = nbench nbench posix

and it will save 2 copies of the log file in /tmp. This is really only
useful for testing at the moment until we have more than one pass-thru
module.
(This used to be commit f84c0af35cb54c8fdc4933afefc18fa4c062aae4)
2007-10-10 12:59:06 -05:00
Andrew Tridgell
d3fc90eaa1 r2524: a simple pvfs rename implementation to make testing easier
(This used to be commit 98c1c75076fdb0df3a7c616f8c2e1ed138a6ff9a)
2007-10-10 12:59:02 -05:00
Andrew Tridgell
ca60193f24 r2520: - finished implementing the server side of the old style search requests
(This used to be commit 4e4859c06b9de5fe60ebd17cfb09eed480b79ec1)
2007-10-10 12:59:01 -05:00
Andrew Tridgell
dd7862cb6a r2503: the RAW-SEARCH test now mostly passes against the posix backend
(This used to be commit 9710f24b1fd103d5656c9585cdfed96449cf9f97)
2007-10-10 12:58:59 -05:00
Andrew Tridgell
23ba434b01 r2469: complete overhaul of the old-style RAW_SEARCH_ calls (the OS/2 and
original core level calls). The old code was completely wrong in many respects.

also fixed the EA_SIZE level in the server

extended the RAW-SEARCH test suite to test the new code properly
(This used to be commit 71480271ad84b57fcdde264a54bb2408cf783255)
2007-10-10 12:58:56 -05:00
Andrew Tridgell
635f5fa942 r2438: compile on systems without O_DIRECTORY (probably won't work, but I'll get to that later)
(This used to be commit 5e2027f8ec7248e48d1dfb94c3688c78c64a85c5)
2007-10-10 12:58:53 -05:00
Andrew Tridgell
8a1c3ddd94 r2436: the second big lump of posix vfs code.
this is still just a skeleton, and many of the functions are just
based on the simple vfs backend, they are there to allow me to run
smbtorture tests against the real parts of the posix backend.
(This used to be commit f2fa7fe565e89360dba3bb5434d3a6a36f398348)
2007-10-10 12:58:52 -05:00
Andrew Tridgell
03cb4367d6 r2404: the first large lump of posix vfs stuff.
this is still very much a skeleton (with many limbs missing too!). I
am committing this early to get some feedback on the approach taken.
(This used to be commit 40d5cae5ebbfe328e193eadb685df6a370730299)
2007-10-10 12:58:48 -05:00
Andrew Tridgell
0e6799177c r2252: don't register the same name twice
(This used to be commit fdb675bbad1322ddd94c646f67803b9678468a64)
2007-10-10 12:58:35 -05:00
Andrew Tridgell
2cbbbe3535 r2251: forgot to add vfs_posix.h in my last commit
note that this is just a skeleton so far. More to come soon.
(This used to be commit efc8850b9aa9348f5f7c4b342aa76dab1635e7d4)
2007-10-10 12:58:35 -05:00
Andrew Tridgell
893c62d383 r2249: got rid of some more mem_ctx elements in structures
(This used to be commit 21ef338cbbe96acc8594ffc550ef60c6a40fb951)
2007-10-10 12:58:34 -05:00
Stefan Metzmacher
ad5acba254 r1916: return a more clear error, we are miss configure in this case
metze
(This used to be commit a908f831cb9dd265f9b183512053f9e608feec3d)
2007-10-10 12:58:11 -05:00
Stefan Metzmacher
b87fa55bdc r1286: rename struct tcon_context to smbsrv_tcon
metze
(This used to be commit a6c0ca9de52b2395b092cb245bb94cbd55dfdd46)
2007-10-10 12:56:49 -05:00
Stefan Metzmacher
8bf537d119 r1280: rename struct request_context to smbsrv_request
metze
(This used to be commit a85d2db5826a84b812ea5162a11f54edd25f74e3)
2007-10-10 12:56:48 -05:00
Stefan Metzmacher
ee0588bb6f r312: let ntvfs posix backend return NT_STATUS_ACCESS_DENIED in the connect hook
and print out an error message to the debug log which say:
use 'cifs' or 'simple' as ntvfs handler
this also warns about 'root' fileaccess in the 'simple' module

the 'default' ntvfs handler is now registered by the posix backend

metze
(This used to be commit 84b3589daa60cfdd2c868d9468192b0a6e1eebae)
2007-10-10 12:51:20 -05:00
Jelmer Vernooij
a846e59205 CVS: ----------------------------------------------------------------------
CVS: Enter Log.  Lines beginning with `CVS:' are removed automatically
CVS:
CVS: Committing in .
CVS:
CVS: Modified Files:
CVS: 	Makefile.in configure.in include/includes.h include/ntvfs.h
CVS: 	include/smb.h lib/iconv.c lib/module.c ntvfs/ntvfs_base.c
CVS: 	ntvfs/cifs/vfs_cifs.c ntvfs/ipc/vfs_ipc.c
CVS: 	ntvfs/posix/vfs_posix.c ntvfs/print/vfs_print.c
CVS: 	ntvfs/reference/vfs_ref.c ntvfs/simple/vfs_simple.c
CVS: 	passdb/pdb_interface.c
CVS: Added Files:
CVS: 	include/module.h
CVS: ----------------------------------------------------------------------
Update to the modules system. Fixed:
 - get rid of smb_probe_module
 - merge older updates from 3.0
 - introduced register_subsystem() and register_backend() functions
 - adapt ntvfs and charset to use new register functions
 - made smb_load_modules() work recursively (e.g. 'preload modules = /usr/lib/samba')
 - got rid of some old remains

Things that still need work:
 - Did I break tankFS? I don't think so, but I can't test it here :-(
 - Add 'postload modules = ' (for modules that need to be loaded after fork() in smbd, if applicable)
 - Convert RPC, auth, passdb, etc to use new register_{subsystem,backend}() functions
 - Accept wildcards in 'preload modules' option, instead of loading recursively
(This used to be commit 7512b9ab1a8b3103f7a6c13f736353c46a26b668)
2003-11-25 03:15:26 +00:00
Andrew Tridgell
ef2e26c91b first public release of samba4 code
(This used to be commit b0510b5428b3461aeb9bbe3cc95f62fc73e2b97f)
2003-08-13 01:53:07 +00:00