Skip to content

Commit 099a396

Browse files
committed
-changed select-query to char array, confirmed to work with nginx 1.0.3 as well
1 parent 0c2009d commit 099a396

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

ngx_http_auth_sqlite_basic_module.c

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -163,14 +163,29 @@ ngx_http_auth_sqlite_basic_handler(ngx_http_request_t *r)
163163
// End //
164164

165165

166-
ngx_str_t select_query = ngx_string("");
167-
select_query.len = alcf->sqlite_table.len + alcf->sqlite_user.len + login.len + alcf->sqlite_passwd.len + r->headers_in.passwd.len + strlen("select * from %s where %s = \"%s\" and %s = \"%s\"");
168-
select_query.data = ngx_pnalloc(r->pool, select_query.len + 1);
169-
170-
ngx_snprintf(select_query.data, select_query.len, "select * from %s where %s = \"%s\" and %s = \"%s\"", alcf->sqlite_table.data, alcf->sqlite_user.data, login.data, alcf->sqlite_passwd.data, r->headers_in.passwd.data);
166+
//calculating the length of the required char array
167+
int ARR_LEN = strlen("select * from ") +
168+
strlen((char *) alcf->sqlite_table.data) +
169+
strlen(" where ") +
170+
strlen((char *) alcf->sqlite_user.data) +
171+
strlen(" = \"") +
172+
strlen((char *) login.data) +
173+
strlen("\" and ") +
174+
strlen((char *) alcf->sqlite_passwd.data) +
175+
strlen(" = \"") +
176+
strlen((char *) r->headers_in.passwd.data) +
177+
strlen("\"");
178+
179+
//creating array based on calculated length
180+
char select_query[ARR_LEN + 1];
181+
sprintf(select_query, "select * from %s where %s = \"%s\" and %s = \"%s\"", (char *) alcf->sqlite_table.data
182+
, (char *) alcf->sqlite_user.data
183+
, (char *) login.data
184+
, (char *) alcf->sqlite_passwd.data
185+
, (char *) r->headers_in.passwd.data);
171186

172187
const char* tail;
173-
sqlite_return_value = sqlite3_prepare_v2(sqlite_handle, (char *)select_query.data, strlen((char *)select_query.data), &sqlite_stmt, &tail);
188+
sqlite_return_value = sqlite3_prepare_v2(sqlite_handle, select_query, strlen(select_query), &sqlite_stmt, &tail);
174189

175190
if (sqlite_return_value != SQLITE_OK) {
176191
ngx_log_error(NGX_LOG_CRIT, r->connection->log, 0, "Unable to fetch data from \"%s\" database", alcf->sqlite_db_file.data);

0 commit comments

Comments
 (0)