1
0
mirror of https://github.com/samba-team/samba.git synced 2025-12-05 12:23:50 +03:00
Commit Graph

224 Commits

Author SHA1 Message Date
Simo Sorce
4f07542143 r20034: Start using ldb_search_exp_fmt() 2007-10-10 14:28:51 -05:00
Simo Sorce
3929c086d5 r19832: better prototypes for the linearization functions:
- ldb_dn_get_linearized
  returns a const string

- ldb_dn_alloc_linearized
  allocs astring with the linearized dn
2007-10-10 14:28:22 -05:00
Simo Sorce
a580c871d3 r19831: Big ldb_dn optimization and interfaces enhancement patch
This patch changes a lot of the code in ldb_dn.c, and also
removes and add a number of manipulation functions around.

The aim is to avoid validating a dn if not necessary as the
validation code is necessarily slow. This is mainly to speed up
internal operations where input is not user generated and so we
can assume the DNs need no validation. The code is designed to
keep the data as a string if possible.

The code is not yet 100% perfect, but pass all the tests so far.
A memleak is certainly present, I'll work on that next.

Simo.
2007-10-10 14:28:22 -05:00
Jelmer Vernooij
8768bec81f r19676: Fix some more dependencies. 2007-10-10 14:25:29 -05:00
Andrew Bartlett
6f67fa01ab r19660: Forgot to tell gsskrb5 not to canonicalize hostnames. Shoudl fix
valrind issues on fort, because we won't hit NSS any more.

Andrew Bartlett
2007-10-10 14:25:26 -05:00
Andrew Bartlett
476452e143 r19650: Allow Samba to use Heimdal's SPNEGO code. Currently this can only
negotiate krb5, but if this works, I'll add NTLM as a GSSAPI backend
by some means or other.

Andrew Bartlett
2007-10-10 14:25:25 -05:00
Andrew Bartlett
8117e76d2a r19644: Merge up to current lorikeet-heimdal, incling adding
gsskrb5_set_default_realm(), which should fix mimir's issues.

Andrew Bartlett
2007-10-10 14:25:24 -05:00
Andrew Bartlett
b91a921e13 r19635: It appears that under CFX, different keys are used in each direction
(or something like that).

In any case, we need to stick with the initiator subkey for now, until
we figure out what Vista uses for the CIFS session key.

Andrew Bartlett
2007-10-10 14:25:22 -05:00
Andrew Bartlett
13c9df1d4f r19633: Merge to lorikeet-heimdal, removing krb5_rd_req_return_keyblock in favour of a more tasteful replacement.
Remove kerberos_verify.c, as we don't need that code any more.
Replace with code for using the new krb5_rd_req_ctx() borrowed from
Heimdal's accecpt_sec_context.c

Andrew Bartlett
2007-10-10 14:25:21 -05:00
Andrew Bartlett
247b9f1ca9 r19629: No need to special case use of DCE_STYLE sign and seal away any more...
Andrew Bartlett
2007-10-10 14:25:20 -05:00
Andrew Bartlett
b2b77f34a4 r19628: This hint via Love at the IETF meeting:
Larry told me that most context flags needed to be set to, otherwise
it wouldn't work.

This fixes DCE_STYLE against Win2k3 SP1.  It seems they just tightened
up their end of the GSSAPI code, as DCE_STYLE is explicity rejected in
the session setup too (being the wrong layer).

Andrew Bartlett
2007-10-10 14:25:20 -05:00
Andrew Bartlett
4826f17351 r19604: This is a massive commit, and I appologise in advance for it's size.
This merges Samba4 with lorikeet-heimdal, which itself has been
tracking Heimdal CVS for the past couple of weeks.

This is such a big change because Heimdal reorganised it's internal
structures, with the mechglue merge, and because many of our 'wishes' have been granted:  we now have DCE_STYLE GSSAPI, send_to_kdc hooks and many other features merged into the mainline code.  We have adapted to upstream's choice of API in these cases.

In gensec_gssapi and gensec_krb5, we either expect a valid PAC, or NO
PAC.  This matches windows behavour.  We also have an option to
require the PAC to be present (which allows us to automate the testing
of this code).

This also includes a restructure of how the kerberos dependencies are
handled, due to the fallout of the merge.

Andrew Bartlett
2007-10-10 14:25:03 -05:00
Andrew Bartlett
2b569c42e0 r19598: Ahead of a merge to current lorikeet-heimdal:
Break up auth/auth.h not to include the world.

Add credentials_krb5.h with the kerberos dependent prototypes.

Andrew Bartlett
2007-10-10 14:25:00 -05:00
Andrew Bartlett
363628c13f r19597: Ahead of the merge to current lorikeet-heimdal:
Supply the correct OID to the error display functions.

Rework the session key functions.

Andrew Bartlett
2007-10-10 14:25:00 -05:00
Andrew Bartlett
163f753727 r19595: Seperate debug messages between database failure and simple lack of
records.

