From: Alan T. DeKok Date: Mon, 31 Jan 2022 15:47:33 +0000 (-0500) Subject: don't use fr_pair_make() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6efb7ceef8be495224f74dfa1fbde01f3f5f0db8;p=thirdparty%2Ffreeradius-server.git don't use fr_pair_make() --- diff --git a/src/modules/rlm_perl/rlm_perl.c b/src/modules/rlm_perl/rlm_perl.c index 5b65d226fd5..ccb1989e7f1 100644 --- a/src/modules/rlm_perl/rlm_perl.c +++ b/src/modules/rlm_perl/rlm_perl.c @@ -744,13 +744,22 @@ static int pairadd_sv(TALLOC_CTX *ctx, request_t *request, fr_pair_list_t *vps, char *val; fr_pair_t *vp; STRLEN len; + fr_dict_attr_t const *da; if (!SvOK(sv)) return -1; val = SvPV(sv, len); - vp = fr_pair_make(ctx, request->dict, vps, key, NULL); + + da = fr_dict_attr_by_name(NULL, fr_dict_root(request->dict), key); + if (!da) { + REDEBUG("Ignoring unknown attribute '%s'", key); + return -1; + } + + vp = fr_pair_afrom_da(ctx, da); if (!vp) { fail: + talloc_free(vp); REDEBUG("Failed to create pair %s.%s = %s", list_name, key, val); return -1; } @@ -769,6 +778,7 @@ static int pairadd_sv(TALLOC_CTX *ctx, request_t *request, fr_pair_list_t *vps, } PAIR_VERIFY(vp); + (void) fr_pair_append(vps, vp); RDEBUG2("&%s.%s = $%s{'%s'} -> '%s'", list_name, key, hash_name, key, val); return 0;