From: Nick Porter Date: Fri, 2 Feb 2024 13:01:57 +0000 (+0000) Subject: Add box_escape_func to SQL module instance X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=47fd6f441269b7fe1db5369d74dd49192fdf4de1;p=thirdparty%2Ffreeradius-server.git Add box_escape_func to SQL module instance --- diff --git a/src/modules/rlm_sql/rlm_sql.c b/src/modules/rlm_sql/rlm_sql.c index d19d77db56c..ce4eb234275 100644 --- a/src/modules/rlm_sql/rlm_sql.c +++ b/src/modules/rlm_sql/rlm_sql.c @@ -241,6 +241,11 @@ static int CC_HINT(nonnull(2,3)) sql_xlat_escape(request_t *request, fr_value_bo return 0; } +static int sql_box_escape(fr_value_box_t *vb, rlm_sql_escape_uctx_t *uctx) +{ + return sql_xlat_escape(NULL, vb, uctx); +} + /** Execute an arbitrary SQL query * * For SELECTs, the values of the first column will be returned. @@ -1679,6 +1684,7 @@ static int mod_instantiate(module_inst_ctx_t const *mctx) inst->sql_escape_func = inst->driver->sql_escape_func ? inst->driver->sql_escape_func : sql_escape_func; + inst->box_escape_func = sql_box_escape; inst->ef = module_rlm_exfile_init(inst, conf, 256, fr_time_delta_from_sec(30), true, NULL, NULL); if (!inst->ef) { diff --git a/src/modules/rlm_sql/rlm_sql.h b/src/modules/rlm_sql/rlm_sql.h index 315ca9eba90..d0a0c725208 100644 --- a/src/modules/rlm_sql/rlm_sql.h +++ b/src/modules/rlm_sql/rlm_sql.h @@ -179,6 +179,8 @@ typedef struct { rlm_sql_handle_t *handle; } rlm_sql_escape_uctx_t; +typedef int (*sql_box_escape_t)(fr_value_box_t *vb, rlm_sql_escape_uctx_t *uctx); + typedef struct { module_t common; //!< Common fields for all loadable modules. @@ -222,6 +224,7 @@ struct sql_inst { int (*sql_set_user)(rlm_sql_t const *inst, request_t *request, char const *username); xlat_escape_legacy_t sql_escape_func; + sql_box_escape_t box_escape_func; sql_rcode_t (*query)(rlm_sql_t const *inst, request_t *request, rlm_sql_handle_t **handle, char const *query); sql_rcode_t (*select)(rlm_sql_t const *inst, request_t *request, rlm_sql_handle_t **handle, char const *query); sql_rcode_t (*fetch_row)(rlm_sql_row_t *out, rlm_sql_t const *inst, request_t *request, rlm_sql_handle_t **handle);