From: Alan T. DeKok Date: Fri, 8 Sep 2023 14:24:54 +0000 (-0400) Subject: define and use fr_dict_unknown_copy() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f647c5dd7f7f638fd0f2062623639ea849bac680;p=thirdparty%2Ffreeradius-server.git define and use fr_dict_unknown_copy() because we want to get rid of fr_pair_to_unknown(). The caller should instead have created a raw attribute --- diff --git a/src/lib/server/tmpl_tokenize.c b/src/lib/server/tmpl_tokenize.c index 3aedccd01a9..218d765431b 100644 --- a/src/lib/server/tmpl_tokenize.c +++ b/src/lib/server/tmpl_tokenize.c @@ -1024,7 +1024,7 @@ int tmpl_attr_copy(tmpl_t *dst, tmpl_t const *src) break; case TMPL_ATTR_TYPE_UNKNOWN: - dst_ar->ar_unknown = fr_dict_unknown_afrom_da(dst_ar, src_ar->ar_unknown); + dst_ar->ar_unknown = fr_dict_unknown_copy(dst_ar, src_ar->ar_unknown); break; case TMPL_ATTR_TYPE_UNRESOLVED: @@ -1072,7 +1072,7 @@ int tmpl_attr_set_da(tmpl_t *vpt, fr_dict_attr_t const *da) */ if (da->flags.is_unknown) { ref = tmpl_attr_add(vpt, TMPL_ATTR_TYPE_UNKNOWN); - ref->da = ref->ar_unknown = fr_dict_unknown_afrom_da(vpt, da); + ref->da = ref->ar_unknown = fr_dict_unknown_copy(vpt, da); } else { ref = tmpl_attr_add(vpt, TMPL_ATTR_TYPE_NORMAL); ref->da = da; @@ -1124,7 +1124,7 @@ int tmpl_attr_set_leaf_da(tmpl_t *vpt, fr_dict_attr_t const *da) */ if (da->flags.is_unknown) { ref->type = TMPL_ATTR_TYPE_UNKNOWN; - ref->da = ref->ar_unknown = fr_dict_unknown_afrom_da(vpt, da); + ref->da = ref->ar_unknown = fr_dict_unknown_copy(vpt, da); } else { ref->type = TMPL_ATTR_TYPE_NORMAL; ref->da = da; diff --git a/src/lib/util/dict.h b/src/lib/util/dict.h index d4c5606597b..66fb377c0af 100644 --- a/src/lib/util/dict.h +++ b/src/lib/util/dict.h @@ -368,6 +368,13 @@ void fr_dict_unknown_free(fr_dict_attr_t const **da); fr_dict_attr_t *fr_dict_unknown_afrom_da(TALLOC_CTX *ctx, fr_dict_attr_t const *da); +static inline fr_dict_attr_t *fr_dict_unknown_copy(TALLOC_CTX *ctx, fr_dict_attr_t const *da) +{ + fr_assert(da->flags.is_unknown); + + return fr_dict_unknown_afrom_da(ctx, da); +} + fr_dict_attr_t *fr_dict_unknown_vendor_afrom_num(TALLOC_CTX *ctx, fr_dict_attr_t const *parent, unsigned int vendor) CC_HINT(nonnull(2)); diff --git a/src/lib/util/dict_unknown.c b/src/lib/util/dict_unknown.c index bd598146176..bbafa4b622e 100644 --- a/src/lib/util/dict_unknown.c +++ b/src/lib/util/dict_unknown.c @@ -202,7 +202,7 @@ static fr_dict_attr_t *dict_unknown_alloc(TALLOC_CTX *ctx, fr_dict_attr_t const * the parent from the 'da'. */ if (da->parent && da->parent->flags.is_unknown) { - parent = fr_dict_unknown_afrom_da(n, da->parent); + parent = fr_dict_unknown_copy(n, da->parent); if (!parent) { talloc_free(n); return NULL; diff --git a/src/lib/util/pair.c b/src/lib/util/pair.c index f3998e71cdd..00ff9810366 100644 --- a/src/lib/util/pair.c +++ b/src/lib/util/pair.c @@ -284,7 +284,7 @@ fr_pair_t *fr_pair_afrom_da(TALLOC_CTX *ctx, fr_dict_attr_t const *da) if (da->flags.is_unknown) { fr_dict_attr_t const *unknown; - unknown = fr_dict_unknown_afrom_da(vp, da); + unknown = fr_dict_unknown_copy(vp, da); da = unknown; } @@ -351,7 +351,7 @@ fr_pair_t *fr_pair_afrom_da_with_pool(TALLOC_CTX *ctx, fr_dict_attr_t const *da, if (da->flags.is_unknown) { fr_dict_attr_t const *unknown; - unknown = fr_dict_unknown_afrom_da(vp, da); + unknown = fr_dict_unknown_copy(vp, da); da = unknown; } @@ -561,7 +561,7 @@ fr_pair_t *fr_pair_copy(TALLOC_CTX *ctx, fr_pair_t const *vp) * Copy the unknown attribute hierarchy */ if (n->da->flags.is_unknown) { - n->da = fr_dict_unknown_afrom_da(n, n->da); + n->da = fr_dict_unknown_copy(n, n->da); if (!n->da) { talloc_free(n); return NULL;