From: Arran Cudbard-Bell Date: Mon, 11 Oct 2021 01:14:02 +0000 (-0500) Subject: Decorate functions in pair.c with nonnull X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8c457416f355f6421fe496a40de3345e3b9e47ba;p=thirdparty%2Ffreeradius-server.git Decorate functions in pair.c with nonnull --- diff --git a/src/lib/server/map_async.c b/src/lib/server/map_async.c index e1b1dc3e24b..e15bfbacd34 100644 --- a/src/lib/server/map_async.c +++ b/src/lib/server/map_async.c @@ -864,6 +864,7 @@ static void map_list_mod_to_vps(TALLOC_CTX *ctx, fr_pair_list_t *list, vp_list_m vp = map_list_mod_to_vp(ctx, mod->lhs, tmpl_value(mod->rhs)); if (!vp) { fr_pair_list_free(list); + return; } fr_pair_append(list, vp); // } diff --git a/src/lib/server/tmpl_eval.c b/src/lib/server/tmpl_eval.c index a6f6f2c78b9..b3462a485c7 100644 --- a/src/lib/server/tmpl_eval.c +++ b/src/lib/server/tmpl_eval.c @@ -1347,6 +1347,7 @@ int tmpl_find_or_add_vp(fr_pair_t **out, request_t *request, tmpl_t const *vpt) fr_pair_list_t *head; tmpl_pair_list_and_ctx(ctx, head, request, tmpl_request(vpt), tmpl_list(vpt)); + if (!head) return -1; MEM(vp = fr_pair_afrom_da(ctx, tmpl_da(vpt))); diff --git a/src/lib/unlang/xlat_eval.c b/src/lib/unlang/xlat_eval.c index a5895ef7516..b1de6faacb5 100644 --- a/src/lib/unlang/xlat_eval.c +++ b/src/lib/unlang/xlat_eval.c @@ -91,8 +91,8 @@ fr_table_num_sorted_t const xlat_action_table[] = { }; size_t xlat_action_table_len = NUM_ELEMENTS(xlat_action_table); -static size_t xlat_process(TALLOC_CTX *ctx, char **out, request_t *request, xlat_exp_t const * const head, - xlat_escape_legacy_t escape, void const *escape_ctx); +static ssize_t xlat_process(TALLOC_CTX *ctx, char **out, request_t *request, xlat_exp_t const * const head, + xlat_escape_legacy_t escape, void const *escape_ctx); /** Reconstruct the original expansion string from an xlat tree * @@ -1740,8 +1740,8 @@ static char *xlat_sync_eval(TALLOC_CTX *ctx, request_t *request, xlat_exp_t cons } -static size_t xlat_process(TALLOC_CTX *ctx, char **out, request_t *request, xlat_exp_t const * const head, - xlat_escape_legacy_t escape, void const *escape_ctx) +static ssize_t xlat_process(TALLOC_CTX *ctx, char **out, request_t *request, xlat_exp_t const * const head, + xlat_escape_legacy_t escape, void const *escape_ctx) { int i, j, list; size_t total; @@ -1851,18 +1851,18 @@ static ssize_t _xlat_eval_compiled(TALLOC_CTX *ctx, char **out, size_t outlen, r xlat_exp_t const *node, xlat_escape_legacy_t escape, void const *escape_ctx) { char *buff; - ssize_t len; + ssize_t slen; fr_assert(node != NULL); - len = xlat_process(ctx, &buff, request, node, escape, escape_ctx); - if ((len < 0) || !buff) { + slen = xlat_process(ctx, &buff, request, node, escape, escape_ctx); + if (slen < 0) { fr_assert(buff == NULL); if (*out) **out = '\0'; - return len; + return slen; } - len = strlen(buff); + slen = strlen(buff); /* * If out doesn't point to an existing buffer @@ -1870,7 +1870,7 @@ static ssize_t _xlat_eval_compiled(TALLOC_CTX *ctx, char **out, size_t outlen, r */ if (!*out) { *out = buff; - return len; + return slen; } /* @@ -1878,7 +1878,7 @@ static ssize_t _xlat_eval_compiled(TALLOC_CTX *ctx, char **out, size_t outlen, r */ strlcpy(*out, buff, outlen); talloc_free(buff); - return len; + return slen; } static ssize_t _xlat_eval(TALLOC_CTX *ctx, char **out, size_t outlen, request_t *request, char const *fmt, diff --git a/src/lib/util/dcursor.h b/src/lib/util/dcursor.h index c72643594b8..729abe71969 100644 --- a/src/lib/util/dcursor.h +++ b/src/lib/util/dcursor.h @@ -702,9 +702,10 @@ static inline void fr_dcursor_free_list(fr_dcursor_t *cursor) * * @hidecallergraph */ -static inline void * CC_HINT(hot) _fr_dcursor_init(fr_dcursor_t *cursor, fr_dlist_head_t const *head, - fr_dcursor_iter_t iter, fr_dcursor_insert_t insert, - fr_dcursor_delete_t delete, bool is_const, void const *uctx) +static inline CC_HINT(nonnull(1,2)) +void *_fr_dcursor_init(fr_dcursor_t *cursor, fr_dlist_head_t const *head, + fr_dcursor_iter_t iter, fr_dcursor_insert_t insert, + fr_dcursor_delete_t delete, bool is_const, void const *uctx) { *cursor = (fr_dcursor_t){ .dlist = UNCONST(fr_dlist_head_t *, head), diff --git a/src/lib/util/pair.c b/src/lib/util/pair.c index 1ea114643c8..35298cd47b5 100644 --- a/src/lib/util/pair.c +++ b/src/lib/util/pair.c @@ -585,8 +585,6 @@ fr_pair_t *fr_pair_find_by_da(fr_pair_list_t const *list, fr_dict_attr_t const * LIST_VERIFY(list); - if (!da) return NULL; - while ((vp = fr_pair_list_next(list, vp))) { if (da == vp->da) { if (n == 0) return vp; @@ -798,7 +796,7 @@ void fr_pair_replace(fr_pair_list_t *list, fr_pair_t *replace) * replace it. Note, we always replace the head one, and * we ignore any others that might exist. */ - for(i = fr_pair_list_head(list); i; i = fr_pair_list_next(list, i)) { + for (i = fr_pair_list_head(list); i; i = fr_pair_list_next(list, i)) { VP_VERIFY(i); /* @@ -1529,18 +1527,13 @@ int fr_pair_list_copy_by_da(TALLOC_CTX *ctx, fr_pair_list_t *to, * - -1 on error. */ int fr_pair_list_copy_by_ancestor(TALLOC_CTX *ctx, fr_pair_list_t *to, - fr_pair_list_t *from, fr_dict_attr_t const *parent_da, unsigned int count) + fr_pair_list_t const *from, fr_dict_attr_t const *parent_da, unsigned int count) { fr_pair_t *vp, *new_vp; unsigned int cnt = 0; if (count == 0) count = UINT_MAX; - if (unlikely(!parent_da)) { - fr_strerror_printf("No search attribute provided"); - return -1; - } - for (vp = fr_pair_list_head(from); vp && (cnt < count); vp = fr_pair_list_next(from, vp)) { diff --git a/src/lib/util/pair.h b/src/lib/util/pair.h index 7ac6e98971c..242d13c2acf 100644 --- a/src/lib/util/pair.h +++ b/src/lib/util/pair.h @@ -337,24 +337,24 @@ int fr_pair_list_copy_by_da(TALLOC_CTX *ctx, fr_pair_list_t *to, fr_pair_list_t *from, fr_dict_attr_t const *da, unsigned int count); int fr_pair_list_copy_by_ancestor(TALLOC_CTX *ctx, fr_pair_list_t *to, - fr_pair_list_t *from, fr_dict_attr_t const *parent_da, unsigned int count) - CC_HINT(nonnull); + fr_pair_list_t const *from, + fr_dict_attr_t const *parent_da, unsigned int count) CC_HINT(nonnull); int fr_pair_sublist_copy(TALLOC_CTX *ctx, fr_pair_list_t *to, - fr_pair_list_t const *from, fr_pair_t const *start, unsigned int count) - CC_HINT(nonnull); + fr_pair_list_t const *from, + fr_pair_t const *start, unsigned int count) CC_HINT(nonnull(2,3)); -void fr_pair_list_append(fr_pair_list_t *dst, fr_pair_list_t *src); +void fr_pair_list_append(fr_pair_list_t *dst, fr_pair_list_t *src) CC_HINT(nonnull); -void fr_pair_list_prepend(fr_pair_list_t *dst, fr_pair_list_t *src); +void fr_pair_list_prepend(fr_pair_list_t *dst, fr_pair_list_t *src) CC_HINT(nonnull); /** @hidecallergraph */ void *fr_pair_list_head(fr_pair_list_t const *list) CC_HINT(nonnull); /** @hidecallergraph */ -void *fr_pair_list_next(fr_pair_list_t const *list, fr_pair_t const *item) CC_HINT(nonnull); +void *fr_pair_list_next(fr_pair_list_t const *list, fr_pair_t const *item) CC_HINT(nonnull(1)); -void *fr_pair_list_prev(fr_pair_list_t const *list, fr_pair_t const *item) CC_HINT(nonnull); +void *fr_pair_list_prev(fr_pair_list_t const *list, fr_pair_t const *item) CC_HINT(nonnull(1)); void *fr_pair_list_tail(fr_pair_list_t const *list) CC_HINT(nonnull); @@ -423,57 +423,56 @@ int fr_pair_value_memdup_buffer_shallow(fr_pair_t *vp, uint8_t const *src, bool int fr_pair_value_mem_append(fr_pair_t *vp, uint8_t *src, size_t len, bool tainted) CC_HINT(nonnull(1)); -int fr_pair_value_mem_append_buffer(fr_pair_t *vp, uint8_t *src, bool tainted) CC_HINT(nonnull(1)); +int fr_pair_value_mem_append_buffer(fr_pair_t *vp, uint8_t *src, bool tainted) CC_HINT(nonnull); /** @} */ /** @name Enum functions * * @{ */ -char const *fr_pair_value_enum(fr_pair_t const *vp, char buff[static 20]) CC_HINT(nonnull); +char const *fr_pair_value_enum(fr_pair_t const *vp, char buff[static 20]) CC_HINT(nonnull); -int fr_pair_value_enum_box(fr_value_box_t const **out, fr_pair_t *vp) CC_HINT(nonnull); +int fr_pair_value_enum_box(fr_value_box_t const **out, fr_pair_t *vp) CC_HINT(nonnull); /** @} */ /** @name Printing functions * * @{ */ -ssize_t fr_pair_print_value_quoted(fr_sbuff_t *out, - fr_pair_t const *vp, fr_token_t quote) CC_HINT(nonnull); +ssize_t fr_pair_print_value_quoted(fr_sbuff_t *out, + fr_pair_t const *vp, fr_token_t quote) CC_HINT(nonnull); static inline size_t CC_HINT(nonnull(2,3)) - fr_pair_aprint_value_quoted(TALLOC_CTX *ctx, char **out, - fr_pair_t const *vp, fr_token_t quote) + fr_pair_aprint_value_quoted(TALLOC_CTX *ctx, char **out, + fr_pair_t const *vp, fr_token_t quote) { - SBUFF_OUT_TALLOC_FUNC_NO_LEN_DEF(fr_pair_print_value_quoted, vp, quote) + SBUFF_OUT_TALLOC_FUNC_NO_LEN_DEF(fr_pair_print_value_quoted, vp, quote) } -ssize_t fr_pair_print(fr_sbuff_t *out, fr_pair_t const *parent, - fr_pair_t const *vp) CC_HINT(nonnull(1,3)); +ssize_t fr_pair_print(fr_sbuff_t *out, fr_pair_t const *parent, + fr_pair_t const *vp) CC_HINT(nonnull(1,3)); static inline size_t CC_HINT(nonnull(2,4)) - fr_pair_aprint(TALLOC_CTX *ctx, char **out, fr_pair_t const *parent, fr_pair_t const *vp) + fr_pair_aprint(TALLOC_CTX *ctx, char **out, fr_pair_t const *parent, fr_pair_t const *vp) { - SBUFF_OUT_TALLOC_FUNC_NO_LEN_DEF(fr_pair_print, parent, vp) + SBUFF_OUT_TALLOC_FUNC_NO_LEN_DEF(fr_pair_print, parent, vp) } -void fr_pair_fprint(FILE *, fr_pair_t const *vp) CC_HINT(nonnull); +void fr_pair_fprint(FILE *, fr_pair_t const *vp) CC_HINT(nonnull); -#define fr_pair_list_log(_log, _list) _fr_pair_list_log(_log, 4, NULL, _list, __FILE__, __LINE__); -void _fr_pair_list_log(fr_log_t const *log, int lvl, fr_pair_t *parent, - fr_pair_list_t const *list, char const *file, int line) - CC_HINT(nonnull(1,4)); +#define fr_pair_list_log(_log, _list) _fr_pair_list_log(_log, 4, NULL, _list, __FILE__, __LINE__); +void _fr_pair_list_log(fr_log_t const *log, int lvl, fr_pair_t *parent, + fr_pair_list_t const *list, char const *file, int line) CC_HINT(nonnull(1,4)); -void fr_pair_list_debug(fr_pair_list_t const *list) CC_HINT(nonnull); -void fr_pair_debug(fr_pair_t const *pair) CC_HINT(nonnull); +void fr_pair_list_debug(fr_pair_list_t const *list) CC_HINT(nonnull); +void fr_pair_debug(fr_pair_t const *pair) CC_HINT(nonnull); /** @} */ -void fr_pair_list_tainted(fr_pair_list_t *vps) CC_HINT(nonnull); +void fr_pair_list_tainted(fr_pair_list_t *vps) CC_HINT(nonnull); -void fr_pair_list_afrom_box(TALLOC_CTX *ctx, fr_pair_list_t *out, - fr_dict_t const *dict, fr_value_box_t *box) CC_HINT(nonnull(1,2,3)); +void fr_pair_list_afrom_box(TALLOC_CTX *ctx, fr_pair_list_t *out, + fr_dict_t const *dict, fr_value_box_t *box) CC_HINT(nonnull(1,2,3)); /* Tokenization */ typedef struct { @@ -482,8 +481,8 @@ typedef struct { fr_dcursor_t *cursor; //!< of VPs to add } fr_pair_ctx_t; -ssize_t fr_pair_ctx_afrom_str(fr_pair_ctx_t *pair_ctx, char const *in, size_t inlen); -void fr_pair_ctx_reset(fr_pair_ctx_t *pair_ctx, fr_dict_t const *dict); +ssize_t fr_pair_ctx_afrom_str(fr_pair_ctx_t *pair_ctx, char const *in, size_t inlen) CC_HINT(nonnull); +void fr_pair_ctx_reset(fr_pair_ctx_t *pair_ctx, fr_dict_t const *dict) CC_HINT(nonnull); #undef _CONST #ifdef __cplusplus diff --git a/src/lib/util/pair_tests.c b/src/lib/util/pair_tests.c index ec68114c481..af02e9382dc 100644 --- a/src/lib/util/pair_tests.c +++ b/src/lib/util/pair_tests.c @@ -91,6 +91,9 @@ static void test_fr_pair_afrom_da(void) TEST_CASE("Allocation using fr_pair_afrom_da"); TEST_CHECK((vp = fr_pair_afrom_da(autofree, fr_dict_attr_test_string)) != NULL); + TEST_CHECK(vp); + if (!vp) return; + TEST_CHECK(fr_pair_value_from_str(vp, test_string, strlen(test_string), '"', false) == 0); TEST_CASE("Validating VP_VERIFY()"); @@ -196,7 +199,9 @@ static void test_fr_dcursor_iter_by_da_init(void) } TEST_CASE("Validating VP_VERIFY()"); - VP_VERIFY(needle); + + TEST_CHECK(needle); + if (needle) VP_VERIFY(needle); TEST_CASE("Expected (needle->da == fr_dict_attr_test_uint32)"); TEST_CHECK(needle && needle->da == fr_dict_attr_test_uint32); @@ -219,8 +224,10 @@ static void test_fr_dcursor_iter_by_ancestor_init(void) } } + TEST_CHECK(needle); + TEST_CASE("Validating VP_VERIFY()"); - VP_VERIFY(needle); + if (needle) VP_VERIFY(needle); TEST_CASE("Expected (needle->da == fr_dict_attr_test_tlv_string)"); TEST_CHECK(needle && needle->da == fr_dict_attr_test_tlv_string); @@ -471,7 +478,9 @@ static void test_fr_pair_list_copy_by_ancestor(void) } TEST_CASE("Validating VP_VERIFY()"); - VP_VERIFY(needle); + + TEST_CHECK(needle); + if (needle) VP_VERIFY(needle); TEST_CASE("Expected (needle->da == fr_dict_attr_test_tlv_string)"); TEST_CHECK(needle && needle->da == fr_dict_attr_test_tlv_string);