summaryrefslogtreecommitdiffstats
path: root/src/modules/rlm_sql/drivers
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-08-26 10:41:52 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-08-26 10:41:52 +0000
commit44eafeee62e6982131c62df6f74335114ca53024 (patch)
tree1cdf833b0a76e52630d717202398ced5900e11e9 /src/modules/rlm_sql/drivers
parentAdding upstream version 3.2.3+dfsg. (diff)
downloadfreeradius-upstream.tar.xz
freeradius-upstream.zip
Adding upstream version 3.2.5+dfsg.upstream/3.2.5+dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/modules/rlm_sql/drivers')
-rw-r--r--src/modules/rlm_sql/drivers/rlm_sql_freetds/rlm_sql_freetds.c2
-rw-r--r--src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c22
-rw-r--r--src/modules/rlm_sql/drivers/rlm_sql_null/rlm_sql_null.c6
-rw-r--r--src/modules/rlm_sql/drivers/rlm_sql_sqlite/rlm_sql_sqlite.c29
4 files changed, 18 insertions, 41 deletions
diff --git a/src/modules/rlm_sql/drivers/rlm_sql_freetds/rlm_sql_freetds.c b/src/modules/rlm_sql/drivers/rlm_sql_freetds/rlm_sql_freetds.c
index a5c3b93..da7d7fc 100644
--- a/src/modules/rlm_sql/drivers/rlm_sql_freetds/rlm_sql_freetds.c
+++ b/src/modules/rlm_sql/drivers/rlm_sql_freetds/rlm_sql_freetds.c
@@ -458,7 +458,7 @@ static sql_rcode_t sql_select_query(rlm_sql_handle_t *handle, rlm_sql_config_t *
for (i = 0; i < colcount; i++) {
/* Space to hold the result data */
- rowdata[i] = talloc_array(rowdata, char, MAX_DATASTR_LEN + 1);
+ rowdata[i] = talloc_zero_array(rowdata, char, MAX_DATASTR_LEN + 1);
/* Associate the target buffer with the data */
if (ct_bind(conn->command, i + 1, &descriptor, rowdata[i], NULL, NULL) != CS_SUCCEED) {
diff --git a/src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c b/src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c
index 78d1b8f..2f51e0a 100644
--- a/src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c
+++ b/src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c
@@ -305,14 +305,11 @@ static sql_rcode_t sql_socket_init(rlm_sql_handle_t *handle, rlm_sql_config_t *c
* We need to know about connection errors, and are capable
* of reconnecting automatically.
*/
-#if MYSQL_VERSION_ID >= 50013
{
int reconnect = 0;
mysql_options(&(conn->db), MYSQL_OPT_RECONNECT, &reconnect);
}
-#endif
-#if (MYSQL_VERSION_ID >= 50000)
if (config->query_timeout) {
unsigned int connect_timeout = config->query_timeout;
unsigned int read_timeout = config->query_timeout;
@@ -340,13 +337,8 @@ static sql_rcode_t sql_socket_init(rlm_sql_handle_t *handle, rlm_sql_config_t *c
mysql_options(&(conn->db), MYSQL_OPT_READ_TIMEOUT, &read_timeout);
mysql_options(&(conn->db), MYSQL_OPT_WRITE_TIMEOUT, &write_timeout);
}
-#endif
-#if (MYSQL_VERSION_ID >= 40100)
sql_flags = CLIENT_MULTI_RESULTS | CLIENT_FOUND_ROWS;
-#else
- sql_flags = CLIENT_FOUND_ROWS;
-#endif
#ifdef CLIENT_MULTI_STATEMENTS
sql_flags |= CLIENT_MULTI_STATEMENTS;
@@ -485,14 +477,12 @@ retry_store_result:
if (!conn->result) {
rcode = sql_check_error(conn->sock, 0);
if (rcode != RLM_SQL_OK) return rcode;
-#if (MYSQL_VERSION_ID >= 40100)
ret = mysql_next_result(conn->sock);
if (ret == 0) {
/* there are more results */
goto retry_store_result;
} else if (ret > 0) return sql_check_error(NULL, ret);
/* ret == -1 signals no more results */
-#endif
}
return RLM_SQL_OK;
}
@@ -502,17 +492,10 @@ static int sql_num_fields(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t *con
int num = 0;
rlm_sql_mysql_conn_t *conn = handle->conn;
-#if MYSQL_VERSION_ID >= 32224
/*
* Count takes a connection handle
*/
if (!(num = mysql_field_count(conn->sock))) {
-#else
- /*
- * Fields takes a result struct
- */
- if (!(num = mysql_num_fields(conn->result))) {
-#endif
return -1;
}
return num;
@@ -576,7 +559,6 @@ retry_fetch_row:
rcode = sql_check_error(conn->sock, 0);
if (rcode != RLM_SQL_OK) return rcode;
-#if (MYSQL_VERSION_ID >= 40100)
sql_free_result(handle, config);
ret = mysql_next_result(conn->sock);
@@ -587,7 +569,7 @@ retry_fetch_row:
}
} else if (ret > 0) return sql_check_error(NULL, ret);
/* If ret is -1 then there are no more rows */
-#endif
+
return RLM_SQL_NO_MORE_ROWS;
}
@@ -769,7 +751,6 @@ static size_t sql_error(TALLOC_CTX *ctx, sql_log_entry_t out[], size_t outlen,
*/
static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, rlm_sql_config_t *config)
{
-#if (MYSQL_VERSION_ID >= 40100)
rlm_sql_mysql_conn_t *conn = handle->conn;
int ret;
MYSQL_RES *result;
@@ -809,7 +790,6 @@ static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, rlm_sql_config_t *
mysql_free_result(result);
}
if (ret > 0) return sql_check_error(NULL, ret);
-#endif
return RLM_SQL_OK;
}
diff --git a/src/modules/rlm_sql/drivers/rlm_sql_null/rlm_sql_null.c b/src/modules/rlm_sql/drivers/rlm_sql_null/rlm_sql_null.c
index 8f3a8f0..a4c961c 100644
--- a/src/modules/rlm_sql/drivers/rlm_sql_null/rlm_sql_null.c
+++ b/src/modules/rlm_sql/drivers/rlm_sql_null/rlm_sql_null.c
@@ -53,9 +53,9 @@ static sql_rcode_t sql_select_query(UNUSED rlm_sql_handle_t *handle,
UNUSED rlm_sql_config_t *config, UNUSED char const *query)
{
if (rad_debug_lvl >= L_DBG_LVL_1) {
- radlog(L_DBG | L_WARN, "The 'rlm_sql_null' driver CANNOT be used for SELECTS.");
- radlog(L_DBG | L_WARN, "Please update the 'sql' module configuration to use a real database.");
- radlog(L_DBG | L_WARN, "Set 'driver = ...' to the database you want to use.");
+ radlog(L_DBG, "The 'rlm_sql_null' driver CANNOT be used for SELECTS.");
+ radlog(L_DBG, "Please update the 'sql' module configuration to use a real database.");
+ radlog(L_DBG, "Set 'driver = ...' to the database you want to use.");
}
return 0;
diff --git a/src/modules/rlm_sql/drivers/rlm_sql_sqlite/rlm_sql_sqlite.c b/src/modules/rlm_sql/drivers/rlm_sql_sqlite/rlm_sql_sqlite.c
index 65b7d9a..3b2a01b 100644
--- a/src/modules/rlm_sql/drivers/rlm_sql_sqlite/rlm_sql_sqlite.c
+++ b/src/modules/rlm_sql/drivers/rlm_sql_sqlite/rlm_sql_sqlite.c
@@ -232,9 +232,9 @@ static void sql_print_error(sqlite3 *db, int status, char const *fmt, ...)
static int sql_loadfile(TALLOC_CTX *ctx, sqlite3 *db, char const *filename)
{
ssize_t len;
- int statement_cnt = 0;
+ int statement_len, statement_cnt = 0;
char *buffer;
- char *p, *q;
+ char const *p;
int cl;
FILE *f;
struct stat finfo;
@@ -308,7 +308,7 @@ static int sql_loadfile(TALLOC_CTX *ctx, sqlite3 *db, char const *filename)
if ((*p != 0x0a) && (*p != 0x0d) && (*p != '\t')) break;
cl = 1;
} else {
- cl = fr_utf8_char((uint8_t *) p, -1);
+ cl = fr_utf8_char((uint8_t const *) p, -1);
if (!cl) break;
}
}
@@ -319,21 +319,13 @@ static int sql_loadfile(TALLOC_CTX *ctx, sqlite3 *db, char const *filename)
return -1;
}
- /*
- * Statement delimiter is ;\n
- */
p = buffer;
- while ((q = strchr(p, ';'))) {
- if ((q[1] != '\n') && (q[1] != '\0')) {
- p = q + 1;
- statement_cnt++;
- continue;
- }
-
+ while (*p) {
+ statement_len = len - (p - buffer);
#ifdef HAVE_SQLITE3_PREPARE_V2
- status = sqlite3_prepare_v2(db, p, q - p, &statement, &z_tail);
+ status = sqlite3_prepare_v2(db, p, statement_len, &statement, &z_tail);
#else
- status = sqlite3_prepare(db, p, q - p, &statement, &z_tail);
+ status = sqlite3_prepare(db, p, statement_len, &statement, &z_tail);
#endif
if (sql_check_error(db, status) != RLM_SQL_OK) {
@@ -342,6 +334,11 @@ static int sql_loadfile(TALLOC_CTX *ctx, sqlite3 *db, char const *filename)
return -1;
}
+ /*
+ * No SQL statement was found
+ */
+ if (!statement) break;
+
status = sqlite3_step(statement);
if (sql_check_error(db, status) != RLM_SQL_OK) {
sql_print_error(db, status, "Failed executing statement %i", statement_cnt);
@@ -358,7 +355,7 @@ static int sql_loadfile(TALLOC_CTX *ctx, sqlite3 *db, char const *filename)
}
statement_cnt++;
- p = q + 1;
+ p = z_tail;
}
talloc_free(buffer);