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);
#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 = "%{}\\'\"`";
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) {
* 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;
/*
* 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;
/*
* 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;
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;
* 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
/*
* 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;
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);
/*
* 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;
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;
/*
* 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;
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);
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);