fr_slen_t fr_dict_unknown_afrom_oid_substr(TALLOC_CTX *ctx,
- fr_dict_attr_t **out,
+ fr_dict_attr_t const **out,
fr_dict_attr_t const *parent,
fr_sbuff_t *in)
- CC_HINT(nonnull);
+ CC_HINT(nonnull(2,3,4));
int fr_dict_attr_unknown_parent_to_known(fr_dict_attr_t *da, fr_dict_attr_t const *parent);
* - <= 0 on failure. Negative offset indicates parse error position.
*/
fr_slen_t fr_dict_unknown_afrom_oid_substr(TALLOC_CTX *ctx,
- fr_dict_attr_t **out,
+ fr_dict_attr_t const **out,
fr_dict_attr_t const *parent,
fr_sbuff_t *in)
{
ssize_t slen;
fr_token_t op;
fr_dict_attr_t const *da, *my_parent;
- fr_dict_attr_t *da_unknown = NULL;
+ fr_dict_attr_t const *da_unknown = NULL;
fr_dict_attr_err_t err;
fr_skip_whitespace(p);
fr_strerror_printf("Unknown attribute \"%.*s\" for parent \"%s\"", (int) (q - ((uint8_t const *) p)), p, my_parent->name);
}
error:
+ fr_dict_unknown_free(&da_unknown);
*token = T_INVALID;
return -(p - buffer);
}
}
do_next:
+#ifdef STATIC_ANALYZER
+ if (!da) goto error;
+#endif
+
next = p + slen;
rhs[0] = '\0';
*/
op = gettoken(&p, rhs, sizeof(rhs), false);
if ((op < T_EQSTART) || (op > T_EQEND)) {
- fr_dict_unknown_free(&da);
fr_strerror_const("Expecting operator");
goto error;
}
if (fr_pair_append_by_da_parent(my_ctx, &vp, my_list, da) < 0) goto error;
}
+// fr_dict_unknown_free(&da_unknown);
vp->op = op;
/*