1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-26 01:49:31 +03:00

idmap_hash: split out a idmap_hash_id_to_sid() helper function

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 57150b463f)
This commit is contained in:
Stefan Metzmacher
2019-03-21 14:05:13 +01:00
committed by Jule Anger
parent 54e872cdf0
commit 31cedf58e6

View File

@ -183,6 +183,32 @@ done:
/*********************************************************************
********************************************************************/
static NTSTATUS idmap_hash_id_to_sid(struct sid_hash_table *hashed_domains,
struct idmap_domain *dom,
struct id_map *id)
{
uint32_t h_domain = 0, h_rid = 0;
id->status = ID_UNMAPPED;
separate_hashes(id->xid.id, &h_domain, &h_rid);
/*
* If the domain hash doesn't find a SID in the table,
* skip it
*/
if (hashed_domains[h_domain].sid == NULL) {
/* keep ID_UNMAPPED */
return NT_STATUS_OK;
}
id->xid.type = ID_TYPE_BOTH;
sid_compose(id->sid, hashed_domains[h_domain].sid, h_rid);
id->status = ID_MAPPED;
return NT_STATUS_OK;
}
static NTSTATUS unixids_to_sids(struct idmap_domain *dom,
struct id_map **ids)
{
@ -199,22 +225,20 @@ static NTSTATUS unixids_to_sids(struct idmap_domain *dom,
}
for (i=0; ids[i]; i++) {
uint32_t h_domain, h_rid;
NTSTATUS ret;
ids[i]->status = ID_UNMAPPED;
ret = idmap_hash_id_to_sid(hashed_domains, dom, ids[i]);
if (!NT_STATUS_IS_OK(ret)) {
/* some fatal error occurred, log it */
DBG_NOTICE("Unexpected error resolving an ID "
"(%d): %s\n", ids[i]->xid.id,
nt_errstr(ret));
return ret;
}
separate_hashes(ids[i]->xid.id, &h_domain, &h_rid);
/* If the domain hash doesn't find a SID in the table,
skip it */
if (!hashed_domains[h_domain].sid)
continue;
ids[i]->xid.type = ID_TYPE_BOTH;
sid_compose(ids[i]->sid, hashed_domains[h_domain].sid, h_rid);
ids[i]->status = ID_MAPPED;
num_mapped++;
if (ids[i]->status == ID_MAPPED) {
num_mapped++;
}
}
if (num_tomap == num_mapped) {