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

103 Commits

Author SHA1 Message Date
Jeremy Allison
e33e9defa6 Fix crashbug discovered by "Kim R. Pedersen" <krp@filanet.dk> where
cli struct was being deallocated in a called function.
Jeremy.
-
Jeremy Allison
3b71529c69 Formatting tidyup and additon of cli_close_connection() before bugfix.
Jeremy.
-
Richard Sharpe
53e4975337 Fix the client side NTLMSSP. It now works between smbclient and smbd!
However, it does not work with Win2K over 445 with raw NTLMSSP!
-
Richard Sharpe
5784835db9 Parse the NTLMSSP Challenge in cliconnect.c.
This gets us closer ... Should have the challenge now. Need to check that it works.
-
Richard Sharpe
b28267f52c Make sure that an NTLMSSP negotiate blob has the correct stuff in it! -
Richard Sharpe
aaa7a681ce The session key in NTLMSSP AUTH blobs is actually an empty string.
Also, the negotiate blob has two ASCI strings encoded in the same way that the
UNICODE strings are, they are just in ASCII. The PARSER and Generator will have to deal with that.
-
Andrew Tridgell
b04e91f660 convert the LDAP/SASL code to use GSS-SPNEGO if possible
we now do this:

- look for suported SASL mechanisms on the LDAP server
- choose GSS-SPNEGO if possible
- within GSS-SPNEGO choose KRB5 if we can do a kinit
- otherwise use NTLMSSP

This change also means that we no longer rely on having a gssapi
library to do ADS.

todo:
- add TLS/SSL support over LDAP
- change to using LDAP/SSL for password change in ADS
-
Andrew Bartlett
7746de6a3c Some fixes for SMB signing. I can now get Win2k to correctly respond with a
security signiture, but I can't get it to accept ours.

Andrew Bartlett
-
Andrew Bartlett
de1964f7fa Updates!
- Don't print an uninitialised buffer in service.c
- Change some charcnv.c functions to take smb_ucs2_t ** instead of void **
- Update NTLMv2 code to use dynamic buffers
- Update experimental SMB signing code - still more work to do
- Move sys_getgrouplist() to SAFE_FREE() and do a DEBUG() on initgroups()
  failure.

Andrew Bartlett
-
Herb Lewis
123eee6206 move where got_sig_term and reload_after_sighup are defined.
populate cli structure with called name and calling name even for port
445 connects.
-
Andrew Tridgell
7c2167182b fixed memory corruption in cli_full_connection() -
Andrew Tridgell
1a6dfddf67 this fixes plaintext passwords with win2000
there were 2 bugs:

1) we were sending a null challenge when we should have sent an empty
   challenge

2) the password can be in unicode if unicode is negotiated. This means
   our client code was wrong too :(
-
Andrew Bartlett
888d595fab Mimir has been busy with patches again, and sent in the following
patches:

Andrew Bartlett

From his e-mail:

Below I attach the following patches as a result of my work
on trusted domains support:
 1) srv_samr_nt.c.diff
    This fixes a bug which caused to return null string as
    the first entry of enumerated accounts list (no matter what
    entry, it was always null string and rid) and possibly
    spoiled further names, depeding on their length.
    I found that while testing my 'net rpc trustdom list'
    against nt servers and samba server.
 2) libsmb.diff
    Now, fallback to anonymous connection works correctly.
 3) smbpasswd.c.diff
    Just a little fix which actually allows one to create
    a trusting domain account using smbpasswd
 4) typos.diff
    As the name suggests, it's just a few typos fix :)
-
Andrew Tridgell
f4f2b613a2 fixed a segv in net time when the host is unavailable -
Andrew Bartlett
8196ee908e Try to fix up warnings - particularly on the IRIX 64 bit compiler (which had a
distinction between uchar and char).

Lots of const etc.

Andrew Bartlett
-
Andrew Bartlett
95519d408c Fix up char/uchar casts etc. Fix up comments on some of the password hash
wrappers.

