1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-07 17:18:11 +03:00
Commit Graph

858 Commits

Author SHA1 Message Date
Andrew Tridgell
66170ef8b3 r5185: make all the events data structures private to events.c. This will
make it possible to add optimisations to the events code such as
keeping the next timed event in a sorted list, and using epoll for
file descriptor events.

I also removed the loop events code, as it wasn't being used anywhere,
and changed timed events to always be one-shot (as adding a new timed
event in the event handler is so easy to do if needed)
(This used to be commit d7b4b6de51)
2007-10-10 13:09:29 -05:00
Andrew Tridgell
55d4d36993 r5102: This is a major simplification of the logic for controlling top level
servers in smbd. The old code still contained a fairly bit of legacy
from the time when smbd was only handling SMB connection. The new code
gets rid of all of the smb_server specific code in smbd/, and creates
a much simpler infrastructures for new server code.

Major changes include:

 - simplified the process model code a lot.

 - got rid of the top level server and service structures
   completely. The top level context is now the event_context. This
   got rid of service.h and server.h completely (they were the most
   confusing parts of the old code)

 - added service_stream.[ch] for the helper functions that are
   specific to stream type services (services that handle streams, and
   use a logically separate process per connection)

 - got rid of the builtin idle_handler code in the service logic, as
   none of the servers were using it, and it can easily be handled by
   a server in future by adding its own timed_event to the event
   context.

 - fixed some major memory leaks in the rpc server code.

 - added registration of servers, rather than hard coding our list of
   possible servers. This allows for servers as modules in the future.

 - temporarily disabled the winbind code until I add the helper
   functions for that type of server

 - added error checking on service startup. If a configured server
   fails to startup then smbd doesn't startup.

 - cleaned up the command line handling in smbd, removing unused options
(This used to be commit cf6a46c3cb)
2007-10-10 13:09:22 -05:00
Andrew Tridgell
759da3b915 r5037: got rid of all of the TALLOC_DEPRECATED stuff. My apologies for the
large commit. I thought this was worthwhile to get done for
consistency.
(This used to be commit ec32b22ed5)
2007-10-10 13:09:15 -05:00
Andrew Tridgell
3b9431ddb9 r4927: parse the NBT session request in the smb server. This gets rid of that
annoying "not parsing session request" message on each SMB connection
(This used to be commit b06b8dd2f4)
2007-10-10 13:09:06 -05:00
Andrew Tridgell
fb8004a288 r4819: its just not my day today ....
(This used to be commit e54a97f8a6)
2007-10-10 13:08:59 -05:00
Andrew Tridgell
7cbc768376 r4777: added a smb_composite_sesssetup() async composite function. This
encapsulates all the different session setup methods, including the
multi-pass spnego code.

I have hooked this into all the places that previously used the
RAW_SESSSETUP_GENERIC method, and have removed the old
RAW_SESSSETUP_GENERIC code from clisession.c and clitree.c. A nice
side effect is that these two modules are now very simple again, back
to being "raw" session setup handling, which was what was originally
intended.

I have also used this to replace the session setup code in the
smb_composite_connect() code, and used that to build a very simple
replacement for smbcli_tree_full_connection().

As a result, smbclient, smbtorture and all our other SMB connection
code now goes via these composite async functions. That should give
them a good workout!
(This used to be commit 080d0518bc)
2007-10-10 13:08:53 -05:00
Stefan Metzmacher
b3b225c604 r4730: remove unused struct elements
part of this went in in the last commit...

metze
(This used to be commit 9ea9e1ced5)
2007-10-10 13:08:49 -05:00
Stefan Metzmacher
9327ec51d1 r4728: split up server_services into:
- stream_socket services
  the smb, ldap and rpc service which sets up a srtam socket end then
  waits for connections
