summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2008-10-01 08:30:15 +0200
committerMichael Adam <obnox@samba.org>2008-12-25 12:14:02 +0100
commit9a9b64dbdfce4414ada22d4f882c8c757b5813e1 (patch)
treec6e2d4a91bb0f34e4f2a2295d121dcd6105af3fc
parent83bcc4e0273d1b58d1692910a6bc8e2c1f785497 (diff)
downloadsamba-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.c15
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);