From: Nick Porter Date: Mon, 11 Jan 2021 08:43:15 +0000 (+0000) Subject: Amend map_to_vp to add pairs to a fr_pair_list_t X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2246487f05f280bb6c0adca2dbfe787175a1cb4d;p=thirdparty%2Ffreeradius-server.git Amend map_to_vp to add pairs to a fr_pair_list_t Usually it will only find one pair, but the case of list to list means a whole list is returned. --- diff --git a/src/lib/server/map.c b/src/lib/server/map.c index 3fe73924333..e2d976b7c73 100644 --- a/src/lib/server/map.c +++ b/src/lib/server/map.c @@ -967,14 +967,12 @@ int map_to_vp(TALLOC_CTX *ctx, fr_pair_list_t *out, request_t *request, map_t co int rcode = 0; fr_pair_t *vp = NULL, *n; fr_pair_list_t found; - fr_pair_list_t vps; request_t *context = request; ssize_t slen; char *str; fr_pair_list_init(&found); - fr_pair_list_init(&vps); - *out = NULL; + fr_pair_list_clear(out); MAP_VERIFY(map); if (!fr_cond_assert(map->lhs != NULL)) return -1; @@ -1013,7 +1011,7 @@ int map_to_vp(TALLOC_CTX *ctx, fr_pair_list_t *out, request_t *request, map_t co vp->op = T_OP_ADD; } - *out = found; + fr_tmp_pair_list_move(out, &found); return 0; } @@ -1055,8 +1053,7 @@ int map_to_vp(TALLOC_CTX *ctx, fr_pair_list_t *out, request_t *request, map_t co goto error; } n->op = map->op; - fr_pair_add(&vps, n); - *out = vps; + fr_pair_add(out, n); break; case TMPL_TYPE_UNRESOLVED: @@ -1071,8 +1068,7 @@ int map_to_vp(TALLOC_CTX *ctx, fr_pair_list_t *out, request_t *request, map_t co goto error; } n->op = map->op; - fr_pair_add(&vps, n); - *out = vps; + fr_pair_add(out, n); break; case TMPL_TYPE_ATTR: @@ -1125,7 +1121,7 @@ int map_to_vp(TALLOC_CTX *ctx, fr_pair_list_t *out, request_t *request, map_t co vp->da = tmpl_da(map->lhs); vp->op = map->op; } - *out = found; + fr_tmp_pair_list_move(out, &found); } break; @@ -1150,8 +1146,7 @@ int map_to_vp(TALLOC_CTX *ctx, fr_pair_list_t *out, request_t *request, map_t co } } n->op = map->op; - fr_pair_add(&vps, n); - *out = vps; + fr_pair_add(out, n); MAP_VERIFY(map); break;