diff options
author | Sumit Bose <sbose@redhat.com> | 2017-05-02 15:25:10 +0200 |
---|---|---|
committer | Lukas Slebodnik <lslebodn@redhat.com> | 2017-06-01 16:17:28 +0200 |
commit | 749963195393efa3a4f9b168dd02fbcc68976ba3 (patch) | |
tree | 6481b4a418190581118da3c39d676cd2bf94825a | |
parent | f772649cb8b624f4b4dfa5521f487ef38e3f8931 (diff) | |
download | sssd-749963195393efa3a4f9b168dd02fbcc68976ba3.tar.gz sssd-749963195393efa3a4f9b168dd02fbcc68976ba3.tar.xz sssd-749963195393efa3a4f9b168dd02fbcc68976ba3.zip |
RESPONDER_COMMON: update certmaps in responders
Make certificate mapping data available to the responders.
Related to https://pagure.io/SSSD/sssd/issue/3395
Reviewed-by: Fabiano FidĂȘncio <fidencio@redhat.com>
-rw-r--r-- | src/confdb/confdb.h | 3 | ||||
-rw-r--r-- | src/responder/common/responder_get_domains.c | 23 |
2 files changed, 26 insertions, 0 deletions
diff --git a/src/confdb/confdb.h b/src/confdb/confdb.h index 8719c2393..797353141 100644 --- a/src/confdb/confdb.h +++ b/src/confdb/confdb.h @@ -351,6 +351,9 @@ struct sss_domain_info { char *forest; struct sss_domain_info *forest_root; const char **upn_suffixes; + + struct certmap_info **certmaps; + bool user_name_hint; }; /** diff --git a/src/responder/common/responder_get_domains.c b/src/responder/common/responder_get_domains.c index 8c90b7773..155631676 100644 --- a/src/responder/common/responder_get_domains.c +++ b/src/responder/common/responder_get_domains.c @@ -224,6 +224,26 @@ immediately: return req; } +static void sss_resp_update_certmaps(struct resp_ctx *rctx) +{ + int ret; + struct certmap_info **certmaps; + bool user_name_hint; + struct sss_domain_info *dom; + + for (dom = rctx->domains; dom != NULL; dom = dom->next) { + ret = sysdb_get_certmap(dom, dom->sysdb, &certmaps, &user_name_hint); + if (ret == EOK) { + dom->user_name_hint = user_name_hint; + talloc_free(dom->certmaps); + dom->certmaps = certmaps; + } else { + DEBUG(SSSDBG_OP_FAILURE, + "sysdb_get_certmap failed for domain [%s].\n", dom->name); + } + } +} + static void sss_dp_get_domains_process(struct tevent_req *subreq) { @@ -267,6 +287,9 @@ sss_dp_get_domains_process(struct tevent_req *subreq) ret, sss_strerror(ret)); goto fail; } + + sss_resp_update_certmaps(state->rctx); + tevent_req_done(req); return; } |