]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Take a copy of trigger args so async triggers have access to them
authorNick Porter <nick@portercomputing.co.uk>
Fri, 25 Nov 2022 16:06:31 +0000 (16:06 +0000)
committerNick Porter <nick@portercomputing.co.uk>
Tue, 29 Nov 2022 12:24:56 +0000 (12:24 +0000)
src/lib/server/trigger.c

index 77b266705eeb499ee13b2df512c02f008eae0cf7..3d35f44d89c69a24c9aa7783ea39fff72983d0fa 100644 (file)
@@ -396,10 +396,18 @@ int trigger_exec(unlang_interpret_t *intp,
         *      Add the args to the request data, so they can be picked up by the
         *      trigger_xlat function.
         */
-       if (args && (request_data_add(request, &trigger_exec_main, REQUEST_INDEX_TRIGGER_ARGS, args,
-                                     false, false, false) < 0)) {
-               talloc_free(request);
-               return -1;
+       if (args) {
+               fr_pair_list_t *local_args;
+
+               MEM(local_args = talloc_zero(request, fr_pair_list_t));
+               fr_pair_list_init(local_args);
+               fr_pair_list_copy(local_args, local_args, args);
+
+               if (request_data_add(request, &trigger_exec_main, REQUEST_INDEX_TRIGGER_ARGS, local_args,
+                                     false, false, false) < 0) {
+                       talloc_free(request);
+                       return -1;
+               }
        }
 
        {