From: Nick Porter Date: Fri, 19 Feb 2021 12:30:44 +0000 (+0000) Subject: Fix rlm_couchbase to match new dlists of map_t (#3947) X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a00c6d058ec9bb308218ac1ecac29d660e460074;p=thirdparty%2Ffreeradius-server.git Fix rlm_couchbase to match new dlists of map_t (#3947) plus correct definition of list parameter in mod_json_object_to_map() --- diff --git a/src/modules/rlm_couchbase/mod.c b/src/modules/rlm_couchbase/mod.c index a36b47e4b55..f1ec77aae8a 100644 --- a/src/modules/rlm_couchbase/mod.c +++ b/src/modules/rlm_couchbase/mod.c @@ -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, ""); @@ -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); } } diff --git a/src/modules/rlm_couchbase/mod.h b/src/modules/rlm_couchbase/mod.h index 3530635a4d3..2359620adba 100644 --- a/src/modules/rlm_couchbase/mod.h +++ b/src/modules/rlm_couchbase/mod.h @@ -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); diff --git a/src/modules/rlm_couchbase/rlm_couchbase.c b/src/modules/rlm_couchbase/rlm_couchbase.c index 18d039a0d70..79f15bb0ab1 100644 --- a/src/modules/rlm_couchbase/rlm_couchbase.c +++ b/src/modules/rlm_couchbase/rlm_couchbase.c @@ -33,6 +33,7 @@ RCSID("$Id$") #include #include #include +#include #include @@ -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); }