From: Arran Cudbard-Bell Date: Thu, 31 Jul 2025 04:22:36 +0000 (-0700) Subject: Fix copying FR_TYPE_ATTR X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2ba995fbe02519def35bb31ef4cad30dc8877143;p=thirdparty%2Ffreeradius-server.git Fix copying FR_TYPE_ATTR --- diff --git a/src/lib/util/value.c b/src/lib/util/value.c index aec7d5d241..ce936f3ecf 100644 --- a/src/lib/util/value.c +++ b/src/lib/util/value.c @@ -179,6 +179,8 @@ size_t const fr_value_box_field_sizes[] = { [FR_TYPE_TIME_DELTA] = SIZEOF_MEMBER(fr_value_box_t, datum.time_delta), [FR_TYPE_SIZE] = SIZEOF_MEMBER(fr_value_box_t, datum.size), + [FR_TYPE_ATTR] = SIZEOF_MEMBER(fr_value_box_t, vb_attr), + [FR_TYPE_VALUE_BOX] = sizeof(fr_value_box_t), [FR_TYPE_MAX] = 0 //!< Ensure array covers all types. @@ -218,6 +220,7 @@ size_t const fr_value_box_offsets[] = { [FR_TYPE_TIME_DELTA] = offsetof(fr_value_box_t, vb_time_delta), [FR_TYPE_SIZE] = offsetof(fr_value_box_t, vb_size), + [FR_TYPE_ATTR] = offsetof(fr_value_box_t, vb_attr), [FR_TYPE_VALUE_BOX] = 0, @@ -4160,6 +4163,18 @@ int fr_value_box_copy(TALLOC_CTX *ctx, fr_value_box_t *dst, const fr_value_box_t } break; + case FR_TYPE_ATTR: + fr_value_box_copy_meta(dst, src); + + /* raw also sets is_unknown */ + if (src->vb_attr->flags.is_unknown) { + dst->vb_attr = fr_dict_attr_unknown_copy(ctx, src->vb_attr); + if (!dst->vb_attr) return -1; + break; + } + dst->vb_attr = src->vb_attr; + break; + case FR_TYPE_TLV: case FR_TYPE_STRUCT: case FR_TYPE_VSA: