From: drh Date: Mon, 13 Mar 2006 12:54:09 +0000 (+0000) Subject: Additional changes due to Coverity scans. (CVS 3130) X-Git-Tag: version-3.6.10~3037 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8aa34ae0b16a5977ffce18f28101550a6d5c700e;p=thirdparty%2Fsqlite.git Additional changes due to Coverity scans. (CVS 3130) FossilOrigin-Name: a69f697d50124f2c0c654d56390ae83a4ac5e9e8 --- diff --git a/manifest b/manifest index 01785ee4a9..b048cb3dd2 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\san\sassert()\sto\sdemonstrate\sthat\sKlockworks\sis\swrong\sabout\san\saleged\sbug.\s(CVS\s3129) -D 2006-03-11T12:04:18 +C Additional\schanges\sdue\sto\sCoverity\sscans.\s(CVS\s3130) +D 2006-03-13T12:54:10 F Makefile.in 5d8dff443383918b700e495de42ec65bc1c8865b F Makefile.linux-gcc 74ba0eadf88748a9ce3fd03d2a3ede2e6715baec F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028 @@ -36,7 +36,7 @@ F src/attach.c d73a3505de3fb9e373d0a158978116c4212031d0 F src/auth.c 9ae84d2d94eb96195e04515715e08e85963e96c2 F src/btree.c 861f6a805b55dbf37a35a0561e0cf5e99ed073ae F src/btree.h 40055cfc09defd1146bc5b922399c035f969e56d -F src/build.c 98b458e30906461777ff1e003eef2db14c37314f +F src/build.c 4bd8471e4f20f5623c15fd71d2aaee0f66e394d8 F src/callback.c 1bf497306c32229114f826707054df7ebe10abf2 F src/complete.c 7d1a44be8f37de125fcafd3d3a018690b3799675 F src/date.c cd2bd5d1ebc6fa12d6312f69789ae5b0a2766f2e @@ -61,7 +61,7 @@ F src/os_win.c 8ced9ac82670bbf77492961a2f7ff80a87f1404f F src/os_win.h 41a946bea10f61c158ce8645e7646b29d44f122b F src/pager.c 7b1975e2fa56fc3c9859bec321f57cd3d75ec36b F src/pager.h 43f32f3847421f7502cfbb66f4eb2302b8033818 -F src/parse.y c2daaa24fa2c8e256af740f29d3d61ac552fbd49 +F src/parse.y ee1887ce0e6eea15cc728913ad3462898f88e9b0 F src/pragma.c 27d5e395c5d950931c7ac4fe610e7c2993e2fa55 F src/prepare.c fe3f5b7524575d378e82d3d7d4f1371884087c4e F src/printf.c 341e488b549b1a41f83b05a69ce1d7a8258b624c @@ -93,7 +93,7 @@ F src/vdbe.c 5fb9d3e64ed18f82e71bd2ff94c3e5f07384c7d4 F src/vdbe.h 80ba1c391ec28180dd07a630577f50b22c2062da F src/vdbeInt.h 2109be6b58e3bfcd8e5b56d3b212b1a105a61051 F src/vdbeapi.c 7dc662e7c905ce666bb506dced932e0307115cbf -F src/vdbeaux.c e7f448c58de1115cecf1d1e0fbb707778b630e00 +F src/vdbeaux.c db9dc285e1efacaece7ee6f9c2f5085e3700942e F src/vdbefifo.c 9efb94c8c3f4c979ebd0028219483f88e57584f5 F src/vdbemem.c 5f0afe3b92bb2c037f8d5d697f7c151fa50783a3 F src/where.c 39af47e7f48be8df8a14a5965a38326bccf8eeed @@ -355,7 +355,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513 -P 36830fafa405c9eae4795045efc6843394c67555 -R 49e02133024179ffb0fdf1048751534a +P 0910022be3ec8ce540e0e6adce2eed7a7cd28fd3 +R 3b0768980a7df91b35d6774b73d561d5 U drh -Z 526a9d7b9b1e35a7ab2038e1353a52ca +Z 43c825bec0d49c278c25514cf14fe00a diff --git a/manifest.uuid b/manifest.uuid index 962b41c9cb..4914685cd3 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -0910022be3ec8ce540e0e6adce2eed7a7cd28fd3 \ No newline at end of file +a69f697d50124f2c0c654d56390ae83a4ac5e9e8 \ No newline at end of file diff --git a/src/build.c b/src/build.c index 23d36de605..6f02af8b71 100644 --- a/src/build.c +++ b/src/build.c @@ -22,7 +22,7 @@ ** COMMIT ** ROLLBACK ** -** $Id: build.c,v 1.390 2006/03/06 20:55:46 drh Exp $ +** $Id: build.c,v 1.391 2006/03/13 12:54:10 drh Exp $ */ #include "sqliteInt.h" #include @@ -3016,7 +3016,7 @@ void sqlite3CodeVerifySchema(Parse *pParse, int iDb){ if( iDb>=0 ){ assert( iDbnDb ); assert( db->aDb[iDb].pBt!=0 || iDb==1 ); - assert( iDb<32 ); + assert( iDbcookieMask & mask)==0 ){ pParse->cookieMask |= mask; diff --git a/src/parse.y b/src/parse.y index c2c08e9bf6..b45d1986ce 100644 --- a/src/parse.y +++ b/src/parse.y @@ -14,7 +14,7 @@ ** the parser. Lemon will also generate a header file containing ** numeric codes for all of the tokens. ** -** @(#) $Id: parse.y,v 1.198 2006/02/27 22:22:28 drh Exp $ +** @(#) $Id: parse.y,v 1.199 2006/03/13 12:54:10 drh Exp $ */ // All token codes are small integers with #defines that begin with "TK_" @@ -661,7 +661,7 @@ expr(A) ::= CAST(X) LP expr(E) AS typetoken(T) RP(Y). { expr(A) ::= ID(X) LP distinct(D) exprlist(Y) RP(E). { A = sqlite3ExprFunction(Y, &X); sqlite3ExprSpan(A,&X,&E); - if( D ){ + if( D && A ){ A->flags |= EP_Distinct; } } @@ -692,7 +692,8 @@ likeop(A) ::= NOT LIKE_KW(X). {A.eOperator = X; A.not = 1;} escape(X) ::= ESCAPE expr(A). [ESCAPE] {X = A;} escape(X) ::= . [ESCAPE] {X = 0;} expr(A) ::= expr(X) likeop(OP) expr(Y) escape(E). [LIKE_KW] { - ExprList *pList = sqlite3ExprListAppend(0, Y, 0); + ExprList *pList; + pList = sqlite3ExprListAppend(0, Y, 0); pList = sqlite3ExprListAppend(pList, X, 0); if( E ){ pList = sqlite3ExprListAppend(pList, E, 0); @@ -985,13 +986,17 @@ trigger_cmd(A) ::= select(X). {A = sqlite3TriggerSelectStep(X); } // The special RAISE expression that may occur in trigger programs expr(A) ::= RAISE(X) LP IGNORE RP(Y). { A = sqlite3Expr(TK_RAISE, 0, 0, 0); - A->iColumn = OE_Ignore; - sqlite3ExprSpan(A, &X, &Y); + if( A ){ + A->iColumn = OE_Ignore; + sqlite3ExprSpan(A, &X, &Y); + } } expr(A) ::= RAISE(X) LP raisetype(T) COMMA nm(Z) RP(Y). { A = sqlite3Expr(TK_RAISE, 0, 0, &Z); - A->iColumn = T; - sqlite3ExprSpan(A, &X, &Y); + if( A ) { + A->iColumn = T; + sqlite3ExprSpan(A, &X, &Y); + } } %endif // !SQLITE_OMIT_TRIGGER diff --git a/src/vdbeaux.c b/src/vdbeaux.c index 09777ffed7..1766c45273 100644 --- a/src/vdbeaux.c +++ b/src/vdbeaux.c @@ -340,7 +340,7 @@ int sqlite3VdbeAddOpList(Vdbe *p, int nOp, VdbeOpList const *aOp){ ** few minor changes to the program. */ void sqlite3VdbeChangeP1(Vdbe *p, int addr, int val){ - assert( p->magic==VDBE_MAGIC_INIT ); + assert( p==0 || p->magic==VDBE_MAGIC_INIT ); if( p && addr>=0 && p->nOp>addr && p->aOp ){ p->aOp[addr].p1 = val; } @@ -352,7 +352,7 @@ void sqlite3VdbeChangeP1(Vdbe *p, int addr, int val){ */ void sqlite3VdbeChangeP2(Vdbe *p, int addr, int val){ assert( val>=0 ); - assert( p->magic==VDBE_MAGIC_INIT ); + assert( p==0 || p->magic==VDBE_MAGIC_INIT ); if( p && addr>=0 && p->nOp>addr && p->aOp ){ p->aOp[addr].p2 = val; } @@ -420,7 +420,7 @@ static void freeP3(int p3type, void *p3){ */ void sqlite3VdbeChangeP3(Vdbe *p, int addr, const char *zP3, int n){ Op *pOp; - assert( p->magic==VDBE_MAGIC_INIT ); + assert( p==0 || p->magic==VDBE_MAGIC_INIT ); if( p==0 || p->aOp==0 || sqlite3MallocFailed() ){ if (n != P3_KEYINFO) { freeP3(n, (void*)*(char**)&zP3);