Hi together,

I want to report a (possible) bug in sqlite3. When
sqlite3_clear_bindings is called with a nullptr argument, then a
SEGFAULT occurs.

From the behavior of the other methods which use statement as a
parameter I expected the behaviour that sqlite3_clear_bindings with a
nullptr argument is a no-op, since all of sqlite3_bind_*, sqlite3_step,
sqlite3_reset and sqlite3_finalize (that's the ones I checked) don't crash.

Please have a look at the example below.

#include <iostream> #include "sqlite3.h" sqlite3* db; int main()
{
    // DB Setup sqlite3_open(":memory:", &db); sqlite3_exec(db, "CREATE TABLE 
test (id INTEGER PRIMARY KEY);", nullptr, nullptr, nullptr); // Working example 
sqlite3_stmt* workingStatement; sqlite3_prepare(db, "SELECT * from test where 
id = ?", -1, &workingStatement, nullptr); sqlite3_bind_int(workingStatement, 0, 
0); sqlite3_step(workingStatement); sqlite3_clear_bindings(workingStatement); 
sqlite3_reset(workingStatement); sqlite3_finalize(workingStatement); // 
Crashing example. The Statement can't be created because of the
nonexisting table. sqlite3_stmt* nonWorkingStatement; sqlite3_prepare(db, 
"SELECT * from nonexisting where id = ?", -1, &nonWorkingStatement, nullptr); 
sqlite3_bind_int(nonWorkingStatement, 0, 0); sqlite3_step(nonWorkingStatement); 
sqlite3_clear_bindings(nonWorkingStatement); // SEGFAULT 
sqlite3_reset(nonWorkingStatement); sqlite3_finalize(nonWorkingStatement); }

Thanks for your great work!

Best regards
Christof Arnosti

-- 
Securiton AG, Alarm- und Sicherheitssysteme
Christof Arnosti
Grammetstrasse 14, 4410 Liestal
<https://www.google.ch/maps/place/Grammetstrasse+14,+4410+Liestal>
Tel. +41 58 910 55 35
christof.arno...@securiton.ch <mailto:christof.arno...@securiton.ch>,
www.securiton.ch <https://www.securiton.ch>

*Unsere neue Telefonnummer:
Telefon +41 58 910 55 30, Direkt +41 58 910 55 35*
---------------------------------------------------------------------------------------------------------
This e-mail is confidential and may contain privileged information. It is 
intended only for the addressees. If you have received this e-mail in error, 
kindly notify us immediately by telephone or e-mail and delete the message from 
your system. 
---------------------------------------------------------------------------------------------------------
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to