]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add talloc variants of verifiation functions
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Wed, 17 Mar 2021 16:53:27 +0000 (16:53 +0000)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Wed, 17 Mar 2021 16:53:27 +0000 (16:53 +0000)
src/lib/unlang/xlat_eval.c
src/lib/util/value.h

index b28dab0bad2be7bcc7f0fd26de585f983a148b5e..b11c1119dc718443e350db7140ad5256b27164c6 100644 (file)
@@ -923,9 +923,9 @@ xlat_action_t xlat_frame_eval_resume(TALLOC_CTX *ctx, fr_dcursor_t *out,
         *      to debug problems if they free or change elements
         *      and don't remove them from the list.
         */
-       VALUE_BOX_LIST_VERIFY(result);
+       VALUE_BOX_TALLOC_LIST_VERIFY(result);
        xa = resume(ctx, out, request, exp->call.inst, thread_inst->data, result, rctx);
-       VALUE_BOX_LIST_VERIFY(result);
+       VALUE_BOX_TALLOC_LIST_VERIFY(result);
 
        RDEBUG2("EXPAND %%{%s:...}", exp->call.func->name);
        switch (xa) {
@@ -984,7 +984,7 @@ xlat_action_t xlat_frame_eval_repeat(TALLOC_CTX *ctx, fr_dcursor_t *out,
                        ssize_t         slen;
 
                        if (!fr_dlist_empty(result)) {
-                               VALUE_BOX_LIST_VERIFY(result);
+                               VALUE_BOX_TALLOC_LIST_VERIFY(result);
                                result_str = fr_value_box_list_aprint(NULL, result, NULL, NULL);
                                if (!result_str) return XLAT_ACTION_FAIL;
                        } else {
@@ -1045,7 +1045,7 @@ xlat_action_t xlat_frame_eval_repeat(TALLOC_CTX *ctx, fr_dcursor_t *out,
                                   node->fmt, result,
                                   (node->call.func->input_type == XLAT_INPUT_ARGS) ? ')' : '}');
 
-                       VALUE_BOX_LIST_VERIFY(result);
+                       VALUE_BOX_TALLOC_LIST_VERIFY(result);
                        /*
                         *      Need to copy the input list in case
                         *      the async function mucks with it.
@@ -1059,11 +1059,11 @@ xlat_action_t xlat_frame_eval_repeat(TALLOC_CTX *ctx, fr_dcursor_t *out,
                                if (RDEBUG_ENABLED2) fr_dlist_talloc_free(&result_copy);
                                return xa;
                        }
-                       VALUE_BOX_LIST_VERIFY(result);
+                       VALUE_BOX_TALLOC_LIST_VERIFY(result);
 
                        xa = node->call.func->func.async(ctx, out, request,
                                                         node->call.inst->data, thread_inst->data, result);
-                       VALUE_BOX_LIST_VERIFY(result);
+                       VALUE_BOX_TALLOC_LIST_VERIFY(result);
 
                        if (RDEBUG_ENABLED2) {
                                xlat_debug_log_expansion(request, *in, &result_copy);
@@ -1127,7 +1127,7 @@ xlat_action_t xlat_frame_eval_repeat(TALLOC_CTX *ctx, fr_dcursor_t *out,
                xlat_debug_log_expansion(request, *in, NULL);
                xlat_debug_log_list_result(request, result);
 
-               VALUE_BOX_LIST_VERIFY(result);
+               VALUE_BOX_TALLOC_LIST_VERIFY(result);
                fr_dcursor_init(&from, result);
                fr_dcursor_merge(out, &from);
                fr_assert(fr_dlist_empty(result));
@@ -1143,7 +1143,7 @@ xlat_action_t xlat_frame_eval_repeat(TALLOC_CTX *ctx, fr_dcursor_t *out,
 
                fr_assert(!fr_dlist_empty(result));
 
-               VALUE_BOX_LIST_VERIFY(result);
+               VALUE_BOX_TALLOC_LIST_VERIFY(result);
 
                /*
                 *      If the input is a series of xlat expansions,
@@ -1167,7 +1167,7 @@ xlat_action_t xlat_frame_eval_repeat(TALLOC_CTX *ctx, fr_dcursor_t *out,
                        fr_dlist_talloc_free(result);
                        fr_dlist_insert_head(result, value);
                }
-               VALUE_BOX_LIST_VERIFY(result);
+               VALUE_BOX_TALLOC_LIST_VERIFY(result);
 
                MEM(value = fr_value_box_alloc(ctx, FR_TYPE_GROUP, NULL, false));
                fr_dlist_move(&value->vb_group, result);
@@ -1234,7 +1234,7 @@ xlat_action_t xlat_frame_eval(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_exp_t con
        for (node = *in; node; node = (*in)->next) {
                *in = node;             /* Update node in our caller */
                fr_dcursor_tail(out);   /* Needed for debugging */
-               VALUE_BOX_LIST_VERIFY(out->dlist);
+               VALUE_BOX_TALLOC_LIST_VERIFY(out->dlist);
 
                switch (node->type) {
                case XLAT_LITERAL:
@@ -1387,7 +1387,7 @@ xlat_action_t xlat_frame_eval(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_exp_t con
        }
 
 finish:
-       VALUE_BOX_LIST_VERIFY(out->dlist);
+       VALUE_BOX_TALLOC_LIST_VERIFY(out->dlist);
        XLAT_DEBUG("** [%i] %s << %s", unlang_interpret_stack_depth(request),
                   __FUNCTION__, fr_table_str_by_value(xlat_action_table, xa, "<INVALID>"));
 
index feb84d336dd3e22bc7d37ec62ca06d8b66b0cf6c..6275e841be4e62fa7f0b17aa610dd950feef00d0 100644 (file)
@@ -763,12 +763,14 @@ static inline size_t fr_value_box_aprint_quoted(TALLOC_CTX *ctx, char **out,
 uint32_t       fr_value_box_hash_update(fr_value_box_t const *vb, uint32_t hash);
 /** @} */
 
-void value_box_verify(char const *file, int line, fr_value_box_t const *vb);
-void value_box_list_verify(char const *file, int line, fr_value_box_list_t const *list);
+void value_box_verify(char const *file, int line, fr_value_box_t const *vb, bool talloced);
+void value_box_list_verify(char const *file, int line, fr_value_box_list_t const *list, bool talloced);
 
 #ifdef WITH_VERIFY_PTR
-#  define VALUE_BOX_VERIFY(_x) value_box_verify(__FILE__, __LINE__, _x)
-#  define VALUE_BOX_LIST_VERIFY(_x) value_box_list_verify(__FILE__, __LINE__, _x)
+#  define VALUE_BOX_VERIFY(_x) value_box_verify(__FILE__, __LINE__, _x, false)
+#  define VALUE_BOX_LIST_VERIFY(_x) value_box_list_verify(__FILE__, __LINE__, _x, false)
+#  define VALUE_BOX_TALLOC_VERIFY(_x) value_box_verify(__FILE__, __LINE__, _x, true)
+#  define VALUE_BOX_TALLOC_LIST_VERIFY(_x) value_box_list_verify(__FILE__, __LINE__, _x, true)
 #else
 /*
  *  Even if were building without WITH_VERIFY_PTR
@@ -777,6 +779,8 @@ void value_box_list_verify(char const *file, int line, fr_value_box_list_t const
  */
 #  define VALUE_BOX_VERIFY(_x) fr_assert(_x)
 #  define VALUE_BOX_LIST_VERIFY(_x) fr_assert(_x)
+#  define VALUE_BOX_TALLOC_VERIFY(_x) fr_assert(_x)
+#  define VALUE_BOX_TALLOC_LIST_VERIFY(_x) fr_assert(_x)
 #endif
 
 #undef _CONST