]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
define and use fr_dict_unknown_copy()
authorAlan T. DeKok <aland@freeradius.org>
Fri, 8 Sep 2023 14:24:54 +0000 (10:24 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Fri, 8 Sep 2023 14:24:54 +0000 (10:24 -0400)
because we want to get rid of fr_pair_to_unknown().  The caller
should instead have created a raw attribute

src/lib/server/tmpl_tokenize.c
src/lib/util/dict.h
src/lib/util/dict_unknown.c
src/lib/util/pair.c

index 3aedccd01a968c7e7b4f18a97bbfaf4977a247cd..218d765431b08463ede96743bb1a41cd6cc10907 100644 (file)
@@ -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;
index d4c5606597bb3000d7562c08dcfb5b021b97a903..66fb377c0af26688395478999d64e94c9dac0a01 100644 (file)
@@ -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));
index bd598146176bad1cd373989e246afcd18c50b31f..bbafa4b622e2e2c724a657b9d0a12c215ddcbc22 100644 (file)
@@ -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;
index f3998e71cddc533ef1e5e0f7948446ffbf15baf4..00ff98103669a82380f45babf64d680b8dfde6a1 100644 (file)
@@ -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;