From: Alan T. DeKok Date: Mon, 10 May 2021 16:13:31 +0000 (-0400) Subject: allocate ext for ref X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cf20a8d72791a67f7d47902577a04db8a44aa4ed;p=thirdparty%2Ffreeradius-server.git allocate ext for ref --- diff --git a/src/lib/util/dict_tokenize.c b/src/lib/util/dict_tokenize.c index 60b2f2cc373..b95586b5de3 100644 --- a/src/lib/util/dict_tokenize.c +++ b/src/lib/util/dict_tokenize.c @@ -603,13 +603,30 @@ static int dict_read_process_alias(dict_tokenize_ctx_t *ctx, char **argv, int ar if (unlikely(!self)) return -1; self->dict = ctx->dict; - dict_attr_ref_set(self, da); + + /* + * Allocate room for the reference. + */ + if (dict_attr_ext_alloc(&self, FR_DICT_ATTR_EXT_REF) < 0) { + fr_strerror_const("Internal allocating reference"); + goto error; + } + + /* + * Then set the reference. + */ + if (dict_attr_ref_set(self, da) < 0) { + fr_strerror_const("Internal error storing reference"); + goto error; + } + + fr_assert(fr_dict_attr_ref(self) == da); namespace = dict_attr_namespace(parent); if (!namespace) { fr_strerror_printf("Attribute '%s' does not contain a namespace", parent->name); error: - talloc_const_free(da); + talloc_free(self); return -1; }