mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-18 10:21:03 +03:00
Add a test case of preparing a statement with an nBytes parameter of 0
and where the previous byte of the string is zero. Ticket #3134. (CVS 5156) FossilOrigin-Name: 846a69acb59403438696000b4ffd588ab42b2f95
This commit is contained in:
16
manifest
16
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Do\snot\sreferences\szSql(-1)\sif\snBytes==0\sin\ssqlite3_prepare().\nTicket\s#3134.\s(CVS\s5155)
|
C Add\sa\stest\scase\sof\spreparing\sa\sstatement\swith\san\snBytes\sparameter\sof\s0\nand\swhere\sthe\sprevious\sbyte\sof\sthe\sstring\sis\szero.\s\sTicket\s#3134.\s(CVS\s5156)
|
||||||
D 2008-05-23T14:32:19
|
D 2008-05-23T14:49:49
|
||||||
F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
|
F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
|
||||||
F Makefile.in 79aeba12300a54903f1b1257c1e7c190234045dd
|
F Makefile.in 79aeba12300a54903f1b1257c1e7c190234045dd
|
||||||
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
||||||
@@ -125,7 +125,7 @@ F src/pager.c d0a77feeaeecaaaec9342a3bb3865ed9a490897a
|
|||||||
F src/pager.h 4f051fd856de6fd3c19aef5f82eace54122b9173
|
F src/pager.h 4f051fd856de6fd3c19aef5f82eace54122b9173
|
||||||
F src/parse.y fc4bd35c6088901f7c8daead26c6fb11c87d22e7
|
F src/parse.y fc4bd35c6088901f7c8daead26c6fb11c87d22e7
|
||||||
F src/pragma.c a4919a29a0923e00c6170b0677a50058e352b58c
|
F src/pragma.c a4919a29a0923e00c6170b0677a50058e352b58c
|
||||||
F src/prepare.c 4082e0d016fa7b2de07b67dab6b9d2bf0233ffab
|
F src/prepare.c cbc9301aba1d0fc3d05fae576f2eb667c189cb36
|
||||||
F src/printf.c f2d4f6c5b0ec24b643e85fe60258adad8b1f6acc
|
F src/printf.c f2d4f6c5b0ec24b643e85fe60258adad8b1f6acc
|
||||||
F src/random.c 2b2db2de4ab491f5a14d3480466f8f4b5a5db74a
|
F src/random.c 2b2db2de4ab491f5a14d3480466f8f4b5a5db74a
|
||||||
F src/select.c da43ce3080112aa77863e9c570c1df19a892acb8
|
F src/select.c da43ce3080112aa77863e9c570c1df19a892acb8
|
||||||
@@ -136,7 +136,7 @@ F src/sqliteInt.h 70a2b0bf856bbdb86b10d994ea863f6591ab7144
|
|||||||
F src/sqliteLimit.h f435e728c6b620ef7312814d660a81f9356eb5c8
|
F src/sqliteLimit.h f435e728c6b620ef7312814d660a81f9356eb5c8
|
||||||
F src/table.c 1fa8f8113ac9cbc09ae4801c6d2a7f0af82c5822
|
F src/table.c 1fa8f8113ac9cbc09ae4801c6d2a7f0af82c5822
|
||||||
F src/tclsqlite.c c57e740e30bd6dda678796eed62c7f0e64689834
|
F src/tclsqlite.c c57e740e30bd6dda678796eed62c7f0e64689834
|
||||||
F src/test1.c 168e78680b5b946378855042d30606015aa46fff
|
F src/test1.c da8bf328d7badb199fa83bd084f44f88202570c2
|
||||||
F src/test2.c f0808cc643528b9620e4059ca9bda8346f526121
|
F src/test2.c f0808cc643528b9620e4059ca9bda8346f526121
|
||||||
F src/test3.c f5328839e29631ed9eef8674994ad7341b2de59b
|
F src/test3.c f5328839e29631ed9eef8674994ad7341b2de59b
|
||||||
F src/test4.c c2c0f5dc907f1346f5d4b65eb5799f11eb9e4071
|
F src/test4.c c2c0f5dc907f1346f5d4b65eb5799f11eb9e4071
|
||||||
@@ -211,7 +211,7 @@ F test/blob.test 2a38d867bdf08f9ce081776acec1ac8d4bca66be
|
|||||||
F test/busy.test 76b4887f8b9160ba903c1ac22e8ff406ad6ae2f0
|
F test/busy.test 76b4887f8b9160ba903c1ac22e8ff406ad6ae2f0
|
||||||
F test/cache.test 3ff445c445742a7b6b9ba6e1d62a25263f9424b9
|
F test/cache.test 3ff445c445742a7b6b9ba6e1d62a25263f9424b9
|
||||||
F test/capi2.test cc64df7560a96f848f919ea2926c60acf639684b
|
F test/capi2.test cc64df7560a96f848f919ea2926c60acf639684b
|
||||||
F test/capi3.test 1ca5912fdd3a51ea8ee148742532c6a81724f594
|
F test/capi3.test d3848b06fb36d43b73aca6e22c44f734e14e5c3b
|
||||||
F test/capi3b.test 664eb55318132f292f2c436f90906f578cad6b97
|
F test/capi3b.test 664eb55318132f292f2c436f90906f578cad6b97
|
||||||
F test/capi3c.test 208713e5f3a63442c3574c55b83baa7cf8ac5f28
|
F test/capi3c.test 208713e5f3a63442c3574c55b83baa7cf8ac5f28
|
||||||
F test/cast.test ce8f14fc80f70b30ed984480cc0d8914a459e8f9
|
F test/cast.test ce8f14fc80f70b30ed984480cc0d8914a459e8f9
|
||||||
@@ -636,7 +636,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
|
|||||||
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
|
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
|
||||||
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
|
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
|
||||||
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
|
F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
|
||||||
P 0d47653a3c39b7cd41c7e6edd8c4b4543658412d
|
P 2d2c53e5058412a5f484ac2ca5bcef596aed2a7b
|
||||||
R 351b6d5d96f998331ac308c9c1246646
|
R d5354c2350726260a7fbdf53312cdb32
|
||||||
U drh
|
U drh
|
||||||
Z cb4f5f91ab1e87c3fcaef512e844a9d1
|
Z 65ba60bec746e8c3fc476890f017c4c4
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
2d2c53e5058412a5f484ac2ca5bcef596aed2a7b
|
846a69acb59403438696000b4ffd588ab42b2f95
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
** interface, and routines that contribute to loading the database schema
|
** interface, and routines that contribute to loading the database schema
|
||||||
** from disk.
|
** from disk.
|
||||||
**
|
**
|
||||||
** $Id: prepare.c,v 1.85 2008/05/23 14:32:19 drh Exp $
|
** $Id: prepare.c,v 1.86 2008/05/23 14:49:49 drh Exp $
|
||||||
*/
|
*/
|
||||||
#include "sqliteInt.h"
|
#include "sqliteInt.h"
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|||||||
44
src/test1.c
44
src/test1.c
@@ -13,7 +13,7 @@
|
|||||||
** is not included in the SQLite library. It is used for automated
|
** is not included in the SQLite library. It is used for automated
|
||||||
** testing of the SQLite library.
|
** testing of the SQLite library.
|
||||||
**
|
**
|
||||||
** $Id: test1.c,v 1.303 2008/05/11 17:22:01 drh Exp $
|
** $Id: test1.c,v 1.304 2008/05/23 14:49:49 drh Exp $
|
||||||
*/
|
*/
|
||||||
#include "sqliteInt.h"
|
#include "sqliteInt.h"
|
||||||
#include "tcl.h"
|
#include "tcl.h"
|
||||||
@@ -3166,6 +3166,47 @@ static int test_prepare_v2(
|
|||||||
return TCL_OK;
|
return TCL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Usage: sqlite3_prepare_tkt3134 DB
|
||||||
|
**
|
||||||
|
** Generate a prepared statement for a zero-byte string as a test
|
||||||
|
** for ticket #3134. The string should be preceeded by a zero byte.
|
||||||
|
*/
|
||||||
|
static int test_prepare_tkt3134(
|
||||||
|
void * clientData,
|
||||||
|
Tcl_Interp *interp,
|
||||||
|
int objc,
|
||||||
|
Tcl_Obj *CONST objv[]
|
||||||
|
){
|
||||||
|
sqlite3 *db;
|
||||||
|
static const char zSql[] = "\000SELECT 1";
|
||||||
|
sqlite3_stmt *pStmt = 0;
|
||||||
|
char zBuf[50];
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
if( objc!=2 ){
|
||||||
|
Tcl_AppendResult(interp, "wrong # args: should be \"",
|
||||||
|
Tcl_GetString(objv[0]), " DB sql bytes tailvar", 0);
|
||||||
|
return TCL_ERROR;
|
||||||
|
}
|
||||||
|
if( getDbPointer(interp, Tcl_GetString(objv[1]), &db) ) return TCL_ERROR;
|
||||||
|
rc = sqlite3_prepare_v2(db, &zSql[1], 0, &pStmt, 0);
|
||||||
|
assert(rc==SQLITE_OK || pStmt==0);
|
||||||
|
if( sqlite3TestErrCode(interp, db, rc) ) return TCL_ERROR;
|
||||||
|
if( rc!=SQLITE_OK ){
|
||||||
|
assert( pStmt==0 );
|
||||||
|
sprintf(zBuf, "(%d) ", rc);
|
||||||
|
Tcl_AppendResult(interp, zBuf, sqlite3_errmsg(db), 0);
|
||||||
|
return TCL_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( pStmt ){
|
||||||
|
if( sqlite3TestMakePointerStr(interp, zBuf, pStmt) ) return TCL_ERROR;
|
||||||
|
Tcl_AppendResult(interp, zBuf, 0);
|
||||||
|
}
|
||||||
|
return TCL_OK;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Usage: sqlite3_prepare16 DB sql bytes tailvar
|
** Usage: sqlite3_prepare16 DB sql bytes tailvar
|
||||||
**
|
**
|
||||||
@@ -4554,6 +4595,7 @@ int Sqlitetest1_Init(Tcl_Interp *interp){
|
|||||||
{ "sqlite3_prepare", test_prepare ,0 },
|
{ "sqlite3_prepare", test_prepare ,0 },
|
||||||
{ "sqlite3_prepare16", test_prepare16 ,0 },
|
{ "sqlite3_prepare16", test_prepare16 ,0 },
|
||||||
{ "sqlite3_prepare_v2", test_prepare_v2 ,0 },
|
{ "sqlite3_prepare_v2", test_prepare_v2 ,0 },
|
||||||
|
{ "sqlite3_prepare_tkt3134", test_prepare_tkt3134, 0},
|
||||||
{ "sqlite3_prepare16_v2", test_prepare16_v2 ,0 },
|
{ "sqlite3_prepare16_v2", test_prepare16_v2 ,0 },
|
||||||
{ "sqlite3_finalize", test_finalize ,0 },
|
{ "sqlite3_finalize", test_finalize ,0 },
|
||||||
{ "sqlite3_reset", test_reset ,0 },
|
{ "sqlite3_reset", test_reset ,0 },
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
# This file implements regression tests for SQLite library. The
|
# This file implements regression tests for SQLite library. The
|
||||||
# focus of this script testing the callback-free C/C++ API.
|
# focus of this script testing the callback-free C/C++ API.
|
||||||
#
|
#
|
||||||
# $Id: capi3.test,v 1.63 2008/05/05 16:56:35 drh Exp $
|
# $Id: capi3.test,v 1.64 2008/05/23 14:49:49 drh Exp $
|
||||||
#
|
#
|
||||||
|
|
||||||
set testdir [file dirname $argv0]
|
set testdir [file dirname $argv0]
|
||||||
@@ -1136,7 +1136,6 @@ do_test capi3-18.1 {
|
|||||||
sqlite3 db2 test.db
|
sqlite3 db2 test.db
|
||||||
db2 eval {CREATE TABLE t3(x)}
|
db2 eval {CREATE TABLE t3(x)}
|
||||||
db2 close
|
db2 close
|
||||||
breakpoint
|
|
||||||
sqlite3_step $STMT
|
sqlite3_step $STMT
|
||||||
} {SQLITE_ERROR}
|
} {SQLITE_ERROR}
|
||||||
do_test capi3-18.2 {
|
do_test capi3-18.2 {
|
||||||
@@ -1159,5 +1158,12 @@ do_test capi3-18.6 {
|
|||||||
} {database schema has changed}
|
} {database schema has changed}
|
||||||
sqlite3_finalize $STMT
|
sqlite3_finalize $STMT
|
||||||
|
|
||||||
|
# Ticket #3134. Prepare a statement with an nBytes parameter of 0.
|
||||||
|
# Make sure this works correctly and does not reference memory out of
|
||||||
|
# range.
|
||||||
|
#
|
||||||
|
do_test capi3-19.1 {
|
||||||
|
sqlite3_prepare_tkt3134 db
|
||||||
|
} {}
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
|||||||
Reference in New Issue
Block a user