mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
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>
This commit is contained in:
parent
83bcc4e027
commit
9a9b64dbdf
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user