]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Decorate functions in pair.c with nonnull
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Mon, 11 Oct 2021 01:14:02 +0000 (20:14 -0500)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Mon, 11 Oct 2021 01:14:02 +0000 (20:14 -0500)
src/lib/server/map_async.c
src/lib/server/tmpl_eval.c
src/lib/unlang/xlat_eval.c
src/lib/util/dcursor.h
src/lib/util/pair.c
src/lib/util/pair.h
src/lib/util/pair_tests.c

index e1b1dc3e24bb8cf4ae35c92e526dc760889d6604..e15bfbacd3439c8a9a3eac5b63732d3224a6587c 100644 (file)
@@ -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);
 //             }
index a6f6f2c78b9f87f11fff87325b8b168a34a42d2d..b3462a485c72eb01825f71d09f74266952c31f47 100644 (file)
@@ -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)));
 
index a5895ef751696ec2c64efa642bae1baed6ded3c4..b1de6faacb51a28b196c2c5695aec1891253cf10 100644 (file)
@@ -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,
index c72643594b8ef3ef011c986294371c29327e3c37..729abe719699459f2f4c509cd3db4372850b740c 100644 (file)
@@ -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),
index 1ea114643c80524b855ea3d9e4adee3e41589463..35298cd47b57567f74ba673a8ff0add6e948f9ac 100644 (file)
@@ -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)) {
index 7ac6e98971cdebee83ac30d525141b2a82dfd922..242d13c2acf89cdb188be81eb8ffd3884443a850 100644 (file)
@@ -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
index ec68114c481c370497e857efef1f2100547b40e2..af02e9382dc6a750dfff2577f6c39d42938daa54 100644 (file)
@@ -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);