]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Correct method to add pairs to existing list in rlm_mruby.c
authorNick Porter <nick@portercomputing.co.uk>
Tue, 19 Jan 2021 17:24:20 +0000 (17:24 +0000)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 21 Jan 2021 23:05:49 +0000 (23:05 +0000)
src/modules/rlm_mruby/rlm_mruby.c

index 4c2127fce3e56a1c5fa3063dcaf982985f3008f7..b0a33aae4e688b1a36063080cbf80e7d0e4889f6 100644 (file)
@@ -304,6 +304,9 @@ static int mruby_vps_to_array(request_t *request, mrb_value *out, mrb_state *mrb
 static void add_vp_tuple(TALLOC_CTX *ctx, request_t *request, fr_pair_list_t *vps, mrb_state *mrb, mrb_value value, char const *function_name)
 {
        int i;
+       fr_pair_list_t tmp_list;
+
+       fr_pair_list_init(&tmp_list);
 
        for (i = 0; i < RARRAY_LEN(value); i++) {
                mrb_value       tuple = mrb_ary_entry(value, i);
@@ -378,8 +381,9 @@ static void add_vp_tuple(TALLOC_CTX *ctx, request_t *request, fr_pair_list_t *vp
                        DEBUG("%s: %s %s %s OK", function_name, ckey, fr_table_str_by_value(fr_tokens_table, op, "="), cval);
                }
 
-               radius_pairmove(request, vps, &vp, false);
+               fr_pair_add(&tmp_list, vp);
        }
+       radius_pairmove(request, vps, &tmp_list, false);
 }
 
 static inline int mruby_set_vps(request_t *request, mrb_state *mrb, mrb_value mruby_request,