eap_session_t *eap_session, fr_tls_session_t *tls_session)
{
peap_tunnel_t *t = tls_session->opaque;
- request_t *fake = NULL;
+ request_t *child = NULL;
fr_pair_t *vp;
rlm_rcode_t rcode = RLM_MODULE_REJECT;
uint8_t const *data;
goto finish;
}
- fake = request_alloc_internal(request, &(request_init_args_t){ .parent = request });
- fr_assert(fr_pair_list_empty(&fake->request_pairs));
+ MEM(child = unlang_subrequest_alloc(request, request->dict));
+ fr_assert(fr_pair_list_empty(&child->request_pairs));
switch (t->status) {
/*
len = t->username->vp_length + EAP_HEADER_LEN + 1;
t->status = PEAP_STATUS_PHASE2;
- MEM(vp = fr_pair_afrom_da(fake->request_ctx, attr_eap_message));
+ MEM(vp = fr_pair_afrom_da(child->request_ctx, attr_eap_message));
MEM(fr_pair_value_mem_alloc(vp, &q, len, false) == 0);
q[0] = FR_EAP_CODE_RESPONSE;
q[1] = eap_round->response->id;
q[4] = FR_EAP_METHOD_IDENTITY;
memcpy(q + EAP_HEADER_LEN + 1,
t->username->vp_strvalue, t->username->vp_length);
- fr_pair_append(&fake->request_pairs, vp);
+ fr_pair_append(&child->request_pairs, vp);
}
break;
case PEAP_STATUS_PHASE2:
- eap_peap_inner_to_pairs(fake->request_ctx, &fake->request_pairs,
+ eap_peap_inner_to_pairs(child->request_ctx, &child->request_pairs,
eap_round, data, data_len);
- if (fr_pair_list_empty(&fake->request_pairs)) {
- talloc_free(fake);
+ if (fr_pair_list_empty(&child->request_pairs)) {
+ talloc_free(child);
RDEBUG2("Unable to convert tunneled EAP packet to internal server data structures");
rcode = RLM_MODULE_REJECT;
goto finish;
}
RDEBUG2("Got tunneled request");
- log_request_pair_list(L_DBG_LVL_2, request, NULL, &fake->request_pairs, NULL);
+ log_request_pair_list(L_DBG_LVL_2, request, NULL, &child->request_pairs, NULL);
/*
* Update other items in the request_t data structure.
} /* else there WAS a t->username */
if (t->username) {
- vp = fr_pair_copy(fake->request_ctx, t->username);
- fr_pair_append(&fake->request_pairs, vp);
+ vp = fr_pair_copy(child->request_ctx, t->username);
+ fr_pair_append(&child->request_pairs, vp);
RDEBUG2("Setting &request.User-Name from tunneled (inner) identity \"%s\"",
vp->vp_strvalue);
} else {
}
finish:
- talloc_free(fake);
+ talloc_free(child);
RETURN_MODULE_RCODE(rcode);
}