]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Quiet clang scan
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Tue, 11 May 2021 17:41:14 +0000 (19:41 +0200)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Tue, 11 May 2021 17:45:52 +0000 (19:45 +0200)
src/lib/util/dict_util.c

index 893013d0852769b3e02703890cfecef18786e894..918c7666159daca5aef9d5b30b688767adfd1357 100644 (file)
@@ -2180,7 +2180,7 @@ ssize_t dict_attr_search(fr_dict_attr_err_t *err, fr_dict_attr_t const **out,
                         bool internal, bool foreign,
                         dict_attr_resolve_func_t func)
 {
-       fr_dict_attr_err_t      our_err;
+       fr_dict_attr_err_t      our_err = FR_DICT_ATTR_OK;
        fr_hash_iter_t          iter;
        fr_dict_t               *dict = NULL;
 
@@ -2258,19 +2258,31 @@ error:
                fr_sbuff_marker_t       start;
                char                    *list = NULL;
 
+#define APPEND_DICT_NAME(_in, _dict) \
+do { \
+       char *_n; \
+       _n = talloc_strdup_append_buffer(_in, fr_dict_root(_dict)->name); \
+       if (unlikely(!_n)) { \
+               talloc_free(_in); \
+               goto done; \
+       } \
+       _in = _n; \
+       _n = talloc_strdup_append_buffer(_in, ", "); \
+       if (unlikely(!_n)) { \
+               talloc_free(_in); \
+               goto done; \
+       } \
+       _in = _n; \
+} while (0)
+
                our_in = FR_SBUFF_NO_ADVANCE(in);
                fr_sbuff_marker(&start, &our_in);
 
                list = talloc_strdup(NULL, "");
+               if (unlikely(!list)) goto done;
 
-               if (dict_def) {
-                       list = talloc_strdup_append_buffer(list, fr_dict_root(dict_def)->name);
-                       list = talloc_strdup_append_buffer(list, ", ");
-               }
-               if (internal) {
-                       list = talloc_strdup_append_buffer(list, fr_dict_root(dict_gctx->internal)->name);
-                       list = talloc_strdup_append_buffer(list, ", ");
-               }
+               if (dict_def) APPEND_DICT_NAME(list, dict_def);
+               if (internal) APPEND_DICT_NAME(list, dict_gctx->internal);
 
                if (foreign) {
                        for (dict = fr_hash_table_iter_init(dict_gctx->protocol_by_num, &iter);
@@ -2279,8 +2291,7 @@ error:
                                if (dict == dict_def) continue;
                                if (dict == dict_gctx->internal) continue;
 
-                               list = talloc_strdup_append_buffer(list, fr_dict_root(dict)->name);
-                               list = talloc_strdup_append_buffer(list, ", ");
+                               if (internal) APPEND_DICT_NAME(list, dict);
                        }
                }
 
@@ -2292,6 +2303,7 @@ error:
                talloc_free(list);
        }
 
+done:
        if (err) *err = our_err;
        *out = NULL;