@@ -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