Andrew Bartlett
2007-10-10 14:24:59 -05:00
Andrew Bartlett
160a59f073 r19566: Predeclare some useful structures. 2007-10-10 14:24:53 -05:00
Jelmer Vernooij
7a01235067 r19507: Merge my DSO fixes branch. Building Samba's libraries as shared libraries
works again now, by specifying --enable-dso to configure.
2007-10-10 14:24:41 -05:00
Simo Sorce
0fa5d4bc22 r19489: Change ldb_msg_add_value and ldb_msg_add_empty to take a foruth argument.
This is a pointer to an element pointer. If it is not null it will be
filled with the pointer of the manipulated element.
Will avoid double searches on the elements list in some cases.
2007-10-10 14:24:38 -05:00
Andrew Bartlett
bd1e0f679c r19465: Rather than use the non-standard API for determining the signature
length, use the amount the wapped message expanded by.

This works, because GSSAPI doesn't do AEAD (signing of headers), and
so changing the signature length after the fact is valid.

Andrew Bartlett
2007-10-10 14:21:37 -05:00
Jelmer Vernooij
0eb6097305 r19339: Merge my 4.0-unittest branch. This adds an API for more fine-grained
output in the testsuite rather than just True or False for a
set of tests.

The aim is to use this for:
 * known failure lists (run all tests and detect tests that
						started working or started failing). This
   would allow us to get rid of the RPC-SAMBA3-* tests
 * nicer torture output
 * simplification of the testsuite system
 * compatibility with other unit testing systems
 * easier usage of smbtorture (being able to run one test
						and automatically set up the environment for that)

This is still a work-in-progress; expect more updates over the next couple of
days.
2007-10-10 14:21:12 -05:00
Simo Sorce
6fad80bb09 r19299: Fix possible memleaks 2007-10-10 14:21:04 -05:00
Andrew Bartlett
c9c2e90e2e r19265: It is not an error to set the target hostname to NULL.
Andrew Bartlett
2007-10-10 14:21:00 -05:00
Andrew Bartlett
8357f8be45 r18354: It seems safe to enable the DIGEST-MD5 module now.
Andrew Bartlett
2007-10-10 14:18:17 -05:00
Andrew Tridgell
449fab2c26 r18321: fixed some warnings on AIX 2007-10-10 14:18:08 -05:00
Andrew Tridgell
eba6c84eff r18301: I discovered how to load the warnings from a build farm build into
emacs compile mode (hint, paste to a file, and compile as "cat
filename").

This allowed me to fix nearly all the warnings for a IA_64 SuSE build
very quickly.
2007-10-10 14:18:04 -05:00
Andrew Tridgell
22c3902762 r18295: pass write type for packet_size
this fixes a crash on IA_64 systems
2007-10-10 14:18:03 -05:00
Andrew Bartlett
8ae880b501 r18257: Order the GENSEC modules, with unknown modules last.
Andrew Bartlett
2007-10-10 14:17:57 -05:00
Andrew Bartlett
73fba185eb r18255: Remove the SMB_ASSERT(), as these are not talloc()'ed structures.
Andrew Bartlett
2007-10-10 14:17:56 -05:00
Andrew Bartlett
2da948cb6e r18253: Turn Cyrus-SASL DIGEST-MD5 off by default for now.
Andrew Bartlett
2007-10-10 14:17:56 -05:00
Andrew Bartlett
0afb4d1992 r18250: Add an ordering of GENSEC modules, so we do preferred modules first.
Andrew Bartlett
2007-10-10 14:17:55 -05:00
Andrew Bartlett
7dba525f55 r18249: Keep trying to start an GENSEC mech from the list until one actually
starts.

Andrew Bartlett
2007-10-10 14:17:55 -05:00
Andrew Bartlett
32d8a23d54 r18242: The cyrus-sasl encode/decode routines process the entire input.
Andrew Bartlett
2007-10-10 14:17:54 -05:00
Andrew Bartlett
8e12f92bbe r18198: Fix callbacks to use allocated or constant memory, not the stack.
These values are used by SASL at a later time, and must remain valid.

Make the password callback actually return the password.

Andrew Bartlett
2007-10-10 14:17:48 -05:00
Andrew Bartlett
0b193d28c8 r18155: Add my work in progress, a module to link with Cyrus-SASL, for a
DIGEST-MD5 implemenation in particular.

However, I can't make this work:  Cyrus-SASL isn't loading the mech...

Andrew Bartlett
2007-10-10 14:17:43 -05:00
Andrew Bartlett
0a098006b4 r18068: This splits the handling of multiple SASL packets between the GENSEC
backend (if it chooses to implement it), or the GENSEC socket code.

This is to allow us to handle DIGEST-MD5 across to cyrus-sasl.

Andrew Bartlett
2007-10-10 14:17:11 -05:00
Simo Sorce
ad75cf8695 r17516: Change helper function names to make more clear what they are meant to do 2007-10-10 14:15:31 -05:00
Stefan Metzmacher
015a65e001 r17344: move the gensec_update_request structure into the header file
and add a private_data for the backends.

metze
2007-10-10 14:15:17 -05:00
Stefan Metzmacher
679ac74e71 r17341: pass a messaging context to auth_context_create()
and gensec_server_start().

calling them with NULL for event context or messaging context
is no longer allowed!

metze
2007-10-10 14:15:17 -05:00
Andrew Bartlett
a2d6141476 r17332: May as well make this a round number 2007-10-10 14:15:16 -05:00
Stefan Metzmacher
c49e27d5d0 r17272: move the callback stuff into a substructure
metze
2007-10-10 14:10:26 -05:00
Stefan Metzmacher
d5638a4faf r17267: - add an async interface for gensec_update() to the public gensec api
- note this is still uses the sync update() hook of the gensec modules
  but it allows me to fix the callers first

Later auth_check_password() will also get an async version,
so that we can later implement an async version of auth_winbind
using async IRPC to the winbind task.

metze
2007-10-10 14:10:25 -05:00
Andrew Bartlett
68ddc4921f r17223: In some protocols it is not possible to negoitate off some features,
without the agreement of the peer.  This can cause problems, because
one side things sealing is disabled, while the other thinks it is
enabled.

Andrew Bartlett
2007-10-10 14:10:20 -05:00
Andrew Bartlett
003e2ab93c r17222: Change the function prototypes for the GENSEc and TLS socket creation
routines to return an NTSTATUS.  This should help track down errors.

Use a bit of talloc_steal and talloc_unlink to get the real socket to
be a child of the GENSEC or TLS socket.

Always return a new socket, even for the 'pass-though' case.

Andrew Bartlett
2007-10-10 14:10:20 -05:00
Andrew Bartlett
5d7c9c12cb r17197: This patch moves the encryption of bulk data on SASL negotiated security
contexts from the application layer into the socket layer.

This improves a number of correctness aspects, as we now allow LDAP
packets to cross multiple SASL packets.  It should also make it much
easier to write async LDAP tests from windows clients, as they use SASL
by default.  It is also vital to allowing OpenLDAP clients to use GSSAPI
against Samba4, as it negotiates a rather small SASL buffer size.

This patch mirrors the earlier work done to move TLS into the socket
layer.

Unusual in this pstch is the extra read callback argument I take.  As
SASL is a layer on top of a socket, it is entirely possible for the
SASL layer to drain a socket dry, but for the caller not to have read
all the decrypted data.  This would leave the system without an event
to restart the read (as the socket is dry).

As such, I re-invoke the read handler from a timed callback, which
should trigger on the next running of the event loop.  I believe that
the TLS code does require a similar callback.

In trying to understand why this is required, imagine a SASL-encrypted
LDAP packet in the following formation:

+-----------------+---------------------+
| SASL  Packet #1 | SASL Packet #2      |
----------------------------------------+
| LDAP Packet #1       | LDAP Packet #2 |
----------------------------------------+

In the old code, this was illegal, but it is perfectly standard
SASL-encrypted LDAP.  Without the callback, we would read and process
the first LDAP packet, and the SASL code would have read the second SASL
packet (to decrypt enough data for the LDAP packet), and no data would
remain on the socket.

Without data on the socket, read events stop.  That is why I add timed
events, until the SASL buffer is drained.

Another approach would be to add a hack to the event system, to have it
pretend there remained data to read off the network (but that is ugly).

In improving the code, to handle more real-world cases, I've been able
to remove almost all the special-cases in the testnonblock code.  The
only special case is that we must use a deterministic partial packet
when calling send, rather than a random length.  (1 + n/2).  This is
needed because of the way the SASL and TLS code works, and the 'resend
on failure' requirements.

Andrew Bartlett
2007-10-10 14:10:18 -05:00
Andrew Bartlett
e96638bc74 r17173: Check for oversize output, not oversize input, and fix the GSSAPI mech
to work (it broke it in the previous commit).

Andrew Bartlett
2007-10-10 14:10:16 -05:00
Andrew Bartlett
cbbe99d9c1 r17171: Add a gensec function to determine the maximum negotiated buffer size,
and the maximum amount of user data that may be fitted into that.

This is used in the new SASL code, to correctly honour SASL buffer sizes.

Andrew Bartlett
2007-10-10 14:10:15 -05:00
Andrew Bartlett
3e58350ec2 r16829: Fix a number of issues raised by the IBM checker, or gcc warnings.
In particular, this removes one use of the LDB_DN_NULL_FAILED macro,
which was being used on more than DNs, had an embedded goto, and
confused the IBM checker.

In the password_hash code, ensure that sambaAttr is not, before
checking the number of values.

In GENSEC, note that this switch value can't occour.  This seems to be
the only way to quiet both the IBM checker and gcc, as well as cope
with possibly invalid inputs.

Andrew Bartlet
2007-10-10 14:09:48 -05:00
Jelmer Vernooij
c4b3c2b18c r16516: Get rid of file_exists() as there already is a file_exist(). 2007-10-10 14:09:31 -05:00
Andrew Bartlett
ae2913898c r16056: Fix errors found by trying to use our kpasswd server and the Apple client.
Andrew Bartlett
2007-10-10 14:08:54 -05:00
Andrew Tridgell
6b4c085b86 r15853: started the process of removing the warnings now that
talloc_set_destructor() is type safe. The end result will be lots less
use of void*, and less calls to talloc_get_type()
2007-10-10 14:08:32 -05:00