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

46 Commits

Author SHA1 Message Date
Jeremy Allison
3c05f7c06f More cleanup work preparing for SMB signing.
Jeremy.
-
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
d57a1b4629 A few more trusted domains updates from mimir.
I think we may still need to look at our server enumeration code, but
other than that, its much better in the tree than out.

Andrew Bartlett
-
Tim Potter
245468dbab The cli_lsa_lookup_{names,sids} functions were returning useless
information when one or more of the names/sids being queried were not
resolvable.  We now return a list the same length as the parameters passed
instead of an array of just the resolvable names/sids.
-
Tim Potter
6dc80d6257 If compiling with Insure, mallocate a byte of memory and attach it to the
POLICY_HND structure when passing new handles back from the appropriate
cli_* functions.  When closing the policy handle free the memory.

Insure (and indeed other memory checkers) should detect handles that have
not been closed properly as memory leaks.  Unfortunately this can only be
done when the program terminates (set insure++.summarize leaks in your
.psrc file) rather than when the policy handle falls out of scope.

Looks like Jeremy has squished all the policy handle leaks at the moment
but more are bound to crop up later.
-
Tim Potter
6b20a80902 oops -
Tim Potter
fb32f7199b Fixed memory leak in cli_lsa_enum_trust_dom(). Use talloc_strdup() instead
of strdup().
-
Tim Potter
1f007d3ed4 Renamed get_nt_error_msg() to nt_errstr(). -
Andrew Bartlett
aeecb7a06b This fixes a bug (spotted by Rafal Szczesniak <mimir@diament.ists.pwr.wroc.pl>)
where we pass the client's name.  We should pass the servers name.

Andrew Bartlett
-
Gerald Carter
50fa21c995 merge from 2.2 -
Tim Potter
6a58c9bd06 Removed version number from file header.
Changed "SMB/Netbios" to "SMB/CIFS" in file header.
-
Andrew Bartlett
5dfba2cf53 Back out some of the less well thought out ideas from last weeks work on
winbind default domains, particulary now I understand whats going on a lot
better.  This ensures that the RPC client code does as little 'magic' as
possible - this is up to the application/user.  (Where - for to name->sid code
- it was all along).  This leaves the change that allows the sid->name code to
return domains and usernames in seperate paramaters.

Andrew Bartlett
-
Andrew Bartlett
e870f0e727 This patch makes the 'winbind use default domain' code interact better with
smbd, and also makes it much cleaner inside winbindd.

It is mostly my code, with a few changes and testing performed by Alexander
Bokovoy <a.bokovoy@sam-solutions.net>.  ab has tested it in security=domain and
security=ads, but more testing is always appricatiated.

The idea is that we no longer cart around a 'domain\user' string, we keep them
seperate until the last moment - when we push that string into a pwent on onto
the socket.

This removes the need to be constantly parsing that string - the domain prefix
is almost always already provided, (only a couple of functions actually changed
arguments in all this).

Some consequential changes to the RPC client code, to stop it concatonating the
two strings (it now passes them both back as params).

I havn't changed the cache code, however the usernames will no longer have a
double domain prefix in the key string.  The actual structures are unchanged
 - but the meaning of 'username' in the 'rid' will have changed.  (The cache is
invalidated at startup, so on-disk formats are not an issue here).

Andrew Bartlett
-
Tim Potter
5c8f6be290 Minor doc cleanups. -
Jean-François Micouleau
a217c4e4ff there is no unknown field in LSA_SEC_QOS
some cleanup of the lsa_open_policy and lsa_open_policy2 parser. the
length fields are not correct but that's what NT send. We don't anymore
underflow or overflow the decoding.

added the domain admins group to the default SD.

we are now checking the desired access flag in the lsa_open_policy_X()
calls and in most functions also.

        J.F.
-
Tim Potter
59b2e3f408 Doing some research into ACLs on the LSA and SAM policy objects.
- added lsaquerysecobj to rpcclient
 - renamed querysecobj to samquerysecobj
 - removed duplicated display_sec_acl() code from cmd_spoolss.c and
   cmd_samr.c and moved it into display_sec.c
-
Jeremy Allison
2919851235 Added fetch_domain_sid. Not used in current code, but a nice example
of how to use this interface.
Jeremy.
-
Andrew Tridgell
359ca8f246 const religion -
Jean-François Micouleau
1748d5a2af added lsaenumprivsaccount and lsalookupprivvalue to rpcclient
and more to come ...

	J.F.
-
Jean-François Micouleau
f29774e589 Changed how the privileges are stored in the group mapping code. It's now
an array of uint32. That's not perfect but that's better.

Added more privileges too.

Changed the local_lookup_rid/name functions in passdb.c to check if the
group is mapped. Makes the LSA rpc calls return correct groups

