1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00

idmap_hash: return ID_REQUIRE_TYPE only if there's a chance to get a mapping later

If we are going to return ID_UNMAPPED later anyway, there's no need to
defer that decision by returning ID_REQUIRE_TYPE first.

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>
This commit is contained in:
Stefan Metzmacher 2019-03-21 16:54:31 +01:00
parent c158b075b0
commit 42dcb3db05

View File

@ -261,6 +261,24 @@ static NTSTATUS idmap_hash_sid_to_id(struct sid_hash_table *hashed_domains,
uint32_t rid;
uint32_t h_domain, h_rid;
id->status = ID_UNMAPPED;
sid_copy(&sid, id->sid);
sid_split_rid(&sid, &rid);
h_domain = hash_domain_sid(&sid);
h_rid = hash_rid(rid);
/* Check that both hashes are non-zero*/
if (h_domain == 0) {
/* keep ID_UNMAPPED */
return NT_STATUS_OK;
}
if (h_rid == 0) {
/* keep ID_UNMAPPED */
return NT_STATUS_OK;
}
if (id->xid.type == ID_TYPE_NOT_SPECIFIED) {
/*
* idmap_hash used to bounce back the requested type,
@ -280,24 +298,6 @@ static NTSTATUS idmap_hash_sid_to_id(struct sid_hash_table *hashed_domains,
return NT_STATUS_OK;
}
id->status = ID_UNMAPPED;
sid_copy(&sid, id->sid);
sid_split_rid(&sid, &rid);
h_domain = hash_domain_sid(&sid);
h_rid = hash_rid(rid);
/* Check that both hashes are non-zero*/
if (h_domain == 0) {
/* keep ID_UNMAPPED */
return NT_STATUS_OK;
}
if (h_rid == 0) {
/* keep ID_UNMAPPED */
return NT_STATUS_OK;
}
/*
* idmap_hash used to bounce back the requested type,
* which was ID_TYPE_UID, ID_TYPE_GID or