diff options
author | Michael Adam <obnox@samba.org> | 2008-10-01 08:30:15 +0200 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2008-12-25 12:14:02 +0100 |
commit | 9a9b64dbdfce4414ada22d4f882c8c757b5813e1 (patch) | |
tree | c6e2d4a91bb0f34e4f2a2295d121dcd6105af3fc | |
parent | 83bcc4e0273d1b58d1692910a6bc8e2c1f785497 (diff) | |
download | samba-9a9b64dbdfce4414ada22d4f882c8c757b5813e1.tar.gz samba-9a9b64dbdfce4414ada22d4f882c8c757b5813e1.tar.bz2 samba-9a9b64dbdfce4414ada22d4f882c8c757b5813e1.zip |
s:Fix uid_to_sid mapping when the idmap cache is empty.
This failed for backends other than passed, since
idmap_backends_unixid_to_sid() always asked passdb first,
which returned Success no matter whether a mapping was
found or not.
One effect wast that getpwuid failed after "net cache flush".
Only after filling the cache with a getpwnam call it succeeded.
This fix makes the behaviour of idmap_backends_unixid_to_sid()
exactly the same as that of idmap_backends_sid_to_unixid()
Michael
Signed-off-by: Michael Adam <obnox@samba.org>
-rw-r--r-- | source3/winbindd/idmap.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/source3/winbindd/idmap.c b/source3/winbindd/idmap.c index aaba7e53ee..38cc0d0c0a 100644 --- a/source3/winbindd/idmap.c +++ b/source3/winbindd/idmap.c @@ -735,14 +735,13 @@ NTSTATUS idmap_backends_unixid_to_sid(const char *domname, struct id_map *id) maps[0] = id; maps[1] = NULL; - /* - * Always give passdb a chance first - */ - - dom = idmap_init_passdb_domain(NULL); - if ((dom != NULL) - && NT_STATUS_IS_OK(dom->methods->unixids_to_sids(dom, maps))) { - return NT_STATUS_OK; + if (sid_check_is_in_builtin(id->sid) + || (sid_check_is_in_our_domain(id->sid))) { + dom = idmap_init_passdb_domain(NULL); + if (dom == NULL) { + return NT_STATUS_NONE_MAPPED; + } + return dom->methods->unixids_to_sids(dom, maps); } dom = idmap_find_domain(domname); |