From: Alan T. DeKok Date: Tue, 29 Jul 2025 17:10:32 +0000 (-0400) Subject: parse OIDs numerically if we don't know the name X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ee5e7110645aaf60c6a891b6a57dc6dae972ee8f;p=thirdparty%2Ffreeradius-server.git parse OIDs numerically if we don't know the name --- diff --git a/src/lib/util/value.c b/src/lib/util/value.c index 238f68d76f..a6410f8f4e 100644 --- a/src/lib/util/value.c +++ b/src/lib/util/value.c @@ -5519,23 +5519,22 @@ parse: fr_value_box_init(dst, dst_type, dst_enumv, false); - if (!fr_sbuff_adv_past_str_literal(&our_in, "::")) { - fr_strerror_const("Missing '::' for attribute reference"); - return -1; + if (fr_sbuff_adv_past_str_literal(&our_in, "::")) { + + slen = fr_dict_attr_by_oid_substr(NULL, &dst->vb_attr, dst_enumv, &our_in, rules->terminals); + if (slen > 0) { + fr_assert(dst->vb_attr != NULL); + FR_SBUFF_SET_RETURN(in, &our_in); + } } - slen = fr_dict_attr_by_oid_substr(NULL, &dst->vb_attr, dst_enumv, &our_in, rules->terminals); + slen = fr_dict_attr_unknown_afrom_oid_substr(ctx, &dst->vb_attr, dst_enumv, &our_in, FR_TYPE_OCTETS); if (slen <= 0) { - slen = fr_dict_attr_by_oid_substr(NULL, &dst->vb_attr, dst_enumv, - &our_in, rules->terminals); - if (slen <= 0) { - fr_strerror_printf("Failed to find the named attribute in %s", dst_enumv->name); - return -2; - } + fr_strerror_printf("Failed to find the named attribute in %s", dst_enumv->name); + return -2; } fr_assert(dst->vb_attr != NULL); - FR_SBUFF_SET_RETURN(in, &our_in); /*