and
- task services
  which this you can create a seperate task that do something
  (this is also going through the process_model subsystem
  so with -M standard a new process for this created
  with -M thread a new thread ...

I'll add datagram services later when we whave support for datagram sockets in lib/socket/

see the next commit as an example for service_task's

metze
(This used to be commit d5fa02746c)
2007-10-10 13:08:49 -05:00
Stefan Metzmacher
592fce7fb1 r4726: - use the name tcon and tid instead of conn and cnum
- make use of talloc destructors

metze
(This used to be commit 8308da6ce4)
2007-10-10 13:08:48 -05:00
Stefan Metzmacher
91e9cf6d1a r4684: the smbsrv code should not know about rpc stuff
just vfs_ipc

metze
(This used to be commit f85ebd1e8e)
2007-10-10 13:08:43 -05:00
Stefan Metzmacher
46a32687da r4620: - add interface functions to the auth subsystem so that callers doesn't need to
use function pointers anymore
- make the module init much easier
- a lot of cleanups

don't try to read the diff in auth/ better read the new files

it passes test_echo.sh and test_rpc.sh

abartlet: please fix spelling fixes

metze
(This used to be commit 3c0d16b823)
2007-10-10 13:08:34 -05:00
Andrew Tridgell
770c65affd r4611: - renamed add_socket() to smb_add_socket() as that is less confusing
- removed the spurious call to set_blocking() in the smb server setup.
(This used to be commit 76d905d12e)
2007-10-10 13:08:33 -05:00
Andrew Tridgell
11ce2cfd70 r4591: - converted the other _p talloc functions to not need _p
- added #if TALLOC_DEPRECATED around the _p functions

- fixes the code that broke from the above

while doing this I fixed quite a number of places that were
incorrectly using the non type-safe talloc functions to use the type
safe ones. Some were even doing multiplies for array allocation, which
is potentially unsafe.
(This used to be commit 6e7754abd0)
2007-10-10 13:08:30 -05:00
Andrew Tridgell
ddc10d4d37 r4549: got rid of a lot more uses of plain talloc(), instead using
talloc_size() or talloc_array_p() where appropriate.

also fixed a memory leak in pvfs_copy_file() (failed to free a memory
context)
(This used to be commit 89b74b5354)
2007-10-10 13:08:25 -05:00
Andrew Tridgell
0a1342f51e r4383: in order to cope with overfilled buffers on trans2 findfirst we need to use 32 bit offsets and lengths
in trans2 fill code, even though the packets themselves can only use 16 bit lengths. This prevents
the overflow detection code from failing due to 16 bit length wrap.
(This used to be commit 5cd74c22e9)
2007-10-10 13:07:41 -05:00
Andrew Tridgell
ba4a563222 r4382: check for bad tid in SMBtdis
(This used to be commit 44ca3f41cc)
2007-10-10 13:07:40 -05:00
Andrew Tridgell
5e4e61c827 r4364: - added support for testing of chained SMB operations in smbtorture
- added test for chained OpenX/ReadX, simulating the OS/2 workplace shell

- fixed a bug in handling chained fnum in openx and ntcreatex in the server

(yes, I'm on holiday, but this bug was annoying me ....)
(This used to be commit b3b8958a18)
2007-10-10 13:07:38 -05:00
Andrew Bartlett
0f1444b772 r4358: At metze's request, the Christmas elves have removed gensec_end in
favor of talloc_free().

Andrew Bartlett
(This used to be commit 1933cd12fb)
2007-10-10 13:07:37 -05:00
Andrew Bartlett
44113c4de1 r4355: More work from the elves on Christmas eve:
- Update Samba4's kerberos code to match the 'salting' changes in
   Samba3 (and many other cleanups by jra).

 - Move GENSEC into the modern era of talloc destructors.  This avoids
   many of the memory leaks in this code, as we now can't somehow
   'forget' to call the end routine.
  - This required fixing some of the talloc hierarchies.

 - The new krb5 seems more sensitive to getting the service name
   right, so start actually setting the service name on the krb5 context.

Andrew Bartlett
(This used to be commit 278bf1a61a)
2007-10-10 13:07:37 -05:00
Andrew Tridgell
545c190d2a r4284: fixed a problem with very large EA lists and OS/2 clients. These
checks on allocations need to go in a lot more places, but at least
this is a start.
(This used to be commit 99b0dac229)
2007-10-10 13:07:32 -05:00
Andrew Tridgell
ed42a64901 r4263: added support for the trans2 RAW_SEARCH_EA_LIST information
level. This is quite a strange level that we've never seen before, but
is used by the os2 workplace shell.

note w2k screws up this level when unicode is negotiated, so it only
passes the RAW-SEARCH test when you force non-unicode
(This used to be commit 25189b8fbf)
2007-10-10 13:07:29 -05:00
Andrew Tridgell
b706555b3a r4261: added the RAW_FILEINFO_EA_LIST trans2 qfileinfo and qpathinfo
level. Interestingly, this level did now show up on our trans2 scanner
previously as we didn't have the FLAGS2_EXTENDED_ATTRIBUTES bit set in
the client code. Now that we set that bit, new levels appear in
windows servers.
(This used to be commit 0b76d405a7)
2007-10-10 13:07:29 -05:00
Andrew Tridgell
3b8e83a8c8 r4243: a sniff from kukks showed that the ea_set interface in trans2 setfileinfo allows
for multiple EAs to be set at once. This fixes all the ea code to allow for that.
(This used to be commit b26828bef5)
2007-10-10 13:07:28 -05:00
Andrew Tridgell
cf5cb51bfc r4232: added server support for multi-part SMBtrans requests, while
maintaining the async nature of the server. This is done with a
SMBtrans request queue for partially completed requests.

The smb signing issues with this get a little tricky, but it now seems
to work fine
(This used to be commit bc0209058b)
2007-10-10 13:07:28 -05:00
Andrew Tridgell
dfadefb1eb r4214: possibly fix the "no-EAs" bug from OS/2
(This used to be commit c987125348)
2007-10-10 13:07:27 -05:00
Andrew Tridgell
275df9a5c3 r4182: fixed trans2 mkdir, allowing mkdir with an initial EA list
(This used to be commit 7d981c29c2)
2007-10-10 13:07:23 -05:00
Andrew Tridgell
fbd8c61ff7 r4173: - new t2open code, that can cope with "create with EAs". Many thanks
to kukks on #samba-technical for the sniffs that allowed me to work
  this out

- much simpler ntvfs open generic mapping code

- added t2open create with EA torture test to RAW-OPEN test
(This used to be commit a56d95ad89)
2007-10-10 13:07:22 -05:00
Andrew Tridgell
2f2b9c5662 r4159: fixed error return for writebraw
(This used to be commit 13c7794e02)
2007-10-10 13:07:20 -05:00
Andrew Tridgell
280bb1cf0f r4146: an attempted fix for a OS/2 rename problem found by kukks - seems OS/2
is v senstive to SMB flags2 bits
(This used to be commit c232e21218)
2007-10-10 13:06:30 -05:00
Andrew Tridgell
0470bb74e0 r4145: make sure we don't set the 32-bit error codes flag unless the client
can handle it, even for success packets (this bug was harmless, but
can be confusing in ethereal with old clients)
(This used to be commit 71e0c7b2eb)
2007-10-10 13:06:30 -05:00
Andrew Tridgell
22f141166a r4109: fixed an uninitialised socket write found by kukks
(This used to be commit 30c58b046d)
2007-10-10 13:06:27 -05:00
Andrew Tridgell
58a83c6041 r4101: ignore secondary session requests to cope with a OS/2 bug reported by
Guenter Kukkukk
(This used to be commit 49c8df5648)
2007-10-10 13:06:26 -05:00
Tim Potter
4f49bbe4e6 r4099: Spelling fixes.
(This used to be commit 24d9f97bd6)
2007-10-10 13:06:26 -05:00
Andrew Tridgell
071439c1e1 r4095: smbsrv_terminate_connection() doesn't exit() in single processor mode, so after we
call it we need to return, and not continue processing packets
(This used to be commit 33e4cee17d)
2007-10-10 13:06:25 -05:00
Stefan Metzmacher
0ad10aec63 r4079: implement the gensec_have_feature() correctly by asking
the backend what is actually in use

metze
(This used to be commit 6f3eb7bc03)
2007-10-10 13:06:23 -05:00
Stefan Metzmacher
f99c93ec57 r4070: move some defines from asn_1.h to the places they belong to
metze
(This used to be commit ab2c2f27e1)
2007-10-10 13:06:22 -05:00
Andrew Tridgell
1424dccb92 r4069: better error code for SMBwriteBMPX
(This used to be commit eef066175f)
2007-10-10 13:06:22 -05:00
Andrew Tridgell
b821dedf9d r4068: added LANMAN2.1 to list of supported protocols (for OS/2)
(This used to be commit 06e48d1276)
2007-10-10 13:06:22 -05:00
Stefan Metzmacher
9112a632f6 r4063: - change char * -> uint8_t in struct request_buffer
- change smbcli_read/write to take void * for the buffers to match read(2)/write(2)

all this fixes a lot of gcc-4 warnings

metze
(This used to be commit b94f92bc66)
2007-10-10 13:06:21 -05:00
Andrew Tridgell
6e6374cb5b r4055: fixed more places to use type safe allocation macros
(This used to be commit eec698254f)
2007-10-10 13:06:20 -05:00
Andrew Tridgell
fdc9f417d8 r4011: get rid of rpc_secdes.h and replace it with a single sane set of
definitions for security access masks, in security.idl

The previous definitions were inconsistently named, and contained many
duplicate and misleading entries. I kept finding myself tripping up
while using them.
(This used to be commit 01c0fa722f)
2007-10-10 13:06:13 -05:00
Stefan Metzmacher
3308087bae r3971: fix compiler warnings
metze
(This used to be commit 234166606d)
2007-10-10 13:06:09 -05:00
Andrew Tridgell
d2a62ab22e r3916: w2k3 does not check the max_setup count in nttrans requests
(This used to be commit 671a864d8f)
2007-10-10 13:06:05 -05:00
Andrew Tridgell
0b691afe81 r3836: - fixed the handling of NT_STATUS_BUFFER_TOO_SMALL in nttrans server
- fixed revision number on default DACL

- fixed DACL_PRESENT bit in acl query

with these fixes cacls.exe and the GUI ACL editor in w2k both work
against pvfs. The GUI editor is slow as it times out looking up the
SID -> name mappings.
(This used to be commit 4468018cb6)
2007-10-10 13:05:58 -05:00
Andrew Tridgell
3c25dfe789 r3831: added nttrans server code for query/set security descriptor. This
means ACLs now can be set/fetched from the CIFS NTVFS backend.
(This used to be commit f49c636e10)
2007-10-10 13:05:57 -05:00
Andrew Tridgell
012be92f0a r3830: unified the query/set security descriptor code with the rest of the
queryfileinfo/setfileinfo logic, so querying/setting a security
descriptor is treated as just another file query/set operation.

This will allow NTVFS backends to see the query/set security
descriptor operations as RAW_FILEINFO_SEC_DESC and
RAW_SFILEINFO_SEC_DESC operations.
(This used to be commit f68a6b6b91)
2007-10-10 13:05:57 -05:00
Andrew Tridgell
5f868bc1ac r3826: - added testing of ea lists in NTTRANS CREATE
- fixed push/pull of chained ea lists

- fixed a bug in the nttrans wire encoding
(This used to be commit fcd0922407)
2007-10-10 13:05:57 -05:00
Stefan Metzmacher
856ee66537 r3810: create a LIB_SECURITY subsystem
- move dom_sid, security_descriptor, security_* funtions to one place
  and rename some of them

metze
(This used to be commit b620bdd672)
2007-10-10 13:05:56 -05:00
Andrew Tridgell
696fdc8cf9 r3806: added support to smb_server and pvfs for the NTTRANS Create call. This
call has an optional sec_desc and ea_list.
(This used to be commit 8379ad14e3)
2007-10-10 13:05:56 -05:00
Volker Lendecke
e2bc9a47c0 r3756: Fix netbios session request reply. The buffer should not be a stack-based
variable that is overwritten later.

Samba3 smbclient still does not like Samba4. In ntlmssp samba3 smbclient
expects an mechlistmic that 4 does not send.

Volker
(This used to be commit 614dbd8fec)
2007-10-10 13:05:51 -05:00
Jelmer Vernooij
8e16d8a76f r3733: More build system fixes/features:
- Use .mk files directly (no need for a SMB_*_MK() macro when adding a new SUBSYSTEM, MODULE or BINARY). This allows addition of new modules and subsystems without running configure
 - Add support for generating .dot files with the Samba4 dependency tree (as used by the graphviz and springgraph utilities)
(This used to be commit 64826da834)
2007-10-10 13:05:47 -05:00
Andrew Tridgell
a1a05543dc r3720: fixed the pulling of zero length ucs2 strings in smbd. I found this
bug using ifstest.exe, which is a IFS (Installable File System) test
suite. With this fix I was pleasantly surprised to find that Samba4
passes many (maybe even most?) of the tests in ifstest.
(This used to be commit a20cbca788)
2007-10-10 13:05:46 -05:00
Andrew Tridgell
92a9d90050 r3593: fixed the trans2 t2open reply to initialise all bytes (bug found by valgrind)
(This used to be commit b8ba6793c1)
2007-10-10 13:05:36 -05:00
Andrew Tridgell
70bb74eefd r3591: to get a bit more useful info from valgrind I'm disabling the
deliberate over-allocation of request structures in smbd and
libcli/raw code for now.
(This used to be commit 07596d8721)
2007-10-10 13:05:36 -05:00
Andrew Tridgell
439c1524fb r3573: added trans2open support to smbd and pvfs, and fine-tuned the open->generic ntvfs mapping code.
(This used to be commit ed844192d7)
2007-10-10 13:05:33 -05:00
Andrew Tridgell
80eef3ea66 r3539: much nicer async open delay code.
The previous code didn't handle the case where the file got renamed or
deleted while waiting for the sharing violation delay. To handle this
we need to make the 2nd open a full open call, including the name
resolve call etc. Luckily this simplifies the logic.

I also expanded the RAW-MUX test to include the case where we do
open/open/open/close/close, with the 3rd open async, and that open
gets retried after both the first close and the 2nd close, with the
first retry failing and the 2nd retry working. The tests the "async
reply after a async reply" logic in pvfs_open().
(This used to be commit eded2ad9c9)
2007-10-10 13:05:29 -05:00
Andrew Tridgell
39cd0639e9 r3531: add support for RAW_OPEN_MKNEW, RAW_OPEN_CREATE and RAW_OPEN_CTEMP in pvfs
(This used to be commit 1d2f0a55c1)
2007-10-10 13:05:29 -05:00
Andrew Tridgell
f71a4941f0 r3529: fixed signing support for SMBntcancel requests (no reply means seq
number rises by 1, not 2)
(This used to be commit 201ff734d4)
2007-10-10 13:05:29 -05:00
Andrew Tridgell
c870ae8b89 r3528: added support for the SMBntcancel() operation, which cancels any
outstanding async operation (triggering an immediate timeout).

pvfs now passes the RAW-MUX test
(This used to be commit 3423e2f414)
2007-10-10 13:05:28 -05:00
Andrew Tridgell
a9c00f35f9 r3518: fixed some includes to be consistent.
- use #include <XXX.h> for operating system includes
 - use includes relative to include/ for things like system/wait.h

also fixed the thread backend to work somewhat. To fix it properly we need to do this:

 - add a configure test for support for thread local storage (the __thread keyword)
 - refuse to do pthreads if tls doesn't work
 - refuse to do pthreads if seteuid() affects process instead of thread
 - defined THREAD_LOCAL as __thread when WITH_PTHREADS
 - add THREAD_LOCAL to all the global data structures that should be
   thread local (there are quite a few)

right now the thread backend falls over when you hit it with several
connections at once, due to the lack of __thread on some critical
structures.
(This used to be commit 0dc1deabd0)
2007-10-10 13:05:27 -05:00
Andrew Tridgell
dde0705807 r3507: - added deferred replies on sharing violation in pvfs open. The
deferred reply is short-circuited immediately when the file is
  closed by another user, allowing it to be opened by the waiting user.

- added a sane set of timeval manipulation routines

- converted all the events code and code that uses it to use struct
  timeval instead of time_t, which allows for microsecond resolution
  instead of 1 second resolution. This was needed for doing the pvfs
  deferred open code, and is why the patch is so big.
(This used to be commit 0d51511d40)
2007-10-10 13:05:23 -05:00
Andrew Tridgell
d685e56a77 r3500: cleaned up the AS_USER/AS_GUEST stuff in the core smb packet processing
(This used to be commit 8fa456afc9)
2007-10-10 13:05:22 -05:00
Andrew Tridgell
acb23b2c5f r3493: fixed a bug in readx reply where the client specifies an invalid high
part of the maxcnt. This caused an allocation failure and server exit.

Note: we need to go back over all the places in the core smb_server
that can cause allocation failures based on user input and fix them to
instead produce a SMB error.

Thanks to Susan for finding this bug.
(This used to be commit 4aed1b7921)
2007-10-10 13:05:21 -05:00
Andrew Tridgell
a99b6219a8 r3481: split out client.h and events.h
(This used to be commit c6f4865744)
2007-10-10 13:05:20 -05:00
Andrew Tridgell
aa34fcebf8 r3466: split out request.h, signing.h, and smb_server.h
(This used to be commit 7c4e6ebf05)
2007-10-10 13:05:17 -05:00
Andrew Tridgell
3643fb1109 r3463: separated out some more headers (asn_1.h, messages.h, dlinklist.h and ioctl.h)
(This used to be commit b97e395c81)
2007-10-10 13:05:17 -05:00
Andrew Tridgell
2df2d1b67f r3461: another place where "open" was used as a structure element
(This used to be commit 1087ea830e)
2007-10-10 13:05:16 -05:00
Andrew Tridgell
8692564e35 r3458: more solaris portability fixes, the main one being that we can't use a
structure element called "open" as its a macro on solaris.
(This used to be commit 4e92e15c4e)
2007-10-10 13:05:16 -05:00
Andrew Tridgell
f4ec1497a1 r3455: some more portability fixes. We nearly compile on solaris again now.
(This used to be commit 4f33247f1c)
2007-10-10 13:05:15 -05:00
Andrew Tridgell
edbfc0f6e7 r3453: - split out the auth and popt includes
- tidied up some of the system includes

- moved a few more structures back from misc.idl to netlogon.idl and samr.idl now that pidl
  knows about inter-IDL dependencies
(This used to be commit 7b7477ac42)
2007-10-10 13:05:13 -05:00
Andrew Tridgell
ead3508ac8 r3447: more include/system/XXX.h include files
(This used to be commit 264ce91810)
2007-10-10 13:05:12 -05:00
Andrew Tridgell
284349482f r3443: the next stage in the include files re-organisation.
I have created the include/system/ directory, which will contain the
wrappers for the system includes for logical subsystems. So far I have
created include/system/kerberos.h and include/system/network.h, which
contain all the system includes for kerberos code and networking code.
These are the included in subsystems that need kerberos or networking
respectively.

Note that this method avoids the mess of #ifdef HAVE_XXX_H in every C
file, instead each C module includes the include/system/XXX.h file for
the logical system support it needs, and the details are kept isolated
in include/system/

This patch also creates a "struct ipv4_addr" which replaces "struct
in_addr" in our code. That avoids every C file needing to import all
the system networking headers.
(This used to be commit 2e25c71853)
2007-10-10 13:05:11 -05:00
Andrew Tridgell
652b8b34f8 r3441: some include file cleanups and general housekeeping
(This used to be commit 73ea8ee6c2)
2007-10-10 13:05:11 -05:00
Andrew Tridgell
475c958450 r3425: got rid of a bunch of cruft from rewrite.h
(This used to be commit 3f902f8d85)
2007-10-10 13:05:08 -05:00
Andrew Tridgell
ad8c4ae941 r3380: - changed the default behaviour of server signing. We now have a default
setting of "server signing = auto", which means to offer signing
  only if we have domain logons enabled (ie. we are a DC). This is a
  better match for what windows clients want, as unfortunately windows
  clients always use signing if it is offered, and when they use signing
  they not only go slower because of the signing itself, they also
  disable large readx/writex support, so they end up sending very small
  IOs for.

- changed the default max xmit again, this time matching longhorn,
  which uses 12288. That seems to be a fairly good compromise value.
(This used to be commit e63edc8171)
2007-10-10 13:05:03 -05:00
Andrew Bartlett
85796280f4 r3361: Allow Samba4 (I'm interested in ntlm_auth in particular) to use
Samba3's winbind.  This is also the start of domain membership code in
Samba4, as we now (partially) parse the info3, and use it like Samba3
does.

Andrew Bartlett
(This used to be commit c1b7303c1c)
2007-10-10 13:05:01 -05:00
Andrew Tridgell
bc24603e41 r3355: fixed the old style search code in smb_server to correctly handle
searches that go beyond the negotiated max xmit size
(This used to be commit 84762a5976)
2007-10-10 13:05:00 -05:00
Andrew Tridgell
4676de010f r3350: fixed a bug with sending multiple replies for the one request, as
happens with trans2, trans and echo. Now that smbd is async we queue
the multiples replies all at once, and now need a way to ensure each
reply gets it own smbsrv_request buffer. I have added
req_setup_secondary() to cope with this.
(This used to be commit 2dbd2abc5f)
2007-10-10 13:04:58 -05:00
Andrew Tridgell
42c4dd1832 r3341: - don't zero the async structure (makes valgrind more useful)
- get rid of req->mid, as it isn't a safe value to use to match
  requests in the server (it is safe in the client code, as we choose
  the mid, but in the server we can't rely on other clients to choose
  the mid carefully)
(This used to be commit 938fb44351)
2007-10-10 13:04:57 -05:00
Stefan Metzmacher
0197195957 r3336: use a struct ntvfs_async_state to be able to do async chaning of ntvfs modules
the idea is that a passthru module can use ntvfs_async_state_push() before
calling ntvfs_next_*() and in the _send function it calls
ntvfs_async_state_pop() and then call the upper layer send_fn itself

- ntvfs_nbench is now fully async

- the ntvfs_map_*() functions and the trans(2) mapping functions are not converted yet

metze
(This used to be commit fde64c0dc1)
2007-10-10 13:04:57 -05:00
Andrew Tridgell
aa19318fd5 r3307: fixed the send side of the smb_server code to be non-blocking. This
means the whole of the SMB handling code is now non-blocking.
(This used to be commit 30acedb943)
2007-10-10 13:04:52 -05:00
Andrew Tridgell
d668ec53b3 r3306: the main smb server code now handles non-blocking socket receives. I
haven't marked the socket non-blocking yet as I haven't checked that
the send path is OK for non-blocking.
(This used to be commit bda978cc2a)
2007-10-10 13:04:52 -05:00
Andrew Tridgell
c6888da148 r3304: changed the API to lib/socket/ a little.
The main change is to make socket_recv() take a pre-allocated buffer,
rather than allocating one itself. This allows non-blocking users of
this API to avoid a memcpy(). As a result our messaging code is now
about 10% faster, and the ncacn_ip_tcp and ncalrpc code is also
faster.

The second change was to remove the unused mem_ctx argument from
socket_send(). Having it there implied that memory could be allocated,
which meant the caller had to worry about freeing that memory (if for
example it is sending in a tight loop using the same memory
context). Removing that unused argument keeps life simpler for users.
(This used to be commit a16e4756cd)
2007-10-10 13:04:52 -05:00
Andrew Tridgell
9d055846f2 r3278: - rewrote the client side rpc connection code to use lib/socket/
rather than doing everything itself. This greatly simplifies the
  code, although I really don't like the socket_recv() interface (it
  always allocates memory for you, which means an extra memcpy in this
  code)

- fixed several bugs in the socket_ipv4.c code, in particular client
  side code used a non-blocking connect but didn't handle EINPROGRESS,
  so it had no chance of working. Also fixed the error codes, using
  map_nt_error_from_unix()

- cleaned up and expanded map_nt_error_from_unix()

- changed interpret_addr2() to not take a mem_ctx. It makes absolutely
  no sense to allocate a fixed size 4 byte structure like this. Dozens
  of places in the code were also using interpret_addr2() incorrectly
  (precisely because the allocation made no sense)
(This used to be commit 7f2c771b0e)
2007-10-10 13:04:49 -05:00
Andrew Tridgell
79c9d6db55 r3256: get rid of the unused session_claim() and session_yield() calls
(This used to be commit f1c5be396b)
2007-10-10 13:04:47 -05:00
Andrew Tridgell
f9fdeaa8f4 r3255: - fixed 2 uninitialised data errors found with valgrind
- fixed offset of setup words in nttrans reply
(This used to be commit 86b5118c2a)
2007-10-10 13:04:47 -05:00
Andrew Tridgell
8962ec3a68 r3243: read the high offset count in SMBreadx in the server
(This used to be commit 977bc87d18)
2007-10-10 13:04:45 -05:00
Andrew Tridgell
ea43c2a3ed r3234: in SMBreadx, if the client asks for exactly 65535 bytes then don't try
to align the buffer, as that would make the read reply not fit
(This used to be commit 70be45de05)
2007-10-10 13:04:43 -05:00
Andrew Tridgell
611e9e601c r3202: return a old DOS error code ERRSRV:ERRbaduid for a bad vuid. This means we now pass the BASE-VUID test.
(This used to be commit 560300c002)
2007-10-10 13:04:40 -05:00
Andrew Bartlett
e5fc6dd0bb r3186: Use the properties of the new talloc() system to handle the auth
session info and server info structures.

Andrew Bartlett
(This used to be commit 5bdf391b3b)
2007-10-10 13:04:38 -05:00
Jelmer Vernooij
8debe5a6b8 r3136: - Allow specifying socket type when adding smbd service
- Make sure a epm_tower struct is completely initialized
- Some more minor fixes
(This used to be commit d560dcbdb8)
2007-10-10 13:02:25 -05:00
Andrew Tridgell
7d30e54927 r3134: use struct idr_context * in tid allocation
(This used to be commit 3ea9445226)
2007-10-10 13:02:25 -05:00
Andrew Tridgell
74e741037c r3084: mincnt and maxcnt were the wrong way around in readbraw server code
(This used to be commit e11b000319)
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 3457c1836c)
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 834b09929b)
2007-10-10 13:01:55 -05:00
Tim Potter
b98218c84b r3060: Replace magic number with a C99 constant.
(This used to be commit b572be00b3)
2007-10-10 13:01:55 -05:00
Andrew Tridgell
24bba442bc r3059: completely get rid of the MAX_CONNECTIONS limit, as a idle tree
connect is very cheap now.
(This used to be commit 8856f010e9)
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 4220914179)
2007-10-10 13:01:54 -05:00
Andrew Tridgell
002f883202 r3054: use talloc_zero_array_p() in a couple of places
(This used to be commit cccd59009d)
2007-10-10 13:01:54 -05:00
Andrew Tridgell
7d32679e96 r2857: this commit gets rid of smb_ucs2_t, wpstring and fpstring, plus lots of associated functions.
The motivation for this change was to avoid having to convert to/from
ucs2 strings for so many operations. Doing that was slow, used many
static buffers, and was also incorrect as it didn't cope properly with
unicode codepoints above 65536 (which could not be represented
correctly as smb_ucs2_t chars)

