]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
🔧 tmpl: Fix tmpl_find_or_add_vp() (#3985)
authorJorge Pereira <jpereira@users.noreply.github.com>
Thu, 29 Apr 2021 14:18:54 +0000 (11:18 -0300)
committerGitHub <noreply@github.com>
Thu, 29 Apr 2021 14:18:54 +0000 (09:18 -0500)
* tmpl: Normalize tmpl_pair_list_and_ctx() name

* tmpl: Fix tmpl_find_or_add_vp()

It should add the vp into the correct list.

src/lib/server/tmpl.h
src/lib/server/tmpl_eval.c

index a933c0e14314ca72faa53743204730ae5df991e6..5c1fde7f31daed413200427af2bf38b5bd02a2a6 100644 (file)
@@ -753,7 +753,7 @@ void tmpl_verify(char const *file, int line, tmpl_t const *vpt);
    fr_pair_list_t *head;
    fr_value_box_t value;
 
-   tmpl_pair_list_AND_CTX(ctx, head, request, CURRENT_REQUEST, PAIR_LIST_REQUEST);
+   tmpl_pair_list_and_ctx(ctx, head, request, CURRENT_REQUEST, PAIR_LIST_REQUEST);
    if (!list) return -1; // error
 
    value.strvalue = talloc_typed_strdup(NULL, "my new username");
@@ -766,7 +766,7 @@ void tmpl_verify(char const *file, int line, tmpl_t const *vpt);
  * @param _ref to resolve.
  * @param _list to resolve.
  */
-#define tmpl_pair_list_AND_CTX(_ctx, _head, _request, _ref, _list) \
+#define tmpl_pair_list_and_ctx(_ctx, _head, _request, _ref, _list) \
 do {\
        request_t *_rctx = _request; \
        if ((tmpl_request_ptr(&_rctx, _ref) < 0) || \
index bc0005534365cfe8289250cd727e568573364a1f..36642b6172ecefa8dc3d858a532b868000bea384 100644 (file)
@@ -1477,12 +1477,15 @@ int tmpl_find_or_add_vp(fr_pair_t **out, request_t *request, tmpl_t const *vpt)
                TALLOC_CTX      *ctx;
                fr_pair_list_t  *head;
 
-               tmpl_pair_list_AND_CTX(ctx, head, request, tmpl_request(vpt), tmpl_list(vpt));
+               tmpl_pair_list_and_ctx(ctx, head, request, tmpl_request(vpt), tmpl_list(vpt));
 
                MEM(vp = fr_pair_afrom_da(ctx, tmpl_da(vpt)));
+
+               fr_pair_add(head, vp);
+
                *out = vp;
        }
-               return 0;
+               return 1;
 
        default:
                return err;