]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Fix rlm_couchbase to match new dlists of map_t (#3947)
authorNick Porter <nick@portercomputing.co.uk>
Fri, 19 Feb 2021 12:30:44 +0000 (12:30 +0000)
committerGitHub <noreply@github.com>
Fri, 19 Feb 2021 12:30:44 +0000 (12:30 +0000)
plus correct definition of list parameter in mod_json_object_to_map()

src/modules/rlm_couchbase/mod.c
src/modules/rlm_couchbase/mod.h
src/modules/rlm_couchbase/rlm_couchbase.c

index a36b47e4b55cb4a15f7b4739e70225461d129772..f1ec77aae8a578c2ba8e11bf1a36ec9c586daeea 100644 (file)
@@ -373,7 +373,7 @@ int mod_attribute_to_element(const char *name, json_object *map, void *buf)
  *     - 0 on success.
  *     - <0 on error.
  */
-int mod_json_object_to_map(TALLOC_CTX *ctx, fr_cursor_t *out, request_t *request, json_object *json, pair_list_t list)
+int mod_json_object_to_map(TALLOC_CTX *ctx, fr_dcursor_t *out, request_t *request, json_object *json, tmpl_pair_list_t list)
 {
        json_object     *list_obj;
        char const      *list_name = fr_table_str_by_value(pair_list_table, list, "<INVALID>");
@@ -397,7 +397,7 @@ int mod_json_object_to_map(TALLOC_CTX *ctx, fr_cursor_t *out, request_t *request
                return -1;
        }
 
-       fr_cursor_tail(out);                            /* Wind to the end */
+       fr_dcursor_tail(out);                           /* Wind to the end */
 
        /*
         *      Loop through the keys in this object.
@@ -415,7 +415,7 @@ int mod_json_object_to_map(TALLOC_CTX *ctx, fr_cursor_t *out, request_t *request
                        REDEBUG("Invalid json type for \"%s\" key - Attributes must be json objects", attr_name);
 
                error:
-                       fr_cursor_free_list(out);       /* Free any maps we added */
+                       fr_dcursor_free_list(out);      /* Free any maps we added */
                        return -1;
                }
 
@@ -493,7 +493,7 @@ int mod_json_object_to_map(TALLOC_CTX *ctx, fr_cursor_t *out, request_t *request
                                goto bad_value;
                        }
 
-                       fr_cursor_insert(out, map);
+                       fr_dcursor_insert(out, map);
                }
        }
 
index 3530635a4d310470f800d76643b2453fc48e6d08..2359620adba427c5cbe384de7ad8a94efc01e8dd 100644 (file)
@@ -82,7 +82,7 @@ int mod_build_attribute_element_map(CONF_SECTION *conf, void *instance);
 
 int mod_attribute_to_element(const char *name, json_object *map, void *buf);
 
-int mod_json_object_to_map(TALLOC_CTX *ctx, fr_cursor_t *out, request_t *request, json_object *json, fr_pair_list_t list);
+int mod_json_object_to_map(TALLOC_CTX *ctx, fr_dcursor_t *out, request_t *request, json_object *json, tmpl_pair_list_t list);
 
 json_object *mod_value_pair_to_json_object(request_t *request, fr_pair_t *vp);
 
index 18d039a0d70b5b923d8aa9109eb27f3482c9c7bc..79f15bb0ab1756f223e4a97751e02b1b282f154b 100644 (file)
@@ -33,6 +33,7 @@ RCSID("$Id$")
 #include <freeradius-devel/server/module.h>
 #include <freeradius-devel/util/debug.h>
 #include <freeradius-devel/util/base.h>
+#include <freeradius-devel/radius/defs.h>
 
 #include <freeradius-devel/json/base.h>
 
@@ -148,11 +149,14 @@ static unlang_action_t mod_authorize(rlm_rcode_t *p_result, module_ctx_t const *
 
        {
                TALLOC_CTX      *pool = talloc_pool(request, 1024);     /* We need to do lots of allocs */
-               fr_cursor_t     maps, vlms;
-               map_t   *map_head = NULL, *map;
+               fr_cursor_t     vlms;
+               fr_dcursor_t    maps;
+               map_t           *map = NULL;
+               fr_map_list_t   map_head;
                vp_list_mod_t   *vlm_head = NULL, *vlm;
 
-               fr_cursor_init(&maps, &map_head);
+               fr_map_list_init(&map_head);
+               fr_dcursor_init(&maps, &map_head);
 
                /*
                 *      Convert JSON data into maps
@@ -173,9 +177,7 @@ static unlang_action_t mod_authorize(rlm_rcode_t *p_result, module_ctx_t const *
                 *      Convert all the maps into list modifications,
                 *      which are guaranteed to succeed.
                 */
-               for (map = fr_cursor_head(&maps);
-                    map;
-                    map = fr_cursor_next(&maps)) {
+               while ((map = fr_dlist_next(&map_head, map))) {
                        if (map_to_list_mod(pool, &vlm, request, map, NULL, NULL) < 0) goto invalid;
                        fr_cursor_insert(&vlms, vlm);
                }