diff options
author | Stefan Metzmacher <metze@samba.org> | 2019-03-21 16:54:31 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2023-03-10 11:35:06 +0000 |
commit | 7ee725f2860d835e9619fa594a2ee6faedbc6d21 (patch) | |
tree | f70e895cac3f40939b5e09117b9c34da00767498 | |
parent | ee820553fd2c6ada966a0160cbb0240049f9d9f7 (diff) | |
download | samba-7ee725f2860d835e9619fa594a2ee6faedbc6d21.tar.gz |
idmap_hash: remember new domain sids in idmap_hash_sid_to_id()
This change means that idmap_hash_id_to_sid() can return mappings
for new domains learned in idmap_hash_sid_to_id().
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15319
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Autobuild-User(master): Stefan Metzmacher <metze@samba.org>
Autobuild-Date(master): Fri Mar 10 11:35:06 UTC 2023 on atb-devel-224
-rw-r--r-- | source3/winbindd/idmap_hash/idmap_hash.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/source3/winbindd/idmap_hash/idmap_hash.c b/source3/winbindd/idmap_hash/idmap_hash.c index a3430350625..e9d90e3d02b 100644 --- a/source3/winbindd/idmap_hash/idmap_hash.c +++ b/source3/winbindd/idmap_hash/idmap_hash.c @@ -295,12 +295,11 @@ static NTSTATUS idmap_hash_sid_to_id(struct sid_hash_table *hashed_domains, */ if (netsamlogon_cache_have(&sid)) { /* - * We keep the legacy behavior and - * just return the mapping, but - * the reverse mapping would not - * still not work. + * The domain is valid, so we'll + * remember it in order to + * allow reverse mappings to work. */ - goto return_mapping; + goto remember_domain; } if (id->xid.type == ID_TYPE_NOT_SPECIFIED) { @@ -323,6 +322,17 @@ static NTSTATUS idmap_hash_sid_to_id(struct sid_hash_table *hashed_domains, } /* + * Now we're sure the domain exist, remember + * the domain in order to return reverse mappings + * in future. + */ +remember_domain: + hashed_domains[h_domain].sid = dom_sid_dup(hashed_domains, &sid); + if (hashed_domains[h_domain].sid == NULL) { + return NT_STATUS_NO_MEMORY; + } + + /* * idmap_hash used to bounce back the requested type, * which was ID_TYPE_UID, ID_TYPE_GID or * ID_TYPE_NOT_SPECIFIED before as the winbindd parent |