diff options
author | Günther Deschner <gd@samba.org> | 2004-11-19 13:26:17 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 10:53:22 -0500 |
commit | 7c93bdcdf8334d4f2140405a982ea02943c5553c (patch) | |
tree | d158503bdfd5d09019355879ec226f577324f359 /source3/passdb | |
parent | d0bb5f9505b1bd90913d159f91c7aa9c5654bf73 (diff) | |
download | samba-7c93bdcdf8334d4f2140405a982ea02943c5553c.tar.gz samba-7c93bdcdf8334d4f2140405a982ea02943c5553c.tar.bz2 samba-7c93bdcdf8334d4f2140405a982ea02943c5553c.zip |
r3875: Allow to look up at least or own sid in _lsa_lookup_sids.
This fixes Bugzilla #1076 and Exchange 5.5 SP4 can then be finally
installed on NT4 in a samba-controlled domain.
Guenther
(This used to be commit bb191c1098dea06bf2cd89276c74e32279fbb3d4)
Diffstat (limited to 'source3/passdb')
-rw-r--r-- | source3/passdb/lookup_sid.c | 7 | ||||
-rw-r--r-- | source3/passdb/passdb.c | 8 |
2 files changed, 15 insertions, 0 deletions
diff --git a/source3/passdb/lookup_sid.c b/source3/passdb/lookup_sid.c index e40a71c145..4df497461a 100644 --- a/source3/passdb/lookup_sid.c +++ b/source3/passdb/lookup_sid.c @@ -76,6 +76,13 @@ BOOL lookup_sid(const DOM_SID *sid, fstring dom_name, fstring name, enum SID_NAM /* Check if this is our own sid. This should perhaps be done by winbind? For the moment handle it here. */ + if (sid->num_auths == 4 && sid_equal(get_global_sam_sid(), sid)) { + DOM_SID tmp_sid; + sid_copy(&tmp_sid, sid); + return map_domain_sid_to_name(&tmp_sid, dom_name) && + local_lookup_sid(sid, name, name_type); + } + if (sid->num_auths == 5) { DOM_SID tmp_sid; uint32 rid; diff --git a/source3/passdb/passdb.c b/source3/passdb/passdb.c index 74ac8fa865..35317b9816 100644 --- a/source3/passdb/passdb.c +++ b/source3/passdb/passdb.c @@ -742,6 +742,14 @@ BOOL local_lookup_sid(const DOM_SID *sid, char *name, enum SID_NAME_USE *psid_na GROUP_MAP map; BOOL ret; + if (sid_equal(get_global_sam_sid(), sid)) { + *psid_name_use = SID_NAME_DOMAIN; + fstrcpy(name, ""); + DEBUG(5,("local_lookup_sid: SID is our own domain-sid: %s.\n", + sid_string_static(sid))); + return True; + } + if (!sid_peek_check_rid(get_global_sam_sid(), sid, &rid)){ DEBUG(0,("local_lookup_sid: sid_peek_check_rid return False! SID: %s\n", sid_string_static(&map.sid))); |