diff --git a/manifest b/manifest index 5acf1ef996..144ce30b5e 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\ssqlite_temp_directory\sto\sthe\swindows\sdriver.\s(CVS\s1905) -D 2004-08-28T01:12:57 +C Add\snew\sdefenses\sagainst\smisuse\sof\sthe\sC\sAPI.\s\sTicket\s#870.\s(CVS\s1906) +D 2004-08-28T14:49:47 F Makefile.in 4a5e570a9e2d35b09c31b3cf01b78cea764ade4b F Makefile.linux-gcc a9e5a0d309fa7c38e7c14d3ecf7690879d3a5457 F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd @@ -39,7 +39,7 @@ F src/hash.c a97721a55440b7bea31ffe471bb2f6b4123cddd5 F src/hash.h 1b0c445e1c89ff2aaad9b4605ba61375af001e84 F src/insert.c fc1ce65a0fe68f226143de9b43c3582164a92aff F src/legacy.c 2f3617c61bcdcd1d776154a9cfebf99facda8ad8 -F src/main.c 581ccf00909842d05c42ce02bb19b92859f447db +F src/main.c c00e3f9e8c4fa9bc0fdad43ce366958db73ac9c6 F src/md5.c 7ae1c39044b95de2f62e066f47bb1deb880a1070 F src/os.h d1780e0db95cad01f213d48da22ab490eb4fd345 F src/os_common.h cd7eb025fdab7dc91e0e97bf6310f1648205857f @@ -77,7 +77,7 @@ F src/vacuum.c 9978a5760c2c430bc5b5e66505a02dad76f25813 F src/vdbe.c ea662188cc489934a567d1eaa3fb6754d5b92b7d F src/vdbe.h e081c72cd0f7c19d49b1927460aeefcf0fbc85ac F src/vdbeInt.h 16322cbfccf0b05631fcf0df68b115c46584d6c9 -F src/vdbeapi.c e20e646a0ec4e74934bfcb82bd0fbb3c3c4a21f7 +F src/vdbeapi.c 854732720c2cfc6ff76b28eef6253ac84a5408bc F src/vdbeaux.c 022c484dba235d2dcbb1faca0f1943702f4232ed F src/vdbemem.c 68fefaf83adb48fe44135da01502c9327f6172b0 F src/where.c a84eee276cd072158224da6b5f30733df2d56027 @@ -243,7 +243,7 @@ F www/tclsqlite.tcl 560ecd6a916b320e59f2917317398f3d59b7cc25 F www/vdbe.tcl 59288db1ac5c0616296b26dce071c36cb611dfe9 F www/version3.tcl 092a01f5ef430d2c4acc0ae558d74c4bb89638a0 F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4 -P b3b9e58103dd6c65c55caf9a25bc1c257b37df88 -R af741a99488fdab1ea07d8dfec296d71 +P f5b0e5b0b2f17d179c23c7e4542dbbb452096056 +R 19adc0034f3d181b6cae6f1ebdba626d U drh -Z f2d1ace11f29f4f151b3075cb095a708 +Z 8b14a526a7800c9ee03abeba359d39e9 diff --git a/manifest.uuid b/manifest.uuid index df6f5f73dd..7e2b3ecb0d 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -f5b0e5b0b2f17d179c23c7e4542dbbb452096056 \ No newline at end of file +6ef1f662d71c75bdb7f61b2fff03f5b1b41e5586 \ No newline at end of file diff --git a/src/main.c b/src/main.c index 35b9c387d2..85ba6dc6bf 100644 --- a/src/main.c +++ b/src/main.c @@ -14,7 +14,7 @@ ** other files are for internal use by SQLite and should not be ** accessed by users of the library. ** -** $Id: main.c,v 1.253 2004/08/21 17:54:45 drh Exp $ +** $Id: main.c,v 1.254 2004/08/28 14:49:47 drh Exp $ */ #include "sqliteInt.h" #include "os.h" @@ -1240,7 +1240,13 @@ int sqlite3_open16( ** sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16(). */ int sqlite3_finalize(sqlite3_stmt *pStmt){ - return pStmt ? sqlite3VdbeFinalize((Vdbe*)pStmt) : SQLITE_OK; + int rc; + if( pStmt==0 ){ + rc = SQLITE_OK; + }else{ + rc = sqlite3VdbeFinalize((Vdbe*)pStmt); + } + return rc; } /* @@ -1252,8 +1258,13 @@ int sqlite3_finalize(sqlite3_stmt *pStmt){ ** sqlite3_errcode(), sqlite3_errmsg() and sqlite3_errmsg16(). */ int sqlite3_reset(sqlite3_stmt *pStmt){ - int rc = sqlite3VdbeReset((Vdbe*)pStmt); - sqlite3VdbeMakeReady((Vdbe*)pStmt, -1, 0, 0, 0); + int rc; + if( pStmt==0 ){ + rc = SQLITE_OK; + }else{ + rc = sqlite3VdbeReset((Vdbe*)pStmt); + sqlite3VdbeMakeReady((Vdbe*)pStmt, -1, 0, 0, 0); + } return rc; } diff --git a/src/vdbeapi.c b/src/vdbeapi.c index b955190aec..1909c142e7 100644 --- a/src/vdbeapi.c +++ b/src/vdbeapi.c @@ -138,7 +138,7 @@ int sqlite3_step(sqlite3_stmt *pStmt){ sqlite *db; int rc; - if( p->magic!=VDBE_MAGIC_RUN ){ + if( p==0 || p->magic!=VDBE_MAGIC_RUN ){ return SQLITE_MISUSE; } if( p->aborted ){ @@ -262,7 +262,7 @@ int sqlite3_aggregate_count(sqlite3_context *p){ */ int sqlite3_column_count(sqlite3_stmt *pStmt){ Vdbe *pVm = (Vdbe *)pStmt; - return pVm->nResColumn; + return pVm ? pVm->nResColumn : 0; } /* @@ -271,7 +271,7 @@ int sqlite3_column_count(sqlite3_stmt *pStmt){ */ int sqlite3_data_count(sqlite3_stmt *pStmt){ Vdbe *pVm = (Vdbe *)pStmt; - if( !pVm->resOnStack ) return 0; + if( pVm==0 || !pVm->resOnStack ) return 0; return pVm->nResColumn; } @@ -405,7 +405,7 @@ const void *sqlite3_column_decltype16(sqlite3_stmt *pStmt, int N){ */ static int vdbeUnbind(Vdbe *p, int i){ Mem *pVar; - if( p->magic!=VDBE_MAGIC_RUN || p->pc>=0 ){ + if( p==0 || p->magic!=VDBE_MAGIC_RUN || p->pc>=0 ){ sqlite3Error(p->db, SQLITE_MISUSE, 0); return SQLITE_MISUSE; }