From: Alan T. DeKok Date: Wed, 29 Jun 2022 14:02:50 +0000 (-0400) Subject: respect casts for results of exec, too X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cd03c0d942911bac949591090d33a71187c103b0;p=thirdparty%2Ffreeradius-server.git respect casts for results of exec, too --- diff --git a/src/lib/unlang/tmpl.c b/src/lib/unlang/tmpl.c index 223efa86aae..cb40e196875 100644 --- a/src/lib/unlang/tmpl.c +++ b/src/lib/unlang/tmpl.c @@ -77,6 +77,13 @@ static void unlang_tmpl_signal(request_t *request, unlang_stack_frame_t *frame, static unlang_action_t unlang_tmpl_resume(rlm_rcode_t *p_result, request_t *request, unlang_stack_frame_t *frame) { unlang_frame_state_tmpl_t *state = talloc_get_type_abort(frame->state, unlang_frame_state_tmpl_t); + unlang_tmpl_t *ut = unlang_generic_to_tmpl(frame->instruction); + + if (tmpl_eval_cast(request, &state->list, ut->tmpl) < 0) { + RPEDEBUG("Failed casting expansion"); + *p_result = RLM_MODULE_FAIL; + return UNLANG_ACTION_CALCULATE_RESULT; + } if (state->out) fr_dlist_move(state->out, &state->list); diff --git a/src/lib/unlang/xlat_eval.c b/src/lib/unlang/xlat_eval.c index 41a3ef77bfb..83bf6d2bdf0 100644 --- a/src/lib/unlang/xlat_eval.c +++ b/src/lib/unlang/xlat_eval.c @@ -920,6 +920,11 @@ xlat_action_t xlat_frame_eval_repeat(TALLOC_CTX *ctx, fr_dcursor_t *out, case XLAT_TMPL: fr_assert(tmpl_is_exec(node->vpt)); + if (tmpl_eval_cast(ctx, result, node->vpt) < 0) { + fr_dlist_talloc_free(result); + return XLAT_ACTION_FAIL; + } + /* * First entry is the command to run. Subsequent entries are the options to pass to the * command.