]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Avoid a segfault in sqlite3_bind_parameter_index when there are
authordrh <drh@noemail.net>
Fri, 24 Sep 2004 12:48:12 +0000 (12:48 +0000)
committerdrh <drh@noemail.net>
Fri, 24 Sep 2004 12:48:12 +0000 (12:48 +0000)
unnamed parameters.  Ticket #918. (CVS 1977)

FossilOrigin-Name: 49f25ddf8382d588e00bf927e2acae93e332e4d4

manifest
manifest.uuid
src/vdbeapi.c
test/bind.test

index 3b946aca75894b1a9279212189570381ff951eec..66e970246fdd9dab980f6e2129d418936b2e2e15 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Simplification\sof\sthe\strigger\scode.\s(CVS\s1976)
-D 2004-09-24T12:24:36
+C Avoid\sa\ssegfault\sin\ssqlite3_bind_parameter_index\swhen\sthere\sare\nunnamed\sparameters.\s\sTicket\s#918.\s(CVS\s1977)
+D 2004-09-24T12:48:13
 F Makefile.in abdeb5bd9d017822691884935c320037c33f6ee6
 F Makefile.linux-gcc a9e5a0d309fa7c38e7c14d3ecf7690879d3a5457
 F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
@@ -77,7 +77,7 @@ F src/vacuum.c 257de36230cb988842f66eb08dc6c0250b8e05f3
 F src/vdbe.c 0542852785220807feb02b9dee1150ac2e592c8d
 F src/vdbe.h 067ca8d6750ba4f69a50284765e5883dee860181
 F src/vdbeInt.h 6017100adff362b8dfa37a69e3f1431f084bfa5b
-F src/vdbeapi.c c7208bb89fc4efc605e20328099a540175e2dae6
+F src/vdbeapi.c f1e060aae5adace5f3a6ae2b0527cfe73e880f1c
 F src/vdbeaux.c 3b67c86338d6a39a173704ffd9e09ae9ceda6601
 F src/vdbemem.c ef9ac7d32acfe4bce5c5b408b1294c8d9e0cdb56
 F src/where.c 5d573333c07f259c8d3b8423d82ba774b78b63a9
@@ -88,7 +88,7 @@ F test/attach3.test 6d060986ff004ebb89e1876a331d96c6bb62269e
 F test/auth.test 300024c28fd0aac163a135b94504dffe82f06952
 F test/bigfile.test 62722ac4b420dfbcdceb137b8634e2cf2865fe27
 F test/bigrow.test f0aeb7573dcb8caaafea76454be3ade29b7fc747
-F test/bind.test d7e7f44817a6dbe0faedbb699ad2b559e5a3a7bb
+F test/bind.test a8682ba41433b93bb36a4213a43f282ca9aec5a9
 F test/blob.test 8727a7b46b2073a369cfc9bcb6f54dd366b9d884
 F test/btree.test 97b563e1ab999bf8764b129e8c4b4be0a116a52a
 F test/btree2.test aa4a6d05b1ea90b1acaf83ba89039dd302a88635
@@ -247,7 +247,7 @@ F www/tclsqlite.tcl 560ecd6a916b320e59f2917317398f3d59b7cc25
 F www/vdbe.tcl 59288db1ac5c0616296b26dce071c36cb611dfe9
 F www/version3.tcl 092a01f5ef430d2c4acc0ae558d74c4bb89638a0
 F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4
-P 9001e2220d2e35b81a9b7dc70c012f94bb6db679
-R fcc40213cf4f43ad3198270005b0847c
+P 9fa904d94ec1787bc8b97ec06a5423248fcb67fb
+R 3df8be3373e722de1a905bb4ac454886
 U drh
-Z e0420e53be5e67880217af54cf3a9844
+Z b33e881c15a4c20293ac74264af60f9b
index 74cd55540dc55ae70f3894877a85616429d9974a..29d3981eb016d25a3e7481d7bb152d2a0ba513c3 100644 (file)
@@ -1 +1 @@
-9fa904d94ec1787bc8b97ec06a5423248fcb67fb
\ No newline at end of file
+49f25ddf8382d588e00bf927e2acae93e332e4d4
\ No newline at end of file
index 15d102f57cef9df0c910d3e4c5e450b9e9b53d5b..a9148c2956139cb4ee2456c49fc32624b5ef1350 100644 (file)
@@ -595,7 +595,8 @@ int sqlite3_bind_parameter_index(sqlite3_stmt *pStmt, const char *zName){
   }
   createVarMap(p); 
   for(i=0; i<p->nVar; i++){
-    if( strcmp(p->azVar[i],zName)==0 ){
+    const char *z = p->azVar[i];
+    if( z && strcmp(z,zName)==0 ){
       return i+1;
     }
   }
index f1c4d4c6d0ec4b273ba445f2f03824ff45aba5b0..39df1b224c354667f55d7f9a6499e5224c370d95 100644 (file)
@@ -11,7 +11,7 @@
 # This file implements regression tests for SQLite library.  The
 # focus of this script testing the sqlite_bind API.
 #
-# $Id: bind.test,v 1.19 2004/09/07 16:19:54 drh Exp $
+# $Id: bind.test,v 1.20 2004/09/24 12:48:13 drh Exp $
 #
 
 set testdir [file dirname $argv0]
@@ -386,4 +386,44 @@ do_test bind-10.10 {
   execsql {SELECT * FROM t2}
 } {1 999 1000 1001 {} {} 1 2 1 3 2 1}
 
+# Ticket #918
+#
+do_test bind-10.11 {
+  catch {sqlite3_finalize $VM}
+  set VM [
+    sqlite3_prepare $DB {
+      INSERT INTO t2(a,b,c,d,e,f) VALUES(:abc,?,?4,:pqr,:abc,?4)
+    } -1 TAIL
+  ]
+  sqlite3_bind_parameter_count $VM
+} 5
+do_test bind-10.12 {
+  sqlite3_bind_parameter_index $VM :xyz
+} 0
+do_test bind-10.13 {
+  sqlite3_bind_parameter_index $VM {}
+} 0
+do_test bind-10.14 {
+  sqlite3_bind_parameter_index $VM :pqr
+} 5
+do_test bind-10.15 {
+  sqlite3_bind_parameter_index $VM ?4
+} 4
+do_test bind-10.16 {
+  sqlite3_bind_parameter_name $VM 1
+} :abc
+do_test bind-10.16 {
+  sqlite3_bind_parameter_name $VM 2
+} {}
+do_test bind-10.16 {
+  sqlite3_bind_parameter_name $VM 3
+} {}
+do_test bind-10.16 {
+  sqlite3_bind_parameter_name $VM 4
+} {?4}
+do_test bind-10.16 {
+  sqlite3_bind_parameter_name $VM 5
+} :pqr
+catch {sqlite3_finalize $VM}
+
 finish_test