From: Alan T. DeKok Date: Tue, 21 Aug 2012 13:19:11 +0000 (+0200) Subject: Fix "update" logic X-Git-Tag: release_3_0_0_beta0~78 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bec952228e6cc2a94e10c1d50639d6fed1148ee5;p=thirdparty%2Ffreeradius-server.git Fix "update" logic update reply { Foo = Bar } update outer.reply { Reply-Message := "%{reply:Foo}" } The *expansion* should be done in the context of the current request. The *insertion* should be done in the context of the "update X" name. --- diff --git a/src/main/evaluate.c b/src/main/evaluate.c index 9b48ba90ce7..99fa7a0f991 100644 --- a/src/main/evaluate.c +++ b/src/main/evaluate.c @@ -1122,18 +1122,18 @@ struct conf_pair { int radius_update_attrlist(REQUEST *request, CONF_SECTION *cs, VALUE_PAIR *input_vps, const char *name) { + int list; CONF_ITEM *ci; VALUE_PAIR *newlist, *vp; VALUE_PAIR **output_vps; - - int list; + REQUEST *update_request = request; if (!request || !cs) return RLM_MODULE_INVALID; /* * Qualifiers not valid for this request */ - if(!radius_ref_request(&request, &name)){ + if(!radius_ref_request(&update_request, &name)){ RDEBUG("WARNING: List name refers to outer request" " but not in a tunnel."); return RLM_MODULE_NOOP; @@ -1145,11 +1145,11 @@ int radius_update_attrlist(REQUEST *request, CONF_SECTION *cs, * Bad list name name */ if (list == PAIR_LIST_UNKNOWN) { - RDEBUG("ERROR: Invalid list name"); + RDEBUG("ERROR: Invalid list name '%s'", name); return RLM_MODULE_INVALID; } - output_vps = radius_list(request, list); + output_vps = radius_list(update_request, list); rad_assert(output_vps); @@ -1208,7 +1208,7 @@ int radius_update_attrlist(REQUEST *request, CONF_SECTION *cs, vp = vp->next; } - radius_pairmove(request, output_vps, newlist); + radius_pairmove(update_request, output_vps, newlist); return RLM_MODULE_UPDATED; }