The two core functions that allowed this change are next_codepoint()
and push_codepoint(). These functions allow you to correctly walk a
arbitrary multi-byte string a character at a time without converting
the whole string to ucs2.

While doing this cleanup I also fixed several ucs2 string handling
bugs. See the commit for details.

The following code (which counts the number of occuraces of 'c' in a
string) shows how to use the new interface:

size_t count_chars(const char *s, char c)
{
	size_t count = 0;

	while (*s) {
		size_t size;
		codepoint_t c2 = next_codepoint(s, &size);
		if (c2 == c) count++;
		s += size;
	}

	return count;
}
(This used to be commit 814881f0e5)
2007-10-10 12:59:39 -05:00
Andrew Tridgell
c4bf8c5b2c r2797: don't free the server_info before using it for anonymous connections
(This used to be commit 5f5b04196c)
2007-10-10 12:59:35 -05:00
Andrew Tridgell
a46270e2fa r2784: - fixed alignment of ascii directory listings
- fixed minimum parameter size for ascii qpathinfo call
(This used to be commit ee065ae7f9)
2007-10-10 12:59:32 -05:00
Andrew Tridgell
20c550d87f r2783: got rid of the unused remote architecture detection code
(This used to be commit 9a04664531)
2007-10-10 12:59:32 -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 3ff03b5cb2)
2007-10-10 12:59:30 -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 8dc23821c9)
2007-10-10 12:59:20 -05:00
Andrew Tridgell
5a064d4a62 r2669: convert make_user_info() and associated functions from malloc to talloc
(This used to be commit 278cef77f0)
2007-10-10 12:59:19 -05:00
Andrew Tridgell
729d17c270 r2664: fixed the final server leak for normal operation. We now get a clean report from --leak-check
(This used to be commit 1ff41bbcae)
2007-10-10 12:59:19 -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 c315d6ac1c)
2007-10-10 12:59:18 -05:00
Andrew Tridgell
5a830d0626 r2658: fixed a couple of error codes found with RAW-CONTEXT
(This used to be commit 18632ec565)
2007-10-10 12:59:17 -05:00
Andrew Tridgell
5d45a332d5 r2657: if we are already fully authenticated in session setup then the vuid is ignored
(This used to be commit 50d5c638a3)
2007-10-10 12:59:17 -05:00
Andrew Tridgell
9a62dce0ac r2648: - use a destructor on struct server_connection to simplify the
connection termination cleanup, and to ensure that the event
  contexts are properly removed for every process model

