From 1c26996119c14595b1b10a7b55fa16bdd1ec17b2 Mon Sep 17 00:00:00 2001 From: Alexander Clouter Date: Mon, 8 Nov 2010 18:29:30 +0000 Subject: [PATCH] Add support for xlat'd challenge in rlm_eap_gtc The FIXME in rlm_eap_gtc.c has gone on so long unloved. God said, let there be xlat'ing and so there was... This patch shamelessly steals the xlat functionality in rlm_eap_tls.c and slaps it into rlm_eap_gtc.c, thus lettings you do handy things such as: ---- challenge = "%{reply:Reply-Message}" ---- Signed-off-by: Alexander Clouter --- src/modules/rlm_eap/types/rlm_eap_gtc/rlm_eap_gtc.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/modules/rlm_eap/types/rlm_eap_gtc/rlm_eap_gtc.c b/src/modules/rlm_eap/types/rlm_eap_gtc/rlm_eap_gtc.c index 0972806..60e6eb2 100644 --- a/src/modules/rlm_eap/types/rlm_eap_gtc/rlm_eap_gtc.c +++ b/src/modules/rlm_eap/types/rlm_eap_gtc/rlm_eap_gtc.c @@ -110,14 +110,17 @@ static int gtc_attach(CONF_SECTION *cs, void **instance) */ static int gtc_initiate(void *type_data, EAP_HANDLER *handler) { + char challenge_str[1024]; int length; EAP_DS *eap_ds = handler->eap_ds; rlm_eap_gtc_t *inst = (rlm_eap_gtc_t *) type_data; - /* - * FIXME: call radius_xlat on the challenge - */ - length = strlen(inst->challenge); + if (!radius_xlat(challenge_str, sizeof(challenge_str), inst->challenge, handler->request, NULL)) { + radlog(L_ERR, "rlm_eap_gtc: xlat failed.", inst->challenge); + return 0; + } + + length = strlen(challenge_str); /* * We're sending a request... @@ -130,7 +133,7 @@ static int gtc_initiate(void *type_data, EAP_HANDLER *handler) return 0; } - memcpy(eap_ds->request->type.data, inst->challenge, length); + memcpy(eap_ds->request->type.data, challenge_str, length); eap_ds->request->type.length = length; /* -- 2.1.4