summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSumit Bose <sbose@redhat.com>2017-05-02 15:25:10 +0200
committerLukas Slebodnik <lslebodn@redhat.com>2017-06-01 16:17:28 +0200
commit749963195393efa3a4f9b168dd02fbcc68976ba3 (patch)
tree6481b4a418190581118da3c39d676cd2bf94825a
parentf772649cb8b624f4b4dfa5521f487ef38e3f8931 (diff)
downloadsssd-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.h3
-rw-r--r--src/responder/common/responder_get_domains.c23
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;
}