From 2ba995fbe02519def35bb31ef4cad30dc8877143 Mon Sep 17 00:00:00 2001 From: Arran Cudbard-Bell Date: Wed, 30 Jul 2025 21:22:36 -0700 Subject: [PATCH] Fix copying FR_TYPE_ATTR --- src/lib/util/value.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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: -- 2.47.2