- gave auth_context the new talloc treatment, which removes another
  source of memory leaks.
(This used to be commit 230e1cd777)
2007-10-10 12:59:16 -05:00
Andrew Tridgell
764eddb696 r2646: - use a talloc destructor to ensure that sockets from the new socket
library are closed on abnormal termination

- convert the service.h structures to the new talloc methods
(This used to be commit 2dc334a328)
2007-10-10 12:59:16 -05:00
Andrew Tridgell
c5f4378361 r2629: convert gensec to the new talloc model
by making our gensec structures a talloc child of the open connection
we can be sure that it will be destroyed when the connection is
dropped.
(This used to be commit f12ee2f241)
2007-10-10 12:59:14 -05:00
Andrew Tridgell
d79c7d41da r2627: use the new talloc capabilities in a bunch more places in the rpc
server code. This fixes a number of memory leaks I found when testing
with valgrind and smbtorture, as the cascading effect of a
talloc_free() ensures that anything derived from the top level object
is destroyed on disconnect.
(This used to be commit 76d0b8206c)
2007-10-10 12:59:13 -05:00
Andrew Tridgell
045543b661 r2618: before we had refererence counts in talloc I added a hack in the
server side request structure to prevent a structing being freed in
some circumstances. This change replaces this with the much more
robust mechanism of talloc_increase_ref_count().
(This used to be commit 3f7741f178)
2007-10-10 12:59:12 -05:00
Andrew Tridgell
69d170e723 r2616: the cascading nature of talloc_free() can lead to some surprises. In
this case the bug was that server_terminate_connection() destroys the
server context, which in turn cascades down to destroy all current
request contexts, so we musn't then try to destroy the request
structure a second time.
(This used to be commit 28a647f681)
2007-10-10 12:59:12 -05:00
Andrew Tridgell
7358fb62b8 r2590: fixed one of the server security memory leaks. There are more :(
(This used to be commit 9e1eb58e4b)
2007-10-10 12:59:10 -05:00
Andrew Tridgell
fe45888e22 r2581: added "hosts allow" and "hosts deny" checking in smbd. I needed this
as my box keeps getting hit by viruses spreading on my companies
internal network, which screws up my debug log badly (sigh).

metze, I'm not sure if you think access.c should go in the socket
library or not. It is closely tied to the socket functions, but you
may prefer it separate.

The access.c code is a port from Samba3, but with some cleanups to
make it (slighly) less ugly.
(This used to be commit 058b2fd99e)
2007-10-10 12:59:07 -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 f84c0af35c)
2007-10-10 12:59:06 -05:00
Andrew Bartlett
9a9dcc7250 r2552: Character set conversion and string handling updates.
The intial motivation for this commit was to merge in some of the
bugfixes present in Samba3's chrcnv and string handling code into
Samba4.  However, along the way I found a lot of unused functions, and
decided to do a bit more...

