]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
don't use fr_pair_make()
authorAlan T. DeKok <aland@freeradius.org>
Mon, 31 Jan 2022 15:47:33 +0000 (10:47 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 31 Jan 2022 15:47:33 +0000 (10:47 -0500)
src/modules/rlm_perl/rlm_perl.c

index 5b65d226fd5e2592d7cb0008eea147481f5aef3d..ccb1989e7f1060a548190e67221df90f9ecc6750 100644 (file)
@@ -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;