summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2019-03-21 16:54:31 +0100
committerJule Anger <janger@samba.org>2023-03-30 15:10:10 +0000
commitbf5ccd5a14062dc31c09e167dadff9782ba1caba (patch)
tree2284debc7d62ed32b39fdf9dd2fcdeb2023004e7
parentf27cff23350dc332515a66d98335418d20e94a0e (diff)
downloadsamba-bf5ccd5a14062dc31c09e167dadff9782ba1caba.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 (cherry picked from commit 7ee725f2860d835e9619fa594a2ee6faedbc6d21)
-rw-r--r--source3/winbindd/idmap_hash/idmap_hash.c20
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