Andrew Bartlett
-
Andrew Tridgell
cd82ba41b8 checking for NULL really is counter-productive, and this one was also
generating a warning
-
Christopher R. Hertel
cd2b135706 The 17-bit length field in the header contains the number of
bytes which follow the header, not the full packet size.

    [Yes, the length field is either 17-bits, or (per the RFCs) it is a
    16-bit length field preceeded by an 8-bit flags field of which only
    the low-order bit may be used.  If that bit is set, then add 65536 to
    the 16-bit length field.  (In other words, it's a 17-bit unsigned
    length field.)
    ...unless, of course, the transport is native TCP [port 445] in which
    case the length field *might* be 24-bits wide.]

Anyway, the change is a very minor one.  We were including the four bytes
of the header in the length count and, as a result, sending four bytes of
garbage at the end of the SESSION REQUEST packet.

Small fix in function cli_session_request().
-
Andrew Tridgell
6b28ca8bd2 reverted some bogus test code that jeremy accidentally committed -
Andrew Bartlett
23689b0746 Update cli_full_connection() to take a 'flags' paramater, and try to get a
few more places to use it.

Andrew Bartlett
-
Jeremy Allison
5841ca54b6 Don't use uint. It doesn't exist on some platforms and we don't define it.
Replaced with "unsigned int".
Jeremy.
-
Andrew Bartlett
a8805a34e5 Two things: Check how many paramaters that the LDAP libs take for the
rebind proc (some give an extra paramter to pass a void* paramater) and
some small changes for the SMB signing code to reset things when the
signing starts, and to 'turn off' signing if the session setup failed.

Andrew Bartlett
-
Andrew Bartlett
1dc5a87658 Fix up some of the SMB signing code:
The problem was that *all* packets were being signed, even packets before
signing was set up.  (This broke the session request).

This fixes it to be an 'opt in' measure - that is, we only attempt to sign
things after we have got a valid, non-guest session setup as per the CIFS spec.

I've not tested this against an MS server, becouse my VMware is down, but
at least it doesn't break the build farm any more.

Andrew Bartlett
-
Jeremy Allison
9d46193376 Ok, now I can try my first client test...
Jeremy.
-
Andrew Bartlett
8fb1a9c6ba A couple of updates for the SmbEncrypt code, and some of its users.
(const, takes unix string as arg)

Also update cli_full_connection to take NULL pointers as 'undefined' correctly,
and therefore do its own lookup etc.  This what was intended, but previously
you needed to supply a 0.0.0.0 IP address.

Andrew Bartlett
-
Jeremy Allison
3c05f7c06f More cleanup work preparing for SMB signing.
Jeremy.
-
Andrew Bartlett
dec650efa8 Update some of the LM hash code to better respect the seperation between
unix and DOS strings.

This pushes all the 'have to uppercase, must be 14 chars' stuff behind the
the interface.

Andrew Bartlett
-
Andrew Bartlett
cdcfe3671e Clean up a few unused functions, add a bit of static etc.
Importantly:

The removal of the silly 'delete user script' behaviour when secuity=domain.

I have left the name the same - as it still does the (previously documented,
but not in smb.conf(5)) sane behaviour of deleting users on request.

When we decide what to do with the 'add user' functionality, we might
rename it.

Andrew Bartlett
-
Andrew Bartlett
c205b18bd6 Remove the password length paramater from cli_full_connection - it really
didn't make any sense, and its was always just strlen(password) anyway.

This fixes it to be strlen(password)+1

Andrew Bartlett
-
Andrew Bartlett
fa67e4626b Given Jeremy's positive response, and a lack of one from tpot, I'll commit
this:

More code cleanup - this lot a bit more dodgy than the last:

The aim is to trim pwd_cache down to size.  Its overly complex, and a
pain to deal with.  With a header comment like this:

'obfusticaion is planned'

I think it deserved to die (at least partly).

