diff options
author | Stefan Metzmacher <metze@samba.org> | 2019-03-21 16:54:31 +0100 |
---|---|---|
committer | Jule Anger <janger@samba.org> | 2023-03-30 15:10:10 +0000 |
commit | 182410af7de4fdfb8100cc83e53d0371e59d6a81 (patch) | |
tree | 93d06310e556211c6b0634d4e60d802f7492944a | |
parent | 13a593254afa9cfdfbcefb51da88b1a8309ef723 (diff) | |
download | samba-182410af7de4fdfb8100cc83e53d0371e59d6a81.tar.gz |
idmap_hash: only return ID_REQUIRE_TYPE if we don't know about the domain yet
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>
(cherry picked from commit ede88d9f83fb77fa8eff226fb6a85ac71e415098)
-rw-r--r-- | source3/winbindd/idmap_hash/idmap_hash.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/source3/winbindd/idmap_hash/idmap_hash.c b/source3/winbindd/idmap_hash/idmap_hash.c index ed20a5e8bed..fb900617ec3 100644 --- a/source3/winbindd/idmap_hash/idmap_hash.c +++ b/source3/winbindd/idmap_hash/idmap_hash.c @@ -279,6 +279,14 @@ static NTSTATUS idmap_hash_sid_to_id(struct sid_hash_table *hashed_domains, return NT_STATUS_OK; } + /* + * If the domain hash already exists find a SID in the table, + * just return the mapping. + */ + if (hashed_domains[h_domain].sid != NULL) { + goto return_mapping; + } + if (id->xid.type == ID_TYPE_NOT_SPECIFIED) { /* * idmap_hash used to bounce back the requested type, @@ -313,6 +321,7 @@ static NTSTATUS idmap_hash_sid_to_id(struct sid_hash_table *hashed_domains, * random mix of ID_TYPE_UID, ID_TYPE_GID or * ID_TYPE_BOTH. */ +return_mapping: id->xid.type = ID_TYPE_BOTH; id->xid.id = combine_hashes(h_domain, h_rid); id->status = ID_MAPPED; |