]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
More helpful error messages
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 29 Jan 2021 17:44:01 +0000 (17:44 +0000)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 29 Jan 2021 17:44:22 +0000 (17:44 +0000)
src/lib/server/cond_tokenize.c
src/lib/util/types.c

index 50b55f147de67b78001666bb43bca69fbafeab46..e177a01d045aa60f499409200261aeac8633ae78 100644 (file)
@@ -468,7 +468,7 @@ int fr_cond_promote_types(fr_cond_t *c, fr_sbuff_t *in, fr_sbuff_marker_t *m_lhs
        }
 
        cast_type = fr_type_promote(lhs_type, rhs_type);
-       fr_assert(cast_type != FR_TYPE_INVALID);
+       if (!fr_cond_assert_msg(cast_type != FR_TYPE_INVALID, "%s", fr_strerror())) return -1;
 
 set_types:
        /*
index e050906931e54a273b98f145241102d7d213a922..d217c4454b92eb90e9b733aca65b0f7e3ec68152 100644 (file)
@@ -22,7 +22,9 @@
  */
 RCSID("$Id$")
 
+#include <freeradius-devel/util/strerror.h>
 #include <freeradius-devel/util/types.h>
+#include <freeradius-devel/util/value.h>
 
 #define O(_x) [FR_TYPE_ ## _x] = true
 
@@ -423,9 +425,20 @@ fr_type_t fr_type_promote(fr_type_t a, fr_type_t b)
        /*
         *      Otherwise bad things happen. :(
         */
-       if (unlikely(type_promote_table[a][b] != type_promote_table[b][a])) return FR_TYPE_INVALID;
+       if (unlikely(type_promote_table[a][b] != type_promote_table[b][a])) {
+               fr_strerror_printf("Inverse type mapping inconsistent for a = %s, b = %s",
+                                  fr_table_str_by_value(fr_value_box_type_table, a, "<INVALID>"),
+                                  fr_table_str_by_value(fr_value_box_type_table, b, "<INVALID>"));
 
-       if (unlikely(type_promote_table[a][b] == FR_TYPE_INVALID)) return FR_TYPE_INVALID;
+               return FR_TYPE_INVALID;
+       }
+
+       if (unlikely(type_promote_table[a][b] == FR_TYPE_INVALID)) {
+               fr_strerror_printf("No type promotions for a = %s, b = %s",
+                                  fr_table_str_by_value(fr_value_box_type_table, a, "<INVALID>"),
+                                  fr_table_str_by_value(fr_value_box_type_table, b, "<INVALID>"));
+               return FR_TYPE_INVALID;
+       }
 
        /*
         *      That takes care of the simple cases.  :( Now to the