1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-01 05:47:28 +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>
(cherry picked from commit 42dcb3db05530179a991fe58e7b96b52bbbcc607)
This commit is contained in:
Stefan Metzmacher 2019-03-21 16:54:31 +01:00 committed by Jule Anger
parent da96349627
commit e79be5ed06

View File

@ -261,6 +261,24 @@ static NTSTATUS idmap_hash_sid_to_id(struct sid_hash_table *hashed_domains,
uint32_t rid; uint32_t rid;
uint32_t h_domain, h_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) { if (id->xid.type == ID_TYPE_NOT_SPECIFIED) {
/* /*
* idmap_hash used to bounce back the requested type, * 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; 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, * idmap_hash used to bounce back the requested type,
* which was ID_TYPE_UID, ID_TYPE_GID or * which was ID_TYPE_UID, ID_TYPE_GID or