The strlen_m code now does not use a fixed buffer, but more work is
needed to finish off other functions in str_util.c.  These fixed
length buffers hav caused very nasty, hard to chase down bugs at some
sites.

The strupper_m() function has a strupper_talloc() to replace it (we
need to go around and fix more uses, but it's a start).  Use of these
new functions will avoid bugs where the upper or lowercase version of
a string is a different length.

I have removed the push_*_allocate functions, which are replaced by
calls to push_*_talloc.  Likewise, pstring and other 'fixed length'
wrappers are removed, where possible.

I have removed the first ('base pointer') argument, used by push_ucs2,
as the Samba4 way of doing things ensures that this is always on an
even boundary anyway.  (It was used in only one place, in any case).
(This used to be commit dfecb01506)
2007-10-10 12:59:05 -05:00
Andrew Bartlett
0d2b17666a r2550: survive our own BASE-NEGNOWAIT torture test.
Andrew Bartlett
(This used to be commit a132082249)
2007-10-10 12:59:05 -05:00
Andrew Bartlett
e517b653ab r2544: (missed from the last commit)
smb_conn->socket has gone away, and the packet count is now in the
main structure.

Andrew Bartlett
(This used to be commit 2e197f05ff)
2007-10-10 12:59:04 -05:00
Andrew Bartlett
79ae828819 r2542: I really don't like the 'substitute' code, and I particularly don't
like it in the mainline code (outside the smb.conf magic).

We will need to have a more useful 'helper' routine for this, but for
now we at least get a reliable IP address.

Also remove the unused 'socket' structure in the smb server - it seems
to have been replaced by the socket library.

Andrew Bartlett
(This used to be commit d8fd19a202)
2007-10-10 12:59:04 -05:00
Andrew Bartlett
3fb57e31a0 r2541: Add a TODO: This is one place we can grab the remote netbios name.
Andrew Bartlett
(This used to be commit cd2f97530b)
2007-10-10 12:59:04 -05:00
Andrew Tridgell
1e09ab3774 r2521: fixed two uninitialised data errors found with valgrind when
negotiating a old style session setup (eg. LANMAN1)
(This used to be commit 04f68f481c)
2007-10-10 12:59:01 -05:00
Andrew Tridgell
ca60193f24 r2520: - finished implementing the server side of the old style search requests
(This used to be commit 4e4859c06b)
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 9710f24b1f)
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 71480271ad)
2007-10-10 12:58:56 -05:00
Andrew Tridgell
f1fbeb880c r2460: fixed the spnego code that I recently broke
(This used to be commit 9a708e2281)
2007-10-10 12:58:55 -05:00
Andrew Tridgell
e649dcc09c r2455: don't use the uninitialised sess structure when auth fails
(This used to be commit 93d444e6fd)
2007-10-10 12:58:54 -05:00
Stefan Metzmacher
65c3b46d02 r2449: use a blocking fd for smbsrv code
metze
(This used to be commit fba1637710)
2007-10-10 12:58:54 -05:00
Stefan Metzmacher
7d06a06584 r2447: let the server code use the new lib/socket/ stuff
metze
(This used to be commit 2fd577d241)
2007-10-10 12:58:54 -05:00
Stefan Metzmacher
360f125f25 r2326: remove definition and usage of struct socket_context
metze
(This used to be commit 1854907da8)
2007-10-10 12:58:44 -05:00
Stefan Metzmacher
17bdcc9056 r2320: add my copyright
metze
(This used to be commit 45b77064bf)
2007-10-10 12:58:43 -05:00
Andrew Bartlett
7cbd43a1f7 r2288: Remove the claim/yield connection code - this will need to be redone
in a more samba4 style at some point (along with the session code).

Andrew Bartlett
(This used to be commit b8fe29dc7a)
2007-10-10 12:58:39 -05:00
Andrew Tridgell
24f972a071 r2250: removed unnecessary mem_ctx
(This used to be commit c455a3a61d)
2007-10-10 12:58:34 -05:00
Andrew Tridgell
893c62d383 r2249: got rid of some more mem_ctx elements in structures
(This used to be commit 21ef338cbb)
2007-10-10 12:58:34 -05:00
Tim Potter
8293df91bc r2247: talloc_destroy -> talloc_free
(This used to be commit 6c1a72c5d6)
2007-10-10 12:58:34 -05:00
Andrew Tridgell
31c1c7846f r2159: converted samba4 over to UTF-16.
I had previously thought this was unnecessary, as windows doesn't use
standards compliant UTF-16, and for filesystem operations treats bytes
as UCS-2, but Bjoern Jacke has pointed out to me that this means we
don't correctly store extended UTF-16 characters as UTF-8 on
disk. This can be seen with (for example) the gothic characters with
codepoints above 64k.

This commit also adds a LOCAL-ICONV torture test that tests the first
1 million codepoints against the system iconv library, and tests 5
million random UTF-16LE buffers for identical error handling to the
system iconv library.

the lib/iconv.c changes need backporting to samba3
(This used to be commit 756f28ac95)
2007-10-10 12:58:27 -05:00
Andrew Tridgell
15d0ce1977 r2046: fixed two server packet format errors found with the RAW-* tests
(This used to be commit 9fdbe60230)
2007-10-10 12:58:20 -05:00
Andrew Tridgell
cc7d62d3d1 r2045: fixed a date format push in SMBsearch
(This used to be commit a6cc0bedad)
2007-10-10 12:58:20 -05:00
Andrew Tridgell
c595ec9936 r2044: fixed two unin
(This used to be commit d17e088ebb)
2007-10-10 12:58:20 -05:00
Andrew Bartlett
fa5a99b7a6 r2041: Fix NTLMSSP RPC sealing, client -> win2k3 server.
The bug (found by tridge) is that Win2k3 is being tighter about the
NTLMSSP flags.  If we don't negotiate sealing, we can't use it.

We now have a way to indicate to the GENSEC implementation mechanisms
what things we want for a connection.

Andrew Bartlett
(This used to be commit 86f61568ea)
2007-10-10 12:58:19 -05:00
Stefan Metzmacher
94b7bf91fe r1999: fix compiler warning
metze
(This used to be commit 8c9c702bc3)
2007-10-10 12:58:16 -05:00
Stefan Metzmacher
38188de793 r1998: fix compiler warning
metze
(This used to be commit bf06f476db)
2007-10-10 12:58:16 -05:00
Andrew Tridgell
b83ba93eae r1983: a completely new implementation of talloc
This version does the following:

  1) talloc_free(), talloc_realloc() and talloc_steal() lose their
     (redundent) first arguments

  2) you can use _any_ talloc pointer as a talloc context to allocate
     more memory. This allows you to create complex data structures
     where the top level structure is the logical parent of the next
     level down, and those are the parents of the level below
     that. Then destroy either the lot with a single talloc_free() or
     destroy any sub-part with a talloc_free() of that part

  3) you can name any pointer. Use talloc_named() which is just like
     talloc() but takes the printf style name argument as well as the
     parent context and the size.

The whole thing ends up being a very simple piece of code, although
some of the pointer walking gets hairy.

So far, I'm just using the new talloc() like the old one. The next
step is to actually take advantage of the new interface
properly. Expect some new commits soon that simplify some common
coding styles in samba4 by using the new talloc().
(This used to be commit e35bb094c5)
2007-10-10 12:58:14 -05:00
Andrew Tridgell
6408221433 r1819: changed "smb ports" to be a LIST parameter type in loadparm (its a classic case for a list)
(This used to be commit e53d32c65a)
2007-10-10 12:57:59 -05:00
Andrew Bartlett
7b088a8f65 r1796: Enable server-side SPNEGO, now that I have fixed the server-side SMB
signing code to be able to cope.

Andrew Bartlett
(This used to be commit cb74d52b56)
2007-10-10 12:57:57 -05:00
Andrew Bartlett
b918c6c5cd r1762: Ensure that a user (as opposed to guest) cannot login without SPNEGO,
when we have negotiated SPNEGO.

Andrew Bartlett
(This used to be commit 07e3d2c4cd)
2007-10-10 12:57:54 -05:00
Stefan Metzmacher
62c67d6505 r1747: don't segfault when the spnego mech only use one call from the client to finish
metze
(This used to be commit ddac5e46d4)
2007-10-10 12:57:53 -05:00
Andrew Tridgell
86b7b6e9f6 r1741: fixed padding of setpathinfo in server
(This used to be commit 2b41de48b2)
2007-10-10 12:57:52 -05:00
Andrew Bartlett
1c9216f36c r1731: Add server-side SPNEGO support to Samba (disabled, until SMB signing
is reworked).

Andrew Bartlett
(This used to be commit 73ee549b8c)
2007-10-10 12:57:51 -05:00
Andrew Bartlett
5fa350cb13 r1727: SPNEGO session setup replies need to include the blob, even on error
cases, so don't shorten them back to 0 byte data length.

Andrew Bartlett
(This used to be commit 66c54fe7eb)
2007-10-10 12:57:50 -05:00
Andrew Bartlett
cc09bddf29 r1726: Fix up the comments and indenting.
Andrew Bartlett
(This used to be commit 30275764d8)
2007-10-10 12:57:50 -05:00
Andrew Bartlett
1c06bf6731 r1687: Fix bogus requirement for SMB signing on guest connections.
Andrew Bartlett
(This used to be commit 3520af0f3d)
2007-10-10 12:57:49 -05:00
Andrew Tridgell
5ddf678e01 r1578: the first stage of the async client rewrite.
Up to now the client code has had an async API, and operated
asynchronously at the packet level, but was not truly async in that it
assumed that it could always write to the socket and when a partial
packet came in that it could block waiting for the rest of the packet.

This change makes the SMB client library full async, by adding a
separate outgoing packet queue, using non-blocking socket IO and
having a input buffer that can fill asynchonously until the full
packet has arrived.

The main complexity was in dealing with the events structure when
using the CIFS proxy backend. In that case the same events structure
needs to be used in both the client library and the main smbd server,
so that when the client library is waiting for a reply that the main
server keeps processing packets. This required some changes in the
events library code.

Next step is to make the generated rpc client code use these new
capabilities.
(This used to be commit 96bf4da3ed)
2007-10-10 12:57:42 -05:00
Stefan Metzmacher
d093b7e777 r1547: rename 'enum <bla>_level' -> 'enum smb_<bla>_level'
e.g. we now have 'union smb_mkdir' and 'enum smb_mkdir_level' in sync

we may should also rename 'RAW_MKDIR_*' -> 'SMB_MKDIR_*'

metze
(This used to be commit 0bb50dcf1c)
2007-10-10 12:57:41 -05:00
Andrew Bartlett
b3c46674a6 r1521: Updates to our SMB signing code.
- This causes our client and server code to use the same core code,
  with the same debugs etc.
- In turn, this will allow the 'mandetory/fallback' signing algorithms
  to be shared, and only written once.

Updates to the SPNEGO code
- Don't wrap an empty token to the server, if we are actually already finished.

Andrew Bartlett
(This used to be commit 35b83eb329)
2007-10-10 12:57:39 -05:00
Stefan Metzmacher
a1748ef743 r1514: close stuff from the server_connection not in the
close_connection fn of a specific service

metze
(This used to be commit 0e1f5e66d3)
2007-10-10 12:57:37 -05:00
Andrew Tridgell
4f5e07cef8 r1508: simple fix for broken server side signing. This may need more work for
SPNEGO, but I'll leave andrew to tackle that.
(This used to be commit 5dd71be8d9)
2007-10-10 12:57:36 -05:00
Andrew Tridgell
a02809e28e r1507: fixed the handling of SMB chaining with the new server structure. You
must think carefully about packet chaining when dealing with any
authentication or SMB parsing issues. The particular problem here was
that a chained tconX didn't get the req->session setup after an
initial sesstion setup call, so the tconx used a bogus VUID.
(This used to be commit 6f2a335cd6)
2007-10-10 12:57:36 -05:00
Stefan Metzmacher
5779a7da9a r1499: combine struct user_struct and struct smbsrv_user
to a struct smbsrv_session that the same as cli_session for the client

we need a gensec_security pointer there
(spnego support will follow)

prefix some related functions with smbsrv_

metze
(This used to be commit f276378157)
2007-10-10 12:57:36 -05:00
Stefan Metzmacher
45a85bdd35 r1486: commit the start of the generic server infastructure
the idea is to have services as modules (smb, dcerpc, swat, ...)

the process_model don't know about the service it self anymore.

TODO:
- the smbsrv should use the smbsrv_send function
- the service subsystem init should be done like for other modules
- we need to have a generic socket subsystem, which handle stream, datagram,
  and virtuell other sockets( e.g. for the ntvfs_ipc module to connect to the dcerpc server
  , or for smb or dcerpc or whatever to connect to a server wide auth service)
- and other fixes...

NOTE: process model pthread seems to be broken( but also before this patch!)

metze
(This used to be commit bbe5e00715)
2007-10-10 12:57:35 -05:00
Stefan Metzmacher
4a3e28a102 r1479: print out domain too
(This used to be commit 2758c26ac9)
2007-10-10 12:57:34 -05:00
Volker Lendecke
3a6f761eb0 r1470: Get the smb_trans2 structure out of the rap_cli_call struct.
Initial attempt at RAP server infrastructure. Look at rap_server.c for the
dummy functions that are supposed to implement the core functionality.

ipc_rap.c contains all the data shuffling. _rap_shareenum and _rap_serverenum2
in ipc_rap.c are (I think) regular enough to be auto-generated.

I did not test all the corner cases yet, but nevertheless I would like some
comments on the general style.

Volker

P.S: samba-3 smbclient now doesn't freak out anymore, although the results are
not entirely correct :-)
(This used to be commit 08140cc1a8)
2007-10-10 12:57:33 -05:00
Stefan Metzmacher
458cadff4f r1337: use sess->nt1. in sesssetup_nt1 :-)
metze
(This used to be commit ee711c71fe)
2007-10-10 12:56:51 -05:00
Stefan Metzmacher
5f4a153a0b r1336: check the vuid in old style sessionsetup too
metze
(This used to be commit 32e307857c)
2007-10-10 12:56:50 -05:00
Andrew Bartlett
dc9f55dbec r1294: A nice, large, commit...
This implements gensec for Samba's server side, and brings gensec up
to the standards of a full subsystem.

This means that use of the subsystem is by gensec_* functions, not
function pointers in structures (this is internal).  This causes
changes in all the existing gensec users.

Our RPC server no longer contains it's own generalised security
scheme, and now calls gensec directly.

Gensec has also taken over the role of auth/auth_ntlmssp.c

An important part of gensec, is the output of the 'session_info'
struct.  This is now reference counted, so that we can correctly free
it when a pipe is closed, no matter if it was inherited, or created by
per-pipe authentication.

The schannel code is reworked, to be in the same file for client and
server.

ntlm_auth is reworked to use gensec.

The major problem with this code is the way it relies on subsystem
auto-initialisation.  The primary reason for this commit now.is to
allow these problems to be looked at, and fixed.

There are problems with the new code:
- I've tested it with smbtorture, but currently don't have VMware and
  valgrind working (this I'll fix soon).
- The SPNEGO code is client-only at this point.
- We still do not do kerberos.

Andrew Bartlett
(This used to be commit 07fd885fd4)
2007-10-10 12:56:49 -05:00
Andrew Bartlett
a440e8f3b5 r1293: Indent
Andrew Bartlett
(This used to be commit 9002584c02)
2007-10-10 12:56:49 -05:00
Stefan Metzmacher
118f3edd27 r1291: rename struct smbsrv_context to smbsrv_connection
because this is the connection state per transport layer (tcp)
connection

I also moved the substructs directly into smbsrv_connection,
because they don't need a struct name and we should allway pass the complete
smbsrv_connection struct into functions

metze
(This used to be commit 60f823f201)
2007-10-10 12:56:49 -05:00
Stefan Metzmacher
d62cb6c005 r1281: move include/context.h to smb_server/smb_server.h
metze
(This used to be commit 7b4ad993ad)
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 a85d2db582)
2007-10-10 12:56:48 -05:00
Stefan Metzmacher
4ddb2d347d r1279: rename struct tcon_context to smbsrv_tcon
metze
(This used to be commit 99473fab4b)
2007-10-10 12:56:48 -05:00
Stefan Metzmacher
0aba9a2e3f r1278: rename struct user_context to smbsrv_user
metze
(This used to be commit a9ba29e00f)
2007-10-10 12:56:48 -05:00
Stefan Metzmacher
d4ae6ae74d r1277: rename struct server_context to smbsrv_ontext
because I need server_context fot the generic server infastructure

