1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-29 08:01:23 +03:00

Eliminate all use of sprintf(), strcpy() and strcat() from test logic because

OpenBSD hates those functions.

FossilOrigin-Name: 10321910990195878c0af1e94b34ae0cdc0cb31b
This commit is contained in:
drh
2015-01-19 00:35:53 +00:00
parent 047d4538e3
commit 65545b5993
12 changed files with 84 additions and 59 deletions

View File

@ -998,6 +998,23 @@ static void amatchWriteCost(amatch_word *pWord){
pWord->zCost[8] = 0; pWord->zCost[8] = 0;
} }
/* Circumvent compiler warnings about the use of strcpy() by supplying
** our own implementation.
*/
#if defined(__OpenBSD__)
static void amatchStrcpy(char *dest, const char *src){
while( (*(dest++) = *(src++))!=0 ){}
}
static void amatchStrcat(char *dest, const char *src){
while( *dest ) dest++;
amatchStrcpy(dest, src);
}
#else
# define amatchStrcpy strcpy
# define amatchStrcat strcat
#endif
/* /*
** Add a new amatch_word object to the queue. ** Add a new amatch_word object to the queue.
** **
@ -1073,7 +1090,7 @@ static void amatchAddWord(
assert( pOther==0 ); (void)pOther; assert( pOther==0 ); (void)pOther;
pWord->sWord.zKey = pWord->zWord; pWord->sWord.zKey = pWord->zWord;
pWord->sWord.pWord = pWord; pWord->sWord.pWord = pWord;
strcpy(pWord->zWord, pCur->zBuf); amatchStrcpy(pWord->zWord, pCur->zBuf);
pOther = amatchAvlInsert(&pCur->pWord, &pWord->sWord); pOther = amatchAvlInsert(&pCur->pWord, &pWord->sWord);
assert( pOther==0 ); (void)pOther; assert( pOther==0 ); (void)pOther;
#ifdef AMATCH_TRACE_1 #ifdef AMATCH_TRACE_1
@ -1083,6 +1100,7 @@ static void amatchAddWord(
#endif #endif
} }
/* /*
** Advance a cursor to its next row of output ** Advance a cursor to its next row of output
*/ */
@ -1148,7 +1166,7 @@ static int amatchNext(sqlite3_vtab_cursor *cur){
zBuf = sqlite3_realloc(zBuf, nBuf); zBuf = sqlite3_realloc(zBuf, nBuf);
if( zBuf==0 ) return SQLITE_NOMEM; if( zBuf==0 ) return SQLITE_NOMEM;
} }
strcpy(zBuf, pWord->zWord+2); amatchStrcpy(zBuf, pWord->zWord+2);
zNext[0] = 0; zNext[0] = 0;
zNextIn[0] = pCur->zInput[pWord->nMatch]; zNextIn[0] = pCur->zInput[pWord->nMatch];
if( zNextIn[0] ){ if( zNextIn[0] ){
@ -1163,7 +1181,7 @@ static int amatchNext(sqlite3_vtab_cursor *cur){
if( zNextIn[0] && zNextIn[0]!='*' ){ if( zNextIn[0] && zNextIn[0]!='*' ){
sqlite3_reset(p->pVCheck); sqlite3_reset(p->pVCheck);
strcat(zBuf, zNextIn); amatchStrcat(zBuf, zNextIn);
sqlite3_bind_text(p->pVCheck, 1, zBuf, nWord+nNextIn, SQLITE_STATIC); sqlite3_bind_text(p->pVCheck, 1, zBuf, nWord+nNextIn, SQLITE_STATIC);
rc = sqlite3_step(p->pVCheck); rc = sqlite3_step(p->pVCheck);
if( rc==SQLITE_ROW ){ if( rc==SQLITE_ROW ){
@ -1176,13 +1194,13 @@ static int amatchNext(sqlite3_vtab_cursor *cur){
} }
while( 1 ){ while( 1 ){
strcpy(zBuf+nWord, zNext); amatchStrcpy(zBuf+nWord, zNext);
sqlite3_reset(p->pVCheck); sqlite3_reset(p->pVCheck);
sqlite3_bind_text(p->pVCheck, 1, zBuf, -1, SQLITE_TRANSIENT); sqlite3_bind_text(p->pVCheck, 1, zBuf, -1, SQLITE_TRANSIENT);
rc = sqlite3_step(p->pVCheck); rc = sqlite3_step(p->pVCheck);
if( rc!=SQLITE_ROW ) break; if( rc!=SQLITE_ROW ) break;
zW = (const char*)sqlite3_column_text(p->pVCheck, 0); zW = (const char*)sqlite3_column_text(p->pVCheck, 0);
strcpy(zBuf+nWord, zNext); amatchStrcpy(zBuf+nWord, zNext);
if( strncmp(zW, zBuf, nWord)!=0 ) break; if( strncmp(zW, zBuf, nWord)!=0 ) break;
if( (zNextIn[0]=='*' && zNextIn[1]==0) if( (zNextIn[0]=='*' && zNextIn[1]==0)
|| (zNextIn[0]==0 && zW[nWord]==0) || (zNextIn[0]==0 && zW[nWord]==0)

View File

@ -1,5 +1,5 @@
C Set\sbinary\smode\sfor\soutput\son\sWindows\swhen\swriting\sa\squoted\sstring\sthat\nmight\scontain\snewline\scharacters. C Eliminate\sall\suse\sof\ssprintf(),\sstrcpy()\sand\sstrcat()\sfrom\stest\slogic\sbecause\nOpenBSD\shates\sthose\sfunctions.
D 2015-01-18T20:30:23.778 D 2015-01-19T00:35:53.426
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 5407a688f4d77a05c18a8142be8ae5a2829dd610 F Makefile.in 5407a688f4d77a05c18a8142be8ae5a2829dd610
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@ -106,7 +106,7 @@ F ext/fts3/unicode/mkunicode.tcl a2567f9d6ad6779879a2e394c120ad8718557e65
F ext/icu/README.txt d9fbbad0c2f647c3fdf715fc9fd64af53aedfc43 F ext/icu/README.txt d9fbbad0c2f647c3fdf715fc9fd64af53aedfc43
F ext/icu/icu.c d415ccf984defeb9df2c0e1afcfaa2f6dc05eacb F ext/icu/icu.c d415ccf984defeb9df2c0e1afcfaa2f6dc05eacb
F ext/icu/sqliteicu.h 728867a802baa5a96de7495e9689a8e01715ef37 F ext/icu/sqliteicu.h 728867a802baa5a96de7495e9689a8e01715ef37
F ext/misc/amatch.c 17ba78dc9b33601a40d2a7bc54c748b6f3eb7176 F ext/misc/amatch.c 27b9b601fb1453084e18a3432ea0240d7af8decb
F ext/misc/closure.c 636024302cde41b2bf0c542f81c40c624cfb7012 F ext/misc/closure.c 636024302cde41b2bf0c542f81c40c624cfb7012
F ext/misc/compress.c 76e45655f4046e756064ab10c62e18f2eb846b9f F ext/misc/compress.c 76e45655f4046e756064ab10c62e18f2eb846b9f
F ext/misc/eval.c f971962e92ebb8b0a4e6b62949463ee454d88fa2 F ext/misc/eval.c f971962e92ebb8b0a4e6b62949463ee454d88fa2
@ -238,15 +238,15 @@ F src/sqliteInt.h eaf210295b551d4e40e622aec1b2261c0b28f844
F src/sqliteLimit.h 164b0e6749d31e0daa1a4589a169d31c0dec7b3d F src/sqliteLimit.h 164b0e6749d31e0daa1a4589a169d31c0dec7b3d
F src/status.c 81712116e826b0089bb221b018929536b2b5406f F src/status.c 81712116e826b0089bb221b018929536b2b5406f
F src/table.c e7a09215315a978057fb42c640f890160dbcc45e F src/table.c e7a09215315a978057fb42c640f890160dbcc45e
F src/tclsqlite.c 0bbb44543175ef2033d39780a233f98bf354eff9 F src/tclsqlite.c b8014393a96a9781bb635c8b1f52fc9b77a2bfcf
F src/test1.c 093d8b5b54b829dcfebae3181d4406edcc935d90 F src/test1.c 00a74fbc6604e1bcd240726a9ff8d0cc123374e7
F src/test2.c 577961fe48961b2f2e5c8b56ee50c3f459d3359d F src/test2.c 577961fe48961b2f2e5c8b56ee50c3f459d3359d
F src/test3.c 1c0e5d6f080b8e33c1ce8b3078e7013fdbcd560c F src/test3.c 64d2afdd68feac1bb5e2ffb8226c8c639f798622
F src/test4.c 9b32d22f5f150abe23c1830e2057c4037c45b3df F src/test4.c d168f83cc78d02e8d35567bb5630e40dcd85ac1e
F src/test5.c 5a34feec76d9b3a86aab30fd4f6cc9c48cbab4c1 F src/test5.c 5a34feec76d9b3a86aab30fd4f6cc9c48cbab4c1
F src/test6.c 41cacf3b0dd180823919bf9e1fbab287c9266723 F src/test6.c 41cacf3b0dd180823919bf9e1fbab287c9266723
F src/test7.c 72b732baa5642f795655ba1126ea032af46ecfd2 F src/test7.c 9c89a4f1ed6bb13af0ed805b8d782bd83fcd57e3
F src/test8.c df8dd4c99c1dd2225cb2a6f334299cddc5dcf1f1 F src/test8.c 610e3d523018ca63b08081795e76794a2121ec38
F src/test9.c bea1e8cf52aa93695487badedd6e1886c321ea60 F src/test9.c bea1e8cf52aa93695487badedd6e1886c321ea60
F src/test_async.c 21e11293a2f72080eda70e1124e9102044531cd8 F src/test_async.c 21e11293a2f72080eda70e1124e9102044531cd8
F src/test_autoext.c dea8a01a7153b9adc97bd26161e4226329546e12 F src/test_autoext.c dea8a01a7153b9adc97bd26161e4226329546e12
@ -276,13 +276,13 @@ F src/test_quota.h 2a8ad1952d1d2ca9af0ce0465e56e6c023b5e15d
F src/test_rtree.c fdd8d29ca5165c7857987a2ba263fac5c69e231f F src/test_rtree.c fdd8d29ca5165c7857987a2ba263fac5c69e231f
F src/test_schema.c 2bdba21b82f601da69793e1f1d11bf481a79b091 F src/test_schema.c 2bdba21b82f601da69793e1f1d11bf481a79b091
F src/test_server.c a2615049954cbb9cfb4a62e18e2f0616e4dc38fe F src/test_server.c a2615049954cbb9cfb4a62e18e2f0616e4dc38fe
F src/test_sqllog.c c1c1bbedbcaf82b93d83e4f9dd990e62476a680e F src/test_sqllog.c b690c12933f50ff46491e0d56a251f84ae16e914
F src/test_stat.c 9898687a6c2beca733b0dd6fe19163d987826d31 F src/test_stat.c 9898687a6c2beca733b0dd6fe19163d987826d31
F src/test_superlock.c 2b97936ca127d13962c3605dbc9a4ef269c424cd F src/test_superlock.c 2b97936ca127d13962c3605dbc9a4ef269c424cd
F src/test_syscall.c 2e21ca7f7dc54a028f1967b63f1e76155c356f9b F src/test_syscall.c 2e21ca7f7dc54a028f1967b63f1e76155c356f9b
F src/test_tclvar.c f4dc67d5f780707210d6bb0eb6016a431c04c7fa F src/test_tclvar.c f4dc67d5f780707210d6bb0eb6016a431c04c7fa
F src/test_thread.c 1e133a40b50e9c035b00174035b846e7eef481cb F src/test_thread.c af391ec03d23486dffbcc250b7e58e073f172af9
F src/test_vfs.c 8ee7be45fe773a150b4015ef957da960179ee43a F src/test_vfs.c 5a14c63da9579ba148138c1fb233100f2eb58ebb
F src/test_vfstrace.c bab9594adc976cbe696ff3970728830b4c5ed698 F src/test_vfstrace.c bab9594adc976cbe696ff3970728830b4c5ed698
F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9 F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
F src/threads.c 2fb3ea4d70d5acf68b539c2489b4adace61cc01b F src/threads.c 2fb3ea4d70d5acf68b539c2489b4adace61cc01b
@ -1236,7 +1236,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
P 80541e8b94b713e8f9e588ae047ffc5ae804ef1c P 7096e6c06d9a3e48d3f0d134f5f3275dde796be2
R 8c7ae3a28cebe6c4cd8f1efeb860b8e0 R 7d263eb98fc5c91928b9a60626248b0a
U drh U drh
Z d712af0bd91c24c0e42eda8fb9513bd5 Z 962c42be5c17a76b63845109393eb3c7

View File

@ -1 +1 @@
7096e6c06d9a3e48d3f0d134f5f3275dde796be2 10321910990195878c0af1e94b34ae0cdc0cb31b

View File

@ -661,9 +661,9 @@ static int DbWalHandler(
#if defined(SQLITE_TEST) && defined(SQLITE_ENABLE_UNLOCK_NOTIFY) #if defined(SQLITE_TEST) && defined(SQLITE_ENABLE_UNLOCK_NOTIFY)
static void setTestUnlockNotifyVars(Tcl_Interp *interp, int iArg, int nArg){ static void setTestUnlockNotifyVars(Tcl_Interp *interp, int iArg, int nArg){
char zBuf[64]; char zBuf[64];
sprintf(zBuf, "%d", iArg); sqlite3_snprintf(sizeof(zBuf), zBuf, "%d", iArg);
Tcl_SetVar(interp, "sqlite_unlock_notify_arg", zBuf, TCL_GLOBAL_ONLY); Tcl_SetVar(interp, "sqlite_unlock_notify_arg", zBuf, TCL_GLOBAL_ONLY);
sprintf(zBuf, "%d", nArg); sqlite3_snprintf(sizeof(zBuf), zBuf, "%d", nArg);
Tcl_SetVar(interp, "sqlite_unlock_notify_argcount", zBuf, TCL_GLOBAL_ONLY); Tcl_SetVar(interp, "sqlite_unlock_notify_argcount", zBuf, TCL_GLOBAL_ONLY);
} }
#else #else
@ -3429,7 +3429,7 @@ static void MD5DigestToBase10x8(unsigned char digest[16], char zDigest[50]){
for(i=j=0; i<16; i+=2){ for(i=j=0; i<16; i+=2){
x = digest[i]*256 + digest[i+1]; x = digest[i]*256 + digest[i+1];
if( i>0 ) zDigest[j++] = '-'; if( i>0 ) zDigest[j++] = '-';
sprintf(&zDigest[j], "%05u", x); sqlite3_snprintf(16-j, &zDigest[j], "%05u", x);
j += 5; j += 5;
} }
zDigest[j] = 0; zDigest[j] = 0;

View File

@ -94,10 +94,7 @@ static int get_sqlite_pointer(
return TCL_ERROR; return TCL_ERROR;
} }
p = (struct SqliteDb*)cmdInfo.objClientData; p = (struct SqliteDb*)cmdInfo.objClientData;
sprintf(zBuf, "%p", p->db); sqlite3_snprintf(sizeof(zBuf), zBuf, "%p", p->db);
if( strncmp(zBuf,"0x",2) ){
sprintf(zBuf, "0x%p", p->db);
}
Tcl_AppendResult(interp, zBuf, 0); Tcl_AppendResult(interp, zBuf, 0);
return TCL_OK; return TCL_OK;
} }
@ -145,7 +142,8 @@ int sqlite3TestErrCode(Tcl_Interp *interp, sqlite3 *db, int rc){
&& sqlite3_errcode(db)!=rc ){ && sqlite3_errcode(db)!=rc ){
char zBuf[200]; char zBuf[200];
int r2 = sqlite3_errcode(db); int r2 = sqlite3_errcode(db);
sprintf(zBuf, "error code %s (%d) does not match sqlite3_errcode %s (%d)", sqlite3_snprintf(sizeof(zBuf), zBuf,
"error code %s (%d) does not match sqlite3_errcode %s (%d)",
t1ErrorName(rc), rc, t1ErrorName(r2), r2); t1ErrorName(rc), rc, t1ErrorName(r2), r2);
Tcl_ResetResult(interp); Tcl_ResetResult(interp);
Tcl_AppendResult(interp, zBuf, 0); Tcl_AppendResult(interp, zBuf, 0);
@ -310,7 +308,7 @@ static int test_exec_printf(
zSql = sqlite3_mprintf(argv[2], argv[3]); zSql = sqlite3_mprintf(argv[2], argv[3]);
rc = sqlite3_exec(db, zSql, exec_printf_cb, &str, &zErr); rc = sqlite3_exec(db, zSql, exec_printf_cb, &str, &zErr);
sqlite3_free(zSql); sqlite3_free(zSql);
sprintf(zBuf, "%d", rc); sqlite3_snprintf(sizeof(zBuf), zBuf, "%d", rc);
Tcl_AppendElement(interp, zBuf); Tcl_AppendElement(interp, zBuf);
Tcl_AppendElement(interp, rc==SQLITE_OK ? Tcl_DStringValue(&str) : zErr); Tcl_AppendElement(interp, rc==SQLITE_OK ? Tcl_DStringValue(&str) : zErr);
Tcl_DStringFree(&str); Tcl_DStringFree(&str);
@ -357,7 +355,7 @@ static int test_exec_hex(
zSql[i] = 0; zSql[i] = 0;
Tcl_DStringInit(&str); Tcl_DStringInit(&str);
rc = sqlite3_exec(db, zSql, exec_printf_cb, &str, &zErr); rc = sqlite3_exec(db, zSql, exec_printf_cb, &str, &zErr);
sprintf(zBuf, "%d", rc); sqlite3_snprintf(sizeof(zBuf), zBuf, "%d", rc);
Tcl_AppendElement(interp, zBuf); Tcl_AppendElement(interp, zBuf);
Tcl_AppendElement(interp, rc==SQLITE_OK ? Tcl_DStringValue(&str) : zErr); Tcl_AppendElement(interp, rc==SQLITE_OK ? Tcl_DStringValue(&str) : zErr);
Tcl_DStringFree(&str); Tcl_DStringFree(&str);
@ -442,7 +440,7 @@ static int test_exec(
zSql[j] = 0; zSql[j] = 0;
rc = sqlite3_exec(db, zSql, exec_printf_cb, &str, &zErr); rc = sqlite3_exec(db, zSql, exec_printf_cb, &str, &zErr);
sqlite3_free(zSql); sqlite3_free(zSql);
sprintf(zBuf, "%d", rc); sqlite3_snprintf(sizeof(zBuf), zBuf, "%d", rc);
Tcl_AppendElement(interp, zBuf); Tcl_AppendElement(interp, zBuf);
Tcl_AppendElement(interp, rc==SQLITE_OK ? Tcl_DStringValue(&str) : zErr); Tcl_AppendElement(interp, rc==SQLITE_OK ? Tcl_DStringValue(&str) : zErr);
Tcl_DStringFree(&str); Tcl_DStringFree(&str);
@ -591,13 +589,13 @@ static int test_get_table_printf(
resCount = (nRow+1)*nCol; resCount = (nRow+1)*nCol;
} }
sqlite3_free(zSql); sqlite3_free(zSql);
sprintf(zBuf, "%d", rc); sqlite3_snprintf(sizeof(zBuf), zBuf, "%d", rc);
Tcl_AppendElement(interp, zBuf); Tcl_AppendElement(interp, zBuf);
if( rc==SQLITE_OK ){ if( rc==SQLITE_OK ){
if( argc==4 ){ if( argc==4 ){
sprintf(zBuf, "%d", nRow); sqlite3_snprintf(sizeof(zBuf), zBuf, "%d", nRow);
Tcl_AppendElement(interp, zBuf); Tcl_AppendElement(interp, zBuf);
sprintf(zBuf, "%d", nCol); sqlite3_snprintf(sizeof(zBuf), zBuf, "%d", nCol);
Tcl_AppendElement(interp, zBuf); Tcl_AppendElement(interp, zBuf);
} }
for(i=0; i<resCount; i++){ for(i=0; i<resCount; i++){
@ -634,7 +632,7 @@ static int test_last_rowid(
return TCL_ERROR; return TCL_ERROR;
} }
if( getDbPointer(interp, argv[1], &db) ) return TCL_ERROR; if( getDbPointer(interp, argv[1], &db) ) return TCL_ERROR;
sprintf(zBuf, "%lld", sqlite3_last_insert_rowid(db)); sqlite3_snprintf(sizeof(zBuf), zBuf, "%lld", sqlite3_last_insert_rowid(db));
Tcl_AppendResult(interp, zBuf, 0); Tcl_AppendResult(interp, zBuf, 0);
return SQLITE_OK; return SQLITE_OK;
} }
@ -774,7 +772,7 @@ static void hex8Func(sqlite3_context *p, int argc, sqlite3_value **argv){
char zBuf[200]; char zBuf[200];
z = sqlite3_value_text(argv[0]); z = sqlite3_value_text(argv[0]);
for(i=0; i<sizeof(zBuf)/2 - 2 && z[i]; i++){ for(i=0; i<sizeof(zBuf)/2 - 2 && z[i]; i++){
sprintf(&zBuf[i*2], "%02x", z[i]&0xff); sqlite3_snprintf(sizeof(zBuf)-i*2, &zBuf[i*2], "%02x", z[i]);
} }
zBuf[i*2] = 0; zBuf[i*2] = 0;
sqlite3_result_text(p, (char*)zBuf, -1, SQLITE_TRANSIENT); sqlite3_result_text(p, (char*)zBuf, -1, SQLITE_TRANSIENT);
@ -786,7 +784,7 @@ static void hex16Func(sqlite3_context *p, int argc, sqlite3_value **argv){
char zBuf[400]; char zBuf[400];
z = sqlite3_value_text16(argv[0]); z = sqlite3_value_text16(argv[0]);
for(i=0; i<sizeof(zBuf)/4 - 4 && z[i]; i++){ for(i=0; i<sizeof(zBuf)/4 - 4 && z[i]; i++){
sprintf(&zBuf[i*4], "%04x", z[i]&0xff); sqlite3_snprintf(sizeof(zBuf)-i*4, &zBuf[i*4],"%04x", z[i]&0xff);
} }
zBuf[i*4] = 0; zBuf[i*4] = 0;
sqlite3_result_text(p, (char*)zBuf, -1, SQLITE_TRANSIENT); sqlite3_result_text(p, (char*)zBuf, -1, SQLITE_TRANSIENT);
@ -2497,7 +2495,7 @@ static int test_bind(
if( sqlite3TestErrCode(interp, StmtToDb(pStmt), rc) ) return TCL_ERROR; if( sqlite3TestErrCode(interp, StmtToDb(pStmt), rc) ) return TCL_ERROR;
if( rc ){ if( rc ){
char zBuf[50]; char zBuf[50];
sprintf(zBuf, "(%d) ", rc); sqlite3_snprintf(sizeof(zBuf), zBuf, "(%d) ", rc);
Tcl_AppendResult(interp, zBuf, sqlite3ErrStr(rc), 0); Tcl_AppendResult(interp, zBuf, sqlite3ErrStr(rc), 0);
return TCL_ERROR; return TCL_ERROR;
} }
@ -3611,7 +3609,7 @@ static int test_prepare(
} }
if( rc!=SQLITE_OK ){ if( rc!=SQLITE_OK ){
assert( pStmt==0 ); assert( pStmt==0 );
sprintf(zBuf, "(%d) ", rc); sqlite3_snprintf(sizeof(zBuf), zBuf, "(%d) ", rc);
Tcl_AppendResult(interp, zBuf, sqlite3_errmsg(db), 0); Tcl_AppendResult(interp, zBuf, sqlite3_errmsg(db), 0);
return TCL_ERROR; return TCL_ERROR;
} }
@ -3681,7 +3679,7 @@ static int test_prepare_v2(
} }
if( rc!=SQLITE_OK ){ if( rc!=SQLITE_OK ){
assert( pStmt==0 ); assert( pStmt==0 );
sprintf(zBuf, "(%d) ", rc); sqlite3_snprintf(sizeof(zBuf), zBuf, "(%d) ", rc);
Tcl_AppendResult(interp, zBuf, sqlite3_errmsg(db), 0); Tcl_AppendResult(interp, zBuf, sqlite3_errmsg(db), 0);
return TCL_ERROR; return TCL_ERROR;
} }
@ -3722,7 +3720,7 @@ static int test_prepare_tkt3134(
if( sqlite3TestErrCode(interp, db, rc) ) return TCL_ERROR; if( sqlite3TestErrCode(interp, db, rc) ) return TCL_ERROR;
if( rc!=SQLITE_OK ){ if( rc!=SQLITE_OK ){
assert( pStmt==0 ); assert( pStmt==0 );
sprintf(zBuf, "(%d) ", rc); sqlite3_snprintf(sizeof(zBuf), zBuf, "(%d) ", rc);
Tcl_AppendResult(interp, zBuf, sqlite3_errmsg(db), 0); Tcl_AppendResult(interp, zBuf, sqlite3_errmsg(db), 0);
return TCL_ERROR; return TCL_ERROR;
} }
@ -4537,7 +4535,7 @@ static int get_autocommit(
return TCL_ERROR; return TCL_ERROR;
} }
if( getDbPointer(interp, argv[1], &db) ) return TCL_ERROR; if( getDbPointer(interp, argv[1], &db) ) return TCL_ERROR;
sprintf(zBuf, "%d", sqlite3_get_autocommit(db)); sqlite3_snprintf(sizeof(zBuf), zBuf, "%d", sqlite3_get_autocommit(db));
Tcl_AppendResult(interp, zBuf, 0); Tcl_AppendResult(interp, zBuf, 0);
return TCL_OK; return TCL_OK;
} }
@ -5173,7 +5171,7 @@ static int file_control_lockproxy_test(
Tcl_AppendResult(interp, "PWD too big", (void*)0); Tcl_AppendResult(interp, "PWD too big", (void*)0);
return TCL_ERROR; return TCL_ERROR;
} }
sprintf(proxyPath, "%s/test.proxy", zPwd); sqlite3_snprintf(sizeof(proxyPath), proxyPath, "%s/test.proxy", zPwd);
rc = sqlite3_file_control(db, NULL, SQLITE_SET_LOCKPROXYFILE, proxyPath); rc = sqlite3_file_control(db, NULL, SQLITE_SET_LOCKPROXYFILE, proxyPath);
if( rc ){ if( rc ){
Tcl_SetObjResult(interp, Tcl_NewIntObj(rc)); Tcl_SetObjResult(interp, Tcl_NewIntObj(rc));
@ -5978,7 +5976,8 @@ static int test_getrusage(
memset(&r, 0, sizeof(r)); memset(&r, 0, sizeof(r));
getrusage(RUSAGE_SELF, &r); getrusage(RUSAGE_SELF, &r);
sprintf(buf, "ru_utime=%d.%06d ru_stime=%d.%06d ru_minflt=%d ru_majflt=%d", sqlite3_snprintf(sizeof(buf), buf,
"ru_utime=%d.%06d ru_stime=%d.%06d ru_minflt=%d ru_majflt=%d",
(int)r.ru_utime.tv_sec, (int)r.ru_utime.tv_usec, (int)r.ru_utime.tv_sec, (int)r.ru_utime.tv_usec,
(int)r.ru_stime.tv_sec, (int)r.ru_stime.tv_usec, (int)r.ru_stime.tv_sec, (int)r.ru_stime.tv_usec,
(int)r.ru_minflt, (int)r.ru_majflt (int)r.ru_minflt, (int)r.ru_majflt

View File

@ -445,18 +445,21 @@ static int btree_varint_test(
char zErr[200]; char zErr[200];
n1 = putVarint(zBuf, in); n1 = putVarint(zBuf, in);
if( n1>9 || n1<1 ){ if( n1>9 || n1<1 ){
sprintf(zErr, "putVarint returned %d - should be between 1 and 9", n1); sqlite3_snprintf(sizeof(zErr), zErr,
"putVarint returned %d - should be between 1 and 9", n1);
Tcl_AppendResult(interp, zErr, 0); Tcl_AppendResult(interp, zErr, 0);
return TCL_ERROR; return TCL_ERROR;
} }
n2 = getVarint(zBuf, &out); n2 = getVarint(zBuf, &out);
if( n1!=n2 ){ if( n1!=n2 ){
sprintf(zErr, "putVarint returned %d and getVarint returned %d", n1, n2); sqlite3_snprintf(sizeof(zErr), zErr,
"putVarint returned %d and getVarint returned %d", n1, n2);
Tcl_AppendResult(interp, zErr, 0); Tcl_AppendResult(interp, zErr, 0);
return TCL_ERROR; return TCL_ERROR;
} }
if( in!=out ){ if( in!=out ){
sprintf(zErr, "Wrote 0x%016llx and got back 0x%016llx", in, out); sqlite3_snprintf(sizeof(zErr), zErr,
"Wrote 0x%016llx and got back 0x%016llx", in, out);
Tcl_AppendResult(interp, zErr, 0); Tcl_AppendResult(interp, zErr, 0);
return TCL_ERROR; return TCL_ERROR;
} }
@ -465,13 +468,15 @@ static int btree_varint_test(
n2 = getVarint32(zBuf, out32); n2 = getVarint32(zBuf, out32);
out = out32; out = out32;
if( n1!=n2 ){ if( n1!=n2 ){
sprintf(zErr, "putVarint returned %d and GetVarint32 returned %d", sqlite3_snprintf(sizeof(zErr), zErr,
"putVarint returned %d and GetVarint32 returned %d",
n1, n2); n1, n2);
Tcl_AppendResult(interp, zErr, 0); Tcl_AppendResult(interp, zErr, 0);
return TCL_ERROR; return TCL_ERROR;
} }
if( in!=out ){ if( in!=out ){
sprintf(zErr, "Wrote 0x%016llx and got back 0x%016llx from GetVarint32", sqlite3_snprintf(sizeof(zErr), zErr,
"Wrote 0x%016llx and got back 0x%016llx from GetVarint32",
in, out); in, out);
Tcl_AppendResult(interp, zErr, 0); Tcl_AppendResult(interp, zErr, 0);
return TCL_ERROR; return TCL_ERROR;

View File

@ -270,7 +270,7 @@ static int tcl_thread_argc(
return TCL_ERROR; return TCL_ERROR;
} }
thread_wait(&threadset[i]); thread_wait(&threadset[i]);
sprintf(zBuf, "%d", threadset[i].argc); sqlite3_snprintf(sizeof(zBuf), zBuf, "%d", threadset[i].argc);
Tcl_AppendResult(interp, zBuf, 0); Tcl_AppendResult(interp, zBuf, 0);
return TCL_OK; return TCL_OK;
} }

View File

@ -315,7 +315,7 @@ static int tcl_client_argc(
return TCL_ERROR; return TCL_ERROR;
} }
client_wait(&threadset[i]); client_wait(&threadset[i]);
sprintf(zBuf, "%d", threadset[i].argc); sqlite3_snprintf(sizeof(zBuf), zBuf, "%d", threadset[i].argc);
Tcl_AppendResult(interp, zBuf, 0); Tcl_AppendResult(interp, zBuf, 0);
return TCL_OK; return TCL_OK;
} }

View File

@ -206,8 +206,8 @@ static int getColumnNames(
zSpace = (char *)(&aCol[nCol]); zSpace = (char *)(&aCol[nCol]);
for(ii=0; ii<nCol; ii++){ for(ii=0; ii<nCol; ii++){
aCol[ii] = zSpace; aCol[ii] = zSpace;
zSpace += sprintf(zSpace, "%s", sqlite3_column_name(pStmt, ii)); sqlite3_snprintf(nBytes, zSpace, "%s", sqlite3_column_name(pStmt,ii));
zSpace++; zSpace += (int)strlen(zSpace) + 1;
} }
assert( (zSpace-nBytes)==(char *)aCol ); assert( (zSpace-nBytes)==(char *)aCol );
} }

View File

@ -365,8 +365,10 @@ static void sqllogOpenlog(struct SLConn *p){
FILE *fd; FILE *fd;
char *zVar = getenv(ENVIRONMENT_VARIABLE1_NAME); char *zVar = getenv(ENVIRONMENT_VARIABLE1_NAME);
if( zVar==0 || strlen(zVar)+10>=(sizeof(sqllogglobal.zPrefix)) ) return; if( zVar==0 || strlen(zVar)+10>=(sizeof(sqllogglobal.zPrefix)) ) return;
sprintf(sqllogglobal.zPrefix, "%s/sqllog_%d", zVar, getProcessId()); sqlite3_snprintf(sizeof(sqllogglobal.zPrefix), sqllogglobal.zPrefix,
sprintf(sqllogglobal.zIdx, "%s.idx", sqllogglobal.zPrefix); "%s/sqllog_%d", zVar, getProcessId());
sqlite3_snprintf(sizeof(sqllogglobal.zIdx), sqllogglobal.zIdx,
"%s.idx", sqllogglobal.zPrefix);
if( getenv(ENVIRONMENT_VARIABLE2_NAME) ){ if( getenv(ENVIRONMENT_VARIABLE2_NAME) ){
sqllogglobal.bReuse = atoi(getenv(ENVIRONMENT_VARIABLE2_NAME)); sqllogglobal.bReuse = atoi(getenv(ENVIRONMENT_VARIABLE2_NAME));
} }

View File

@ -608,7 +608,7 @@ static int blocking_prepare_v2_proc(
} }
if( rc!=SQLITE_OK ){ if( rc!=SQLITE_OK ){
assert( pStmt==0 ); assert( pStmt==0 );
sprintf(zBuf, "%s ", (char *)sqlite3ErrName(rc)); sqlite3_snprintf(sizeof(zBuf), zBuf, "%s ", (char *)sqlite3ErrName(rc));
Tcl_AppendResult(interp, zBuf, sqlite3_errmsg(db), 0); Tcl_AppendResult(interp, zBuf, sqlite3_errmsg(db), 0);
return TCL_ERROR; return TCL_ERROR;
} }

View File

@ -823,11 +823,12 @@ static int tvfsShmOpen(sqlite3_file *pFile){
if( 0==strcmp(pFd->zFilename, pBuffer->zFile) ) break; if( 0==strcmp(pFd->zFilename, pBuffer->zFile) ) break;
} }
if( !pBuffer ){ if( !pBuffer ){
int nByte = sizeof(TestvfsBuffer) + (int)strlen(pFd->zFilename) + 1; int szName = (int)strlen(pFd->zFilename);
int nByte = sizeof(TestvfsBuffer) + szName + 1;
pBuffer = (TestvfsBuffer *)ckalloc(nByte); pBuffer = (TestvfsBuffer *)ckalloc(nByte);
memset(pBuffer, 0, nByte); memset(pBuffer, 0, nByte);
pBuffer->zFile = (char *)&pBuffer[1]; pBuffer->zFile = (char *)&pBuffer[1];
strcpy(pBuffer->zFile, pFd->zFilename); memcpy(pBuffer->zFile, pFd->zFilename, szName+1);
pBuffer->pNext = p->pBuffer; pBuffer->pNext = p->pBuffer;
p->pBuffer = pBuffer; p->pBuffer = pBuffer;
} }