From: Arran Cudbard-Bell Date: Tue, 15 Jul 2025 02:50:51 +0000 (-0600) Subject: The result of the interpret should be the result_p of the frame not the section_result X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3351593d7e81e591d224c2380e1c08a5bb016da2;p=thirdparty%2Ffreeradius-server.git The result of the interpret should be the result_p of the frame not the section_result This caused synchronous evaluation of xlats to return reject --- diff --git a/src/lib/unlang/interpret.c b/src/lib/unlang/interpret.c index 1003bc9a6b..b8e581304e 100644 --- a/src/lib/unlang/interpret.c +++ b/src/lib/unlang/interpret.c @@ -1103,13 +1103,19 @@ CC_HINT(hot) rlm_rcode_t unlang_interpret(request_t *request, bool running) /* * Record this now as the done functions may free * the request. + * + * Note: We use p_result here, as that's where the + * result of evaluating the frame was written. + * We don't use the section_result, as that may have + * been left as its default value which may be 0 + * (reject). */ - rcode = frame->section_result.rcode; + rcode = frame->result_p->rcode; /* - * This usually means the request is complete in its - * entirety. - */ + * This usually means the request is complete in its + * entirety. + */ if ((stack->depth == 0) && !running) unlang_interpret_request_done(request); return rcode;