]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Amend map_exec_to_vp() to append pairs to a fr_pair_list_t
authorNick Porter <nick@portercomputing.co.uk>
Mon, 11 Jan 2021 08:59:51 +0000 (08:59 +0000)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 21 Jan 2021 23:05:49 +0000 (23:05 +0000)
Needs to work the same as map_to_vp()

src/lib/server/map.c

index e2d976b7c73957010bb7e6d10e34d3e9fd79fbe4..c007d9aad1abc8cc4ab20da63dd0014dcc993f7c 100644 (file)
@@ -887,7 +887,7 @@ static int map_exec_to_vp(TALLOC_CTX *ctx, fr_pair_list_t *out, request_t *reque
        fr_pair_list_t output_pairs;
 
        fr_pair_list_init(&output_pairs);
-       *out = NULL;
+       fr_pair_list_clear(out);
 
        MAP_VERIFY(map);
 
@@ -913,7 +913,7 @@ static int map_exec_to_vp(TALLOC_CTX *ctx, fr_pair_list_t *out, request_t *reque
        talloc_free(expanded);
        if (result != 0) {
                REDEBUG("Exec failed with code (%i)", result);
-               talloc_free(output_pairs);
+               fr_pair_list_free(&output_pairs);
                return -1;
        }
 
@@ -923,15 +923,13 @@ static int map_exec_to_vp(TALLOC_CTX *ctx, fr_pair_list_t *out, request_t *reque
                        REDEBUG("No valid attributes received from program");
                        return -2;
                }
-               *out = output_pairs;
+               fr_tmp_pair_list_move(out, &output_pairs);
                return 0;
 
        case TMPL_TYPE_ATTR:
        {
                fr_pair_t *vp;
-               fr_pair_list_t vps;
 
-               fr_pair_list_init(&vps);
                MEM(vp = fr_pair_afrom_da(ctx, tmpl_da(map->lhs)));
                vp->op = map->op;
                if (fr_pair_value_from_str(vp, answer, -1, '"', false) < 0) {
@@ -939,8 +937,7 @@ static int map_exec_to_vp(TALLOC_CTX *ctx, fr_pair_list_t *out, request_t *reque
                        talloc_free(&vp);
                        return -2;
                }
-               fr_pair_add(&vps, vp);
-               *out = vps;
+               fr_pair_add(out, vp);
 
                return 0;
        }