]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Use fr_pair_list_t rather than cursor in sql_pair_list_afrom_str()
authorNick Porter <nick@portercomputing.co.uk>
Sat, 9 Jan 2021 14:16:54 +0000 (14:16 +0000)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 21 Jan 2021 23:05:49 +0000 (23:05 +0000)
src/modules/rlm_sql/rlm_sql.c
src/modules/rlm_sql/rlm_sql.h
src/modules/rlm_sql/sql.c

index 8961b6d87c222c0a381770a71007cf5009203e25..40cbea32bed425bcb5f6059b0ff260f563cdd0d5 100644 (file)
@@ -866,8 +866,7 @@ static unlang_action_t rlm_sql_process_groups(rlm_rcode_t *p_result,
                                goto finish;
                        }
 
-                       fr_cursor_init(&cursor, &check_tmp);
-                       rows = sql_getvpdata(request->control_ctx, inst, request, handle, &cursor, expanded);
+                       rows = sql_getvpdata(request->control_ctx, inst, request, handle, &check_tmp, expanded);
                        TALLOC_FREE(expanded);
                        if (rows < 0) {
                                REDEBUG("Error retrieving check pairs for group %s", entry->name);
@@ -909,7 +908,6 @@ static unlang_action_t rlm_sql_process_groups(rlm_rcode_t *p_result,
                }
 
                if (inst->config->authorize_group_reply_query) {
-                       fr_cursor_t     cursor;
 
                        /*
                         *      Now get the reply pairs since the paircmp matched
@@ -921,8 +919,7 @@ static unlang_action_t rlm_sql_process_groups(rlm_rcode_t *p_result,
                                goto finish;
                        }
 
-                       fr_cursor_init(&cursor, &reply_tmp);
-                       rows = sql_getvpdata(request->reply_ctx, inst, request, handle, &cursor, expanded);
+                       rows = sql_getvpdata(request->reply_ctx, inst, request, handle, &reply_tmp, expanded);
                        TALLOC_FREE(expanded);
                        if (rows < 0) {
                                REDEBUG("Error retrieving reply pairs for group %s", entry->name);
@@ -1231,7 +1228,6 @@ static unlang_action_t CC_HINT(nonnull) mod_authorize(rlm_rcode_t *p_result, mod
         *      Query the check table to find any conditions associated with this user/realm/whatever...
         */
        if (inst->config->authorize_check_query) {
-               fr_cursor_t     cursor;
                fr_pair_t       *vp;
 
                if (xlat_aeval(request, &expanded, request, inst->config->authorize_check_query,
@@ -1249,8 +1245,7 @@ static unlang_action_t CC_HINT(nonnull) mod_authorize(rlm_rcode_t *p_result, mod
                        RETURN_MODULE_RCODE(rcode);
                }
 
-               fr_cursor_init(&cursor, &check_tmp);
-               rows = sql_getvpdata(request->control_ctx, inst, request, &handle, &cursor, expanded);
+               rows = sql_getvpdata(request->control_ctx, inst, request, &handle, &check_tmp, expanded);
                TALLOC_FREE(expanded);
                if (rows < 0) {
                        REDEBUG("Failed getting check attributes");
@@ -1287,7 +1282,6 @@ static unlang_action_t CC_HINT(nonnull) mod_authorize(rlm_rcode_t *p_result, mod
        }
 
        if (inst->config->authorize_reply_query) {
-               fr_cursor_t     cursor;
 
                /*
                 *      Now get the reply pairs since the paircmp matched
@@ -1299,8 +1293,7 @@ static unlang_action_t CC_HINT(nonnull) mod_authorize(rlm_rcode_t *p_result, mod
                        goto error;
                }
 
-               fr_cursor_init(&cursor, &reply_tmp);
-               rows = sql_getvpdata(request->reply_ctx, inst, request, &handle, &cursor, expanded);
+               rows = sql_getvpdata(request->reply_ctx, inst, request, &handle, &reply_tmp, expanded);
                TALLOC_FREE(expanded);
                if (rows < 0) {
                        REDEBUG("SQL query error getting reply attributes");
index 97922cb1ab8297b79bff8a314043204bcabff4a4..96d3fa23a2de5309c4257d20780b919230e1e1bf 100644 (file)
@@ -243,9 +243,9 @@ struct rlm_sql_grouplist_s {
 };
 
 void           *sql_mod_conn_create(TALLOC_CTX *ctx, void *instance, fr_time_delta_t timeout);
-int            sql_pair_list_afrom_str(TALLOC_CTX *ctx, request_t *request, fr_cursor_t *cursor, rlm_sql_row_t row);
+int            sql_pair_list_afrom_str(TALLOC_CTX *ctx, request_t *request, fr_pair_list_t *out, rlm_sql_row_t row);
 int            sql_read_realms(rlm_sql_handle_t *handle);
-int            sql_getvpdata(TALLOC_CTX *ctx, rlm_sql_t const *inst, request_t *request, rlm_sql_handle_t **handle, fr_cursor_t *cursor, char const *query);
+int            sql_getvpdata(TALLOC_CTX *ctx, rlm_sql_t const *inst, request_t *request, rlm_sql_handle_t **handle, fr_pair_list_t *out, char const *query);
 int            sql_dict_init(rlm_sql_handle_t *handle);
 void           rlm_sql_query_log(rlm_sql_t const *inst, request_t *request, sql_acct_section_t *section, char const *query) CC_HINT(nonnull (1, 2, 4));
 sql_rcode_t    rlm_sql_select_query(rlm_sql_t const *inst, request_t *request, rlm_sql_handle_t **handle, char const *query) CC_HINT(nonnull (1, 3, 4));
index fef95d707ca4d5f4fa819f77bc4889a6662065c4..5766d4705aae14fd491efd36c8b4e958e2a7f868 100644 (file)
@@ -113,7 +113,7 @@ void *sql_mod_conn_create(TALLOC_CTX *ctx, void *instance, fr_time_delta_t timeo
  *     Purpose: Read entries from the database and fill fr_pair_t structures
  *
  *************************************************************************/
-int sql_pair_list_afrom_str(TALLOC_CTX *ctx, request_t *request, fr_cursor_t *cursor, rlm_sql_row_t row)
+int sql_pair_list_afrom_str(TALLOC_CTX *ctx, request_t *request, fr_pair_list_t *out, rlm_sql_row_t row)
 {
        fr_pair_t               *vp;
        char const              *ptr, *value;
@@ -229,7 +229,7 @@ int sql_pair_list_afrom_str(TALLOC_CTX *ctx, request_t *request, fr_cursor_t *cu
        /*
         *      Add the pair into the packet
         */
-       fr_cursor_append(cursor, vp);
+       fr_pair_add(out, vp);
        return 0;
 }
 
@@ -509,7 +509,7 @@ sql_rcode_t rlm_sql_select_query(rlm_sql_t const *inst, request_t *request, rlm_
  *
  *************************************************************************/
 int sql_getvpdata(TALLOC_CTX *ctx, rlm_sql_t const *inst, request_t *request, rlm_sql_handle_t **handle,
-                 fr_cursor_t *cursor, char const *query)
+                 fr_pair_list_t *out, char const *query)
 {
        rlm_sql_row_t   row;
        int             rows = 0;
@@ -521,7 +521,7 @@ int sql_getvpdata(TALLOC_CTX *ctx, rlm_sql_t const *inst, request_t *request, rl
        if (rcode != RLM_SQL_OK) return -1; /* error handled by rlm_sql_select_query */
 
        while (rlm_sql_fetch_row(&row, inst, request, handle) == RLM_SQL_OK) {
-               if (sql_pair_list_afrom_str(ctx, request, cursor, row) != 0) {
+               if (sql_pair_list_afrom_str(ctx, request, out, row) != 0) {
                        REDEBUG("Error parsing user data from database result");
 
                        (inst->driver->sql_finish_select_query)(*handle, inst->config);