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
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);