metze
(This used to be commit 0712f9f307)
2007-10-10 12:56:48 -05:00
Tim Potter
37fcf22364 r1268: varient -> variant
(This used to be commit de5984c956)
2007-10-10 12:56:46 -05:00
Stefan Metzmacher
f89a67e345 r1233: -move smb related code to smb_server/*
-move process_model code to smbd/process_model.c
-remove some used code

metze
(This used to be commit 10dd848729)
2007-10-10 12:56:46 -05:00
Andrew Tridgell
b00103dac1 r1165: fixed handling of SMBtrans replies that should return STATUS_BUFFER_OVERFLOW when more data is present.
(This used to be commit 0e557fe857)
2007-10-10 12:56:42 -05:00
Andrew Bartlett
b1268fc445 r1123: Make all lp_ string functions return 'const char *'.
Fix other 'const' warnings in the torture code.

Andrew Bartlett
(This used to be commit 5d39d7497f)
2007-10-10 12:56:38 -05:00
Andrew Tridgell
a12e30a52e r1044: don't use sub_get_remote_machine()
(This used to be commit be75cdc1bf)
2007-10-10 12:56:34 -05:00
Andrew Bartlett
0d466258be r1019: Push the auth subsystem away from using typedef, and over to the 'all
goodness and light' struct ;-)

Break apart the auth subsystem's return strucutres, into the parts
that a netlogon call cares about, and the parts that are for a local
session.  This is the 'struct session_info' and it will almost
completly replace the current information stored on a vuid, but be
generic to all login methods (RPC over TCP, for example).

Andrew Bartlett
(This used to be commit d199697014)
2007-10-10 12:56:28 -05:00
Stefan Metzmacher
770e3307ce r962: convert 'unsigned' and 'unsigned int' to uint_t
metze
(This used to be commit 57151e80eb)
2007-10-10 12:56:23 -05:00
Stefan Metzmacher
fa2e9ec311 r960: convert 'unsigned int' to uint_t in the most places
metze
(This used to be commit 18062d2ed9)
2007-10-10 12:56:23 -05:00
Stefan Metzmacher
45e93c19ef r943: change samba4 to use 'uint8_t' instead of 'unsigned char'
metze
(This used to be commit b5378803fd)
2007-10-10 12:56:21 -05:00
Andrew Tridgell
8b3f08cefc r898: - remove some unused macros
- remove unused lib/smbpasswd.c

- don't set the pkt size twice when doing SMB signing
(This used to be commit 69a2942f79)
2007-10-10 12:56:18 -05:00
Stefan Metzmacher
fcd718c7d8 r890: convert samba4 to use [u]int8_t instead of [u]int8
metze
(This used to be commit 2986c5f08c)
2007-10-10 12:56:16 -05:00
Stefan Metzmacher
f88bf54c7f r889: convert samba4 to use [u]int16_t instead of [u]int16
metze
(This used to be commit af6f1f8a01)
2007-10-10 12:56:16 -05:00
Stefan Metzmacher
f9d8f8843d r884: convert samba4 to use [u]int32_t instead of [u]int32
metze
(This used to be commit 0e5517d937)
2007-10-10 12:56:15 -05:00
Andrew Tridgell
579c13da43 r873: converted samba4 to use real 64 bit integers instead of
structures. This was suggested by metze recently.

I checked on the build farm and all the machines we have support 64
bit ints, and support the LL suffix for 64 bit constants. I suspect
some won't support strtoll() and related functions, so we will
probably need replacements for those.
(This used to be commit 9a9244a1c6)
2007-10-10 12:56:14 -05:00
Stefan Metzmacher
1f033febfe r861: remove the next round of unused stuff
metze
(This used to be commit 8f59daba0d)
2007-10-10 12:56:13 -05:00
Stefan Metzmacher
29a93d26cf r847: convert SMB SERVER SUBSYSTEM to a config.mk file
metze
(This used to be commit 7f2e8a2b84)
2007-10-10 12:53:55 -05:00
Andrew Tridgell
c5e11daa8b r818: added server side SMB signing to Samba4
(This used to be commit 8e5ddf5e8e)
2007-10-10 12:53:52 -05:00
Andrew Tridgell
8222c13ce9 r815: include our netbios name in the negprot response (this matches win2003)
(This used to be commit b4b67c3301)
2007-10-10 12:53:52 -05:00
Andrew Bartlett
d12e825042 r685: The SAM is dead! Long live the new SAM! ;-)
This commit kills passdb, which was only hosting the auth subsystem.

With the work tridge has done on Samba4's SAM backend, this can (and
now is) all hosted on ldb.  The auth_sam.c file now references this
backend.

You will need to assign your users passwords in ldb - adding a new line:

unicodePwd: myPass

to a record, using ldbedit, should be sufficient.  Naturally, this
assumes you have had your personal SAMR provisioning tutorial from
tridge.  Everybody else can still use the anonymous logins.

Andrew Bartlett
(This used to be commit 2aa0b55fb8)
2007-10-10 12:53:42 -05:00
Stefan Metzmacher
f236700ef6 r665: merge over the new build system from my tmp branch
to the main SAMBA_4_0 tree.

NOTE: that it's not completely ready, but it's functional:-)

metze
(This used to be commit c78a2ddb28)
2007-10-10 12:53:36 -05:00
Andrew Tridgell
0997d02c50 r622: removed some unused functions to make smbd compile again after
andrew's recent chainsaw job :)
(This used to be commit 20166f4e19)
2007-10-10 12:51:54 -05:00
Andrew Bartlett
c041077856 r614: Clean out the POSIX assumptions from the Samba4 auth subsystem.
This removes the code that tried to lookup posix groups, as well as
the code that was tied to the SAM_ACCOUNT.

This should make auth_ldb much easier to write :-)

Andrew Bartlett
(This used to be commit e096ee2112)
2007-10-10 12:51:51 -05:00
Andrew Tridgell
13abda1292 r612: fixed a timezone call typo noticed by abartlet
(This used to be commit 329c5ccd74)
2007-10-10 12:51:51 -05:00
Andrew Tridgell
7e921fb96d r549: added support for DOS error codes in NTSTATUS returns. This uses a
range of NTSTATUS codes that are normally invalid to prevent conflicts
with real error codes.

use the new DOS facility to fix the ERRbaduid return that volker found
(This used to be commit 10fdfb5239)
2007-10-10 12:51:47 -05:00
Andrew Tridgell
8db2f256e4 r508: fixed a place where we used free() on memory from a talloc(). The new
talloc code catches errors like this.
(This used to be commit 22aa425c96)
2007-10-10 12:51:46 -05:00
Andrew Bartlett
9f084101dd r443: Update Samba4 to the auth and NTLMSSP code from Samba3.
Not all the auth code is merged - only those parts that are actually
being used in Samba4.

There is a lot more work to do in the NTLMSSP area, and I hope to
develop that work here.  There is a start on this here - splitting
NTLMSSP into two parts that my operate in an async fashion (before and
after the actual authentication)

Andrew Bartlett
(This used to be commit 5876c78806)
2007-10-10 12:51:42 -05:00
Andrew Tridgell
ac193579e7 r152: a quick airport commit ....
added ldbedit, a _really_ useful command

added ldbadd, ldbdel, ldbsearch and ldbmodify to build

solved lots of timezone issues, we now pass the torture tests with
client and server in different zones

fixed several build issues

I know this breaks the no-LDAP build. Wait till I arrive in San Jose for that
fix.
(This used to be commit af34710d4d)
2007-10-10 12:51:11 -05:00
Andrew Tridgell
83b9f88e26 copy with a null volume name in a trans2 QFSINFO call
(This used to be commit 96c54df6fa)
2004-03-26 02:41:20 +00:00
Andrew Tridgell
f169d83a8b fixed the handling of level II oplocks in samba4, especially when
acting as a cifs redirectory (using the cifs backend)
(This used to be commit 06a8100e6a)
2004-03-25 02:41:19 +00:00
Andrew Tridgell
0340fec0c1 put the "max xmit" option back into Samba4
(This used to be commit 82e50a1ce8)
2004-03-23 03:17:38 +00:00
Andrew Tridgell
c5679b707e readx reply packets can be over-sized
(This used to be commit ad42c8432b)
2004-03-23 03:13:24 +00:00
Stefan Metzmacher
64cdbddbc1 don't inlcude rpc/rpc.h and rpcsvc/*.h anymore
and remove NET_GROUP stuff, this needs to be implemented
in a better way if we ever readd this

metze
(This used to be commit da5f22976f)
2004-02-18 15:31:25 +00:00
Stefan Metzmacher
26ecaa3226 - move all SMB server stuff to smb_server/*
and create the SMB server subsystem

- remove unused XML and MYSQL configure tests

metze
(This used to be commit 956d212c83)
2004-02-03 05:47:36 +00:00