From: Alan T. DeKok Date: Sat, 22 Feb 2025 22:25:27 +0000 (-0500) Subject: allow raw.1 = { ...} X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f6812e2cad2e257204467da949d7f42611f1b1ba;p=thirdparty%2Ffreeradius-server.git allow raw.1 = { ...} --- diff --git a/src/lib/util/pair_legacy.c b/src/lib/util/pair_legacy.c index a6d2a75ec19..4934b5d36b1 100644 --- a/src/lib/util/pair_legacy.c +++ b/src/lib/util/pair_legacy.c @@ -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.