]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add box_escape_func to SQL module instance
authorNick Porter <nick@portercomputing.co.uk>
Fri, 2 Feb 2024 13:01:57 +0000 (13:01 +0000)
committerNick Porter <nick@portercomputing.co.uk>
Wed, 7 Feb 2024 10:41:08 +0000 (10:41 +0000)
src/modules/rlm_sql/rlm_sql.c
src/modules/rlm_sql/rlm_sql.h

index d19d77db56cf08694d4450409df62171ffce8a70..ce4eb2342757f66e5088f3967fd5053eb4d36eba 100644 (file)
@@ -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) {
index 315ca9eba90f553bfd6e157dff349f96fd5077a0..d0a0c72520844f98a9ff405890c13df01b1a6fe5 100644 (file)
@@ -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);