Corrected the return code in the LSA server code enum_sids.

Only enumerate well known aliases if they are mapped to real unix groups.
Won't confuse user seeing groups not available.

Added a short/long view to smbgroupedit.

now decoding rpc calls to add/remove privileges to sid.

        J.F.
-
Tim Potter
80dca2c9e4 Finally worked out why a enumerate trusted domains was returning a
NT_STATUS_UNABLE_TO_FREE_VM error.  This error code was mis-defined
as 0x8000001a instead of 0xc000001a.  The former is actually a
NT_STATUS_NO_MORE_ENTRIES warning which is what we see in the status
code.

Removed the & 0xffffff from the loop in get_nt_error_msg() as all the
error constants now have the correct high bits set.
-
Jean-François Micouleau
646651018a added lsa_enum_sids to rpcclient
fixed lsa_enum_rpivs server code. This time it works as W2K.
fixed smbgroupedit to compile and work.

	J.F.
-
Tim Potter
d1dee2d032 Removed unused variable. -
Tim Potter
d2034bc5f7 Oops - opening wrong pipe name in cli_lsa_initialise() helper function. -
Jean-François Micouleau
84035ae72f add another command to rpcclient: getdispname. Show the full description
of a privilege.

	J.F.
-
Jean-François Micouleau
fa63cb78e3 add a command to rpcclient: enumprivs
J.F.
-
Jeremy Allison
9f8c644abc Got positive and negative name caching working correctly with lookupname/lookupsid.
There was a bug in cli_lsa_lookup_name/lookup_sid where NT_STATUS_NONE_MAPPED was
being mapped to NT_STATUS_OK, and also the *wrong* number of entries mapped
was being returned. The correct field is mapped_count, *NOT* num_entries.
Jeremy.
-
Martin Pool
5c892badbc Doxygen demo for Tim. -
Andrew Tridgell
dcd6e735f7 the next stage in the NTSTATUS/WERROR change. smbd and nmbd now compile, but the client code still needs some work -
Tim Potter
9e69f59d6c Convert to NTSTATUS. -
Andrew Tridgell
1d36250e33 converted another bunch of stuff to NTSTATUS -
Tim Potter
afaafc3e5a Added cli_lsa_open_policy2() -
Tim Potter
04d978258b Factored out common rpc pipe initialisation and shutdown code. -
Tim Potter
e0ebbc9ae3 In cli_lsa_lookup_sids() don't append a separator character between domain
and name if there is no name.
-
Tim Potter
2accab2589 Changed the cli_lsa_lookup_sids() function to unpack the domain and user or
group using rpcstr_pull_unistr2_fstring rather than pull_ascii_fstring (!!)
-
Andrew Tridgell
debb471267 The big character set handling changeover!
This commit gets rid of all our old codepage handling and replaces it with
iconv. All internal strings in Samba are now in "unix" charset, which may
be multi-byte. See internals.doc and my posting to samba-technical for
a more complete explanation.
-
Tim Potter
465994cfbc Cleanup of cli_lsa_enum_trust_dom(). talloc() doesn't like attempts to
allocate 0 bytes.
-
Tim Potter
48688c4592 Memory leak fixes plus general cleanup. -
Tim Potter
ff9e222e2f Some reformatting (sorry Gerald).
Cleanup of exit paths.

Added query domain info and query display info.
-
Gerald Carter
0a6ceed279 rpcclient merge from 2.2 (including Jeremy's non-void return fix) -
Jeremy Allison
0cd37c831d Serious (and I *mean* serious) attempt to fix little/bigendian RPC issues.
We were reading the endainness in the RPC header and then never propagating
it to the internal parse_structs used to parse the data.
Also removed the "align" argument to prs_init as it was *always* set to
4, and if needed can be set differently on a case by case basis.
Now ready for AS/U testing when Herb gets it set up :-).
Jeremy.
-
Tim Potter
751483a155 Fixed authenticated pipe access.
Added cli_lsa_enum_trust_dom().

Misc other cosmetic changes.
-
Tim Potter
dcea2a4bc0 Added query info policy call. -
Tim Potter
8ccd06ee96 Streamlined exit path.
Allow NULL to be passed to cli_lsa_initialise() which creates an anonymous
connection to the server.
-
Jeremy Allison
0a40bc83e1 Fixed memory leaks in lsa_XX calls. Fixed memory leaks in smbcacls. Merged
in fixes from appliance-head and 2.2. Fixed multiple connection.tdb open
problem.
Jeremy.
-
Tim Potter
129d5a155a Lightweight rpc client library. Uses only routines in libsmb and
rpc_client/cli_pipe.c

Only cli_lsa_open_policy(), cli_lsa_close(), cli_lsa_lookup_names()
and cli_lsa_lookup_sids() implemented so far.
-