From: Phil Mayers Date: Fri, 21 Sep 2012 16:47:25 +0000 (+0100) Subject: add REQUEST* and void* to escape functions X-Git-Tag: release_3_0_0_beta1~1662^2~1^2~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=24160ee3c9ade21266edaa4619a26e6572adbf01;p=thirdparty%2Ffreeradius-server.git add REQUEST* and void* to escape functions --- diff --git a/src/include/radiusd.h b/src/include/radiusd.h index feeff487130..5ca235cc096 100644 --- a/src/include/radiusd.h +++ b/src/include/radiusd.h @@ -712,7 +712,7 @@ VALUE_PAIR *radius_pairmake(REQUEST *request, VALUE_PAIR **vps, int operator); /* xlat.c */ -typedef size_t (*RADIUS_ESCAPE_STRING)(char *out, size_t outlen, const char *in); +typedef size_t (*RADIUS_ESCAPE_STRING)(REQUEST *, char *out, size_t outlen, const char *in, void *arg); int radius_xlat(char * out, int outlen, const char *fmt, REQUEST * request, RADIUS_ESCAPE_STRING func, void *funcarg); diff --git a/src/main/mainconfig.c b/src/main/mainconfig.c index 5e51e3656a0..b5fc646182e 100644 --- a/src/main/mainconfig.c +++ b/src/main/mainconfig.c @@ -296,7 +296,7 @@ static const CONF_PARSER bootstrap_config[] = { #define MAX_ARGV (256) -static size_t config_escape_func(char *out, size_t outlen, const char *in) +static size_t config_escape_func(UNUSED REQUEST *request, char *out, size_t outlen, const char *in, UNUSED void *arg) { size_t len = 0; static const char *disallowed = "%{}\\'\"`"; diff --git a/src/main/xlat.c b/src/main/xlat.c index 4d8974deb7e..702ceb10957 100644 --- a/src/main/xlat.c +++ b/src/main/xlat.c @@ -1111,7 +1111,7 @@ do_xlat: char tmpbuf[8192]; retlen = c->do_xlat(c->instance, request, xlat_str, tmpbuf, sizeof(tmpbuf)); if (retlen > 0) { - retlen = func(q, freespace, tmpbuf); + retlen = func(request, q, freespace, tmpbuf, funcarg); if (retlen > 0) { RDEBUG2("string escaped from \'%s\' to \'%s\'", tmpbuf, q); } else if (retlen < 0) { @@ -1146,7 +1146,7 @@ done: * we use this one. It simplifies the coding, as the check for * func == NULL only happens once. */ -static size_t xlat_copy(char *out, size_t outlen, const char *in) +static size_t xlat_copy(UNUSED REQUEST *request, char *out, size_t outlen, const char *in, UNUSED void *arg) { int freespace = outlen; diff --git a/src/modules/rlm_ldap/rlm_ldap.c b/src/modules/rlm_ldap/rlm_ldap.c index be9517253ff..fcd555ab263 100644 --- a/src/modules/rlm_ldap/rlm_ldap.c +++ b/src/modules/rlm_ldap/rlm_ldap.c @@ -957,7 +957,7 @@ retry: /* * Translate the LDAP queries. */ -static size_t ldap_escape_func(char *out, size_t outlen, const char *in) +static size_t ldap_escape_func(UNUSED REQUEST *request, char *out, size_t outlen, const char *in, void *arg) { size_t len = 0; diff --git a/src/modules/rlm_linelog/rlm_linelog.c b/src/modules/rlm_linelog/rlm_linelog.c index a9fce39d7d4..111f770fa12 100644 --- a/src/modules/rlm_linelog/rlm_linelog.c +++ b/src/modules/rlm_linelog/rlm_linelog.c @@ -165,7 +165,9 @@ static int linelog_instantiate(CONF_SECTION *conf, void **instance) /* * Escape unprintable characters. */ -static size_t linelog_escape_func(char *out, size_t outlen, const char *in) +static size_t linelog_escape_func(UNUSED REQUEST *request, + char *out, size_t outlen, const char *in, + UNUSED void *arg) { int len = 0; diff --git a/src/modules/rlm_redis/rlm_redis.c b/src/modules/rlm_redis/rlm_redis.c index 5eebae88689..1ed0809c94e 100644 --- a/src/modules/rlm_redis/rlm_redis.c +++ b/src/modules/rlm_redis/rlm_redis.c @@ -137,7 +137,8 @@ static void *redis_create_conn(void *ctx) return dissocket; } -static size_t redis_escape_func(char *out, size_t outlen, const char *in) +static size_t redis_escape_func(UNUSED REQUEST *request, + char *out, size_t outlen, const char *in, UNUSED void *arg) { size_t len = 0; diff --git a/src/modules/rlm_sql/rlm_sql.c b/src/modules/rlm_sql/rlm_sql.c index ef877c659cf..0ff428b13b7 100644 --- a/src/modules/rlm_sql/rlm_sql.c +++ b/src/modules/rlm_sql/rlm_sql.c @@ -125,7 +125,7 @@ static int fallthrough(VALUE_PAIR *vp) * Yucky prototype. */ static int generate_sql_clients(SQL_INST *inst); -static size_t sql_escape_func(char *out, size_t outlen, const char *in); +static size_t sql_escape_func(REQUEST *, char *out, size_t outlen, const char *in, void *arg); /* * SQL xlat function @@ -403,7 +403,7 @@ static int generate_sql_clients(SQL_INST *inst) /* * Translate the SQL queries. */ -static size_t sql_escape_func(char *out, size_t outlen, const char *in) +static size_t sql_escape_func(UNUSED REQUEST *request, char *out, size_t outlen, const char *in, UNUSED void *arg) { size_t len = 0; diff --git a/src/modules/rlm_sql/rlm_sql.h b/src/modules/rlm_sql/rlm_sql.h index ee140ff30b5..4255718e390 100644 --- a/src/modules/rlm_sql/rlm_sql.h +++ b/src/modules/rlm_sql/rlm_sql.h @@ -106,7 +106,7 @@ struct sql_inst { int (*sql_set_user)(SQL_INST *inst, REQUEST *request, char *sqlusername, const char *username); SQLSOCK *(*sql_get_socket)(SQL_INST * inst); int (*sql_release_socket)(SQL_INST * inst, SQLSOCK * sqlsocket); - size_t (*sql_escape_func)(char *out, size_t outlen, const char *in); + size_t (*sql_escape_func)(REQUEST *, char *out, size_t outlen, const char *in, void *arg); int (*sql_query)(SQLSOCK **sqlsocket, SQL_INST *inst, char *query); int (*sql_select_query)(SQLSOCK **sqlsocket, SQL_INST *inst, char *query); int (*sql_fetch_row)(SQLSOCK **sqlsocket, SQL_INST *inst); diff --git a/src/modules/rlm_sql_log/rlm_sql_log.c b/src/modules/rlm_sql_log/rlm_sql_log.c index cea2bb9b1e5..d35a8a6f46d 100644 --- a/src/modules/rlm_sql_log/rlm_sql_log.c +++ b/src/modules/rlm_sql_log/rlm_sql_log.c @@ -151,7 +151,7 @@ static int sql_log_detach(void *instance) /* * Translate the SQL queries. */ -static size_t sql_escape_func(char *out, size_t outlen, const char *in) +static size_t sql_escape_func(UNUSED REQUEST *request, char *out, size_t outlen, const char *in, UNUSED void *arg) { int len = 0; @@ -197,7 +197,7 @@ static size_t sql_escape_func(char *out, size_t outlen, const char *in) return len; } -static size_t sql_utf8_escape_func(char *out, size_t outlen, const char *in) +static size_t sql_utf8_escape_func(UNUSED REQUEST *request, char *out, size_t outlen, const char *in, UNUSED void *arg) { size_t len = 0; size_t utf8 = 0; diff --git a/src/modules/rlm_sqlcounter/rlm_sqlcounter.c b/src/modules/rlm_sqlcounter/rlm_sqlcounter.c index 0664e60286d..52fe2be00ac 100644 --- a/src/modules/rlm_sqlcounter/rlm_sqlcounter.c +++ b/src/modules/rlm_sqlcounter/rlm_sqlcounter.c @@ -103,7 +103,7 @@ static char *allowed_chars = NULL; /* * Translate the SQL queries. */ -static size_t sql_escape_func(char *out, size_t outlen, const char *in) +static size_t sql_escape_func(UNUSED REQUEST *request, char *out, size_t outlen, const char *in, UNUSED void *arg) { int len = 0; @@ -467,7 +467,7 @@ static int sqlcounter_instantiate(CONF_SECTION *conf, void **instance) sqlcounter_detach(data); return -1; } - sql_escape_func(buffer, sizeof(buffer), data->key_name); + sql_escape_func(NULL, buffer, sizeof(buffer), data->key_name, NULL); if (strcmp(buffer, data->key_name) != 0) { radlog(L_ERR, "rlm_sqlcounter: The value for option 'key' is too long or contains unsafe characters."); sqlcounter_detach(data); @@ -501,7 +501,7 @@ static int sqlcounter_instantiate(CONF_SECTION *conf, void **instance) sqlcounter_detach(data); return -1; } - sql_escape_func(buffer, sizeof(buffer), data->sqlmod_inst); + sql_escape_func(NULL, buffer, sizeof(buffer), data->sqlmod_inst, NULL); if (strcmp(buffer, data->sqlmod_inst) != 0) { radlog(L_ERR, "rlm_sqlcounter: The value for option 'sqlmod-inst' is too long or contains unsafe characters."); sqlcounter_detach(data);