From: Arran Cudbard-Bell Date: Wed, 5 Jul 2017 17:07:31 +0000 (-0400) Subject: Pass correct statement length into sqlite3_prepare[_v2] X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fd3b28f896f871f66198dfce7a4d1e9be9b727e9;p=thirdparty%2Ffreeradius-server.git Pass correct statement length into sqlite3_prepare[_v2] --- 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 70cea0ea309..058547fd620 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 @@ -234,7 +234,7 @@ static int sql_loadfile(TALLOC_CTX *ctx, sqlite3 *db, char const *filename) ssize_t len; int statement_cnt = 0; char *buffer; - char *p, *q, *s; + char *p, *q; int cl; FILE *f; struct stat finfo; @@ -322,20 +322,18 @@ static int sql_loadfile(TALLOC_CTX *ctx, sqlite3 *db, char const *filename) /* * Statement delimiter is ;\n */ - s = p = buffer; + p = buffer; while ((q = strchr(p, ';'))) { - if (q[1] != '\n') { + if ((q[1] != '\n') && (q[1] != '\0')) { p = q + 1; statement_cnt++; continue; } - *q = '\0'; - #ifdef HAVE_SQLITE3_PREPARE_V2 - status = sqlite3_prepare_v2(db, s, len, &statement, &z_tail); + status = sqlite3_prepare_v2(db, p, q - p, &statement, &z_tail); #else - status = sqlite3_prepare(db, s, len, &statement, &z_tail); + status = sqlite3_prepare(db, p, q - p, &statement, &z_tail); #endif if (sql_check_error(db, status) != RLM_SQL_OK) { @@ -360,7 +358,7 @@ static int sql_loadfile(TALLOC_CTX *ctx, sqlite3 *db, char const *filename) } statement_cnt++; - p = s = q + 1; + p = q + 1; } talloc_free(buffer);