mirror of
https://github.com/samba-team/samba.git
synced 2025-02-28 01:58:17 +03:00
s4:kdc: Make use of dsdb_search_one()
Ensure we get exactly one object back, or an error. Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
parent
e1f8cb063d
commit
420fae5dcb
@ -773,8 +773,8 @@ static int get_all_claims(struct ldb_context *ldb,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Allocate enough space for all AD claim attributes, followed by space
|
* Allocate enough space for all AD claim attributes, followed by space
|
||||||
* for a NULL marker (so it can be passed as the attributes filter to
|
* for a NULL marker (so it can be passed as the attributes filter to an
|
||||||
* ldb_search()).
|
* LDB search).
|
||||||
*/
|
*/
|
||||||
ad_claim_attrs = talloc_array(tmp_ctx,
|
ad_claim_attrs = talloc_array(tmp_ctx,
|
||||||
const char *,
|
const char *,
|
||||||
@ -920,8 +920,7 @@ static int get_all_claims(struct ldb_context *ldb,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ad_claims_count) {
|
if (ad_claims_count) {
|
||||||
struct ldb_result *principal_res = NULL;
|
struct ldb_message *principal_msg = NULL;
|
||||||
const struct ldb_message *principal_msg = NULL;
|
|
||||||
|
|
||||||
/* Shrink the arrays to remove any unused space. */
|
/* Shrink the arrays to remove any unused space. */
|
||||||
ad_claim_attrs = talloc_realloc(tmp_ctx,
|
ad_claim_attrs = talloc_realloc(tmp_ctx,
|
||||||
@ -943,10 +942,14 @@ static int get_all_claims(struct ldb_context *ldb,
|
|||||||
return ldb_oom(ldb);
|
return ldb_oom(ldb);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ldb_search(ldb, tmp_ctx, &principal_res,
|
ret = dsdb_search_one(ldb,
|
||||||
principal->dn,
|
tmp_ctx,
|
||||||
LDB_SCOPE_BASE,
|
&principal_msg,
|
||||||
ad_claim_attrs, NULL);
|
principal->dn,
|
||||||
|
LDB_SCOPE_BASE,
|
||||||
|
ad_claim_attrs,
|
||||||
|
0,
|
||||||
|
NULL);
|
||||||
if (ret != LDB_SUCCESS) {
|
if (ret != LDB_SUCCESS) {
|
||||||
const char *dn = ldb_dn_get_linearized(principal->dn);
|
const char *dn = ldb_dn_get_linearized(principal->dn);
|
||||||
DBG_ERR("Failed to find principal %s to construct claims\n",
|
DBG_ERR("Failed to find principal %s to construct claims\n",
|
||||||
@ -955,8 +958,6 @@ static int get_all_claims(struct ldb_context *ldb,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
principal_msg = principal_res->msgs[0];
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ensure that only the attrs we asked for end up in the results
|
* Ensure that only the attrs we asked for end up in the results
|
||||||
* (it's fine if some are missing)
|
* (it's fine if some are missing)
|
||||||
@ -969,7 +970,7 @@ static int get_all_claims(struct ldb_context *ldb,
|
|||||||
uint32_t new_claims_array_count = claims_set.claims_array_count;
|
uint32_t new_claims_array_count = claims_set.claims_array_count;
|
||||||
|
|
||||||
/* Get the value of the claim attribute for the principal. */
|
/* Get the value of the claim attribute for the principal. */
|
||||||
principal_attribute = ldb_msg_find_element(principal_res->msgs[0],
|
principal_attribute = ldb_msg_find_element(principal_msg,
|
||||||
ad_claims[i].attribute);
|
ad_claims[i].attribute);
|
||||||
if (principal_attribute == NULL) {
|
if (principal_attribute == NULL) {
|
||||||
continue;
|
continue;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user