mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
In extensions rtree, fts3 and fts5, ensure that when dynamic buffers are bound
to persistent SQL statements using SQLITE_STATIC, the binding is replaced with an SQL NULL before the buffer is freed. Otherwise, a user may obtain a pointer to the persistent statement using sqlite3_next_stmt() and attempt to access the freed buffer using sqlite3_expanded_sql() or similar. FossilOrigin-Name: 2a5f813bc61f9e780f2ccbda425611f65ad523b6d486a1e5e2b9d5e9f1d260a2
This commit is contained in:
@ -2309,6 +2309,16 @@ proc test_find_sqldiff {} {
|
||||
return $prog
|
||||
}
|
||||
|
||||
# Call sqlite3_expanded_sql() on all statements associated with database
|
||||
# connection $db. This sometimes finds use-after-free bugs if run with
|
||||
# valgrind or address-sanitizer.
|
||||
proc expand_all_sql {db} {
|
||||
set stmt ""
|
||||
while {[set stmt [sqlite3_next_stmt $db $stmt]]!=""} {
|
||||
sqlite3_expanded_sql $stmt
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# If the library is compiled with the SQLITE_DEFAULT_AUTOVACUUM macro set
|
||||
# to non-zero, then set the global variable $AUTOVACUUM to 1.
|
||||
|
Reference in New Issue
Block a user