This was being done to allow 'cli_establish_connection' to die - its
functionality has been replaced by cli_full_connection(), which does
not duplicate code everywhere for creating names etc.

This also removes the little 'init' fucntions for the various pipes,
becouse they were only used in one place, and even then it was dodgy.

(I've reworked smbcacls not to use anonymous connections any more, as
this will (should) fail with a 'restrict anonymous' PDC).

This allowed me to remove cli_pipe_util.c, which was calling
cli_establish_connection.

tpot:  I'm not sure what direction you were going with the client stuff,
and you may well have been wanting the init functions.  If thats the case,
give me a yell and I'll reimplement them against cli_full_connection.

Andrew Bartlett
-
Andrew Bartlett
b04561d3fd This removes --with-ssl from Samba.
This option was badly maintained, useless and confused our users and
distirbutors.  (its SSL, therfore it must be good...)

No windows client uses this protocol without help from an SSL tunnel.

I can't see any reason why setting up a unix-side SSL wrapper would
be any more difficult than the > 10 config options this mess added
to samba in any case.

On the Samba client end, I think the LIBSMB_PROG hack should be
sufficient to start stunnel on the unix side.  We might extend this
to take %i and %p (IP and port) if there is demand.

Andrew Bartlett
-
Andrew Tridgell
7f923d738b better handling of DOS LANMAN2.1 protocol -
Jeremy Allison
146fb9d12b Always pass NT password as well as Lanman.
Jeremy.
-
Tim Potter
252da94ebb Removed duplicate \n from debug message.
Small tidyups.
-
Tim Potter
6a58c9bd06 Removed version number from file header.
Changed "SMB/Netbios" to "SMB/CIFS" in file header.
-
Andrew Bartlett
20e0b56228 Fix a couple of memory leaks in the cli_establish_connection() code's failure
case.

Thanks to Nigel Williams <nigel@wednesday.demon.co.uk> for spotting these!

Andrew Bartlett
-
Jeremy Allison
01ff6ce496 Same fix as went into 2.2 (I'm waiting for jerry to finish some code).
Jeremy.
-
Andrew Tridgell
0b0b937b58 fixed a crash bug in domain auth caused by an uninitialised nt_status -
Andrew Bartlett
ab8ff85f03 Fix up 'net ads join' to delete and rejoin if the account already exists.
This fixes up a problem where a machine would join (or downgrade by trust
password change) to NT4 membership and not be able to regain full ADS
membership until a 'net ads leave'.

Andrew Bartlett
-
Tim Potter
6c42bf2089 Check for winbind separator in user name for cli_session_setup()
Patch from Alexander Bokovoy <a.bokovoy@sam-solutions.net>
-
Andrew Bartlett
2d1612dd35 Ensure the output cli can't have spurious values if the connection fails... -
Andrew Tridgell
20368455ea - handle kerberos session setup reply with broken null termination
- don't display Domain=[] for auth protocols that don't give us a domain
-
Andrew Tridgell
1da988456d try to handle end of packet for not null terminated domain strings -
Andrew Tridgell
a181f49b42 handle a NULL hostname in cli_connect() -
Andrew Tridgell
b4304c5231 detect attempts to connect to names of the type NAME#xx and do a
netbios lookup for name NAME with node type xx.

This affects all our client progs. Very useful :)
-
Andrew Tridgell
c7665706cd when using non-encrypted password ignore the ntpass variable to
session setup
-
Andrew Bartlett
eee925861a This change reworkes the connection code for both rpcclient and net new
'net' untility.

This should make it easier to port rpcclient code across to net.

It also allows SPNEGO (the NTLMSSP subsystem in particular) to work, becouse
it kills off the early destruction of the clear-text password.

Andrew Bartlett
-
Andrew Tridgell
23ef22f117 fixed some krb5 ifdefs -
Andrew Tridgell
e790bb21d3 fixed a core dump in server level security -
Andrew Tridgell
e2ba2383c9 fix a bunch of places where we can double-free a cli structure -