]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
allow raw.1 = { ...}
authorAlan T. DeKok <aland@freeradius.org>
Sat, 22 Feb 2025 22:25:27 +0000 (17:25 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Sat, 22 Feb 2025 22:25:27 +0000 (17:25 -0500)
src/lib/util/pair_legacy.c

index a6d2a75ec19265343e84f1116f1beb867f7b7541..4934b5d36b16d4fc489dba140bb631fb0b9c92f0 100644 (file)
@@ -454,18 +454,24 @@ redo:
                                return fr_sbuff_error(&our_in);
                        }
 
-                       da_unknown = fr_dict_attr_unknown_raw_afrom_da(root->ctx, da);
+                       /*
+                        *      If we're parsing raw octets, create a raw octets attribute.
+                        *
+                        *      Otherwise create one of type 'tlv', and then parse the children.
+                        */
+                       if (raw_type == FR_TYPE_OCTETS) {
+                               da_unknown = fr_dict_attr_unknown_raw_afrom_da(root->ctx, da);
+                       } else {
+                               da_unknown = fr_dict_attr_unknown_afrom_da(root->ctx, da);
+                       }
                        if (!da_unknown) return fr_sbuff_error(&our_in);
 
-                       fr_assert(da_unknown->type == FR_TYPE_OCTETS);
-
                        if (fr_pair_append_by_da(relative->ctx, &vp, relative->list, da_unknown) < 0) {
                                fr_dict_attr_unknown_free(&da_unknown);
                                return fr_sbuff_error(&our_in);
                        }
 
                        fr_dict_attr_unknown_free(&da_unknown);
-                       fr_assert(vp->vp_type == FR_TYPE_OCTETS);
 
                        /*
                         *      Just create the leaf attribute.