]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
verify FR_TYPE_ATTR
authorAlan T. DeKok <aland@freeradius.org>
Tue, 29 Jul 2025 10:42:57 +0000 (06:42 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Tue, 29 Jul 2025 12:06:31 +0000 (08:06 -0400)
src/lib/util/dict_validate.c
src/lib/util/pair.c
src/lib/util/value.c

index 38643c6f0d15668455a176fb6575a838a139f78d..46f36bc666e5b1503f711390d5ad740904ffa73a 100644 (file)
@@ -120,6 +120,10 @@ bool dict_attr_flags_valid(fr_dict_attr_t *da)
                case FR_TYPE_TIME_DELTA:
                        break;
 
+               case FR_TYPE_ATTR:
+                       flags->is_known_width = 1;
+                       break;
+
                case FR_TYPE_STRING:
                case FR_TYPE_OCTETS:
                        if (!flags->length) {
index 13e2f67016f21c35479a3c0f6dba5a203dbc1c06..cadb1acf6e3d63ce081c19383f8efaeb54c32608 100644 (file)
@@ -3110,6 +3110,15 @@ void fr_pair_verify(char const *file, int line, fr_pair_list_t const *list, fr_p
                                             file, line, vp->da->name, vp->da->parent->name, parent->da->name);
                }
 
+#if 0
+               /*
+                *      We would like to enable this, but there's a
+                *      lot of code like fr_pair_append_by_da() which
+                *      creates the #fr_pair_t with no value.
+                */
+               fr_value_box_verify(file, line, &vp->data);
+#endif
+
        } else {
                fr_pair_t *parent = fr_pair_parent(vp);
 
index dbba61b79bea2fbe068935eccc09c3d54b0aa4bf..5dfc6f0a3521812105e81a10bf7537b028421fe8 100644 (file)
@@ -6598,6 +6598,13 @@ DIAG_ON(nonnull-compare)
                fr_value_box_list_verify(file, line, &vb->vb_group);
                break;
 
+       case FR_TYPE_ATTR:
+               if (vb->vb_attr) break;
+
+               fr_fatal_assert_msg(vb->vb_void, "CONSISTENCY CHECK FAILED %s[%d]: fr_value_box_t vb_attr field "
+                                   "was NULL", file, line);
+               break;
+
        default:
                break;
        }