From 4d06798e56aaaa1b61b2826acfff9a29829aa6fc Mon Sep 17 00:00:00 2001 From: drh Date: Tue, 28 Jan 2014 18:53:29 +0000 Subject: [PATCH 1/3] Fix a potential over-size and hence undefined shift operation. FossilOrigin-Name: 6379b0729521146bc4ec27a9924492c7dc1d8a31 --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/delete.c | 3 ++- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/manifest b/manifest index 55d11eedcb..d7f9b6bdb6 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Minor\sbugfix\sin\smain.c\sso\sthat\sthe\slibrary\sbuilds\swith\sSQLITE_OMIT_WSD\sdefined. -D 2014-01-28T17:49:13.545 +C Fix\sa\spotential\sover-size\sand\shence\sundefined\sshift\soperation. +D 2014-01-28T18:53:29.749 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 2ef13430cd359f7b361bb863504e227b25cc7f81 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -174,7 +174,7 @@ F src/callback.c 174e3c8656bc29f91d710ab61550d16eea34be98 F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac F src/ctime.c 77779efbe78dd678d84bfb4fc2e87b6b6ad8dccd F src/date.c 593c744b2623971e45affd0bde347631bdfa4625 -F src/delete.c 22e54756c08b194a29d51cd6552922028b3e21a9 +F src/delete.c d784e2ee2c6e90fbbd9dcf88a2030c9e12a9318d F src/expr.c 96f00a262308f3f97d2afd8519c7a284e25829f3 F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb F src/fkey.c 2ab0f5384b70594468ef3ac5c7ed8ca24bfd17d5 @@ -1152,7 +1152,7 @@ F tool/vdbe-compress.tcl 0cf56e9263a152b84da86e75a5c0cdcdb7a47891 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff -P 48d736c0ee1ac0879bd12d2f1901f208e87e538a -R 2cc45274993cd572752bb3138d773ec9 -U dan -Z efd313d0ce443bf7542f8c0ae313a99a +P 5e3b9ecc7b2b2e50952de819b99bafdb7b9ff59e +R 706dcce3a402caa9db92672703e679ae +U drh +Z e7afb21bdb8343de7138a61b1fa9482c diff --git a/manifest.uuid b/manifest.uuid index 5b9b68c635..7c8d73272d 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -5e3b9ecc7b2b2e50952de819b99bafdb7b9ff59e \ No newline at end of file +6379b0729521146bc4ec27a9924492c7dc1d8a31 \ No newline at end of file diff --git a/src/delete.c b/src/delete.c index ecf850cf8e..e98ad6d604 100644 --- a/src/delete.c +++ b/src/delete.c @@ -637,7 +637,8 @@ void sqlite3GenerateRowDelete( sqlite3VdbeAddOp2(v, OP_Copy, iPk, iOld); for(iCol=0; iColnCol; iCol++){ testcase( mask!=0xffffffff && iCol==31 ); - if( mask==0xffffffff || (mask & MASKBIT32(iCol))!=0 ){ + testcase( mask!=0xffffffff && iCol==32 ); + if( mask==0xffffffff || (iCol<=31 && (mask & MASKBIT32(iCol))!=0) ){ sqlite3ExprCodeGetColumnOfTable(v, pTab, iDataCur, iCol, iOld+iCol+1); } } From db718d8a3b7e336451afe73707644aae30c6aefe Mon Sep 17 00:00:00 2001 From: drh Date: Tue, 28 Jan 2014 20:36:22 +0000 Subject: [PATCH 2/3] Fix harmless compiler warnings in the showdb utility program. FossilOrigin-Name: 27c27daa3324b7c9323acfb972330367630bb64e --- manifest | 12 ++++++------ manifest.uuid | 2 +- tool/showdb.c | 11 +++++------ 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/manifest b/manifest index d7f9b6bdb6..0863208836 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\spotential\sover-size\sand\shence\sundefined\sshift\soperation. -D 2014-01-28T18:53:29.749 +C Fix\sharmless\scompiler\swarnings\sin\sthe\sshowdb\sutility\sprogram. +D 2014-01-28T20:36:22.236 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 2ef13430cd359f7b361bb863504e227b25cc7f81 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -1132,7 +1132,7 @@ F tool/opcodeDoc.awk b3a2a3d5d3075b8bd90b7afe24283efdd586659c F tool/pagesig.c ff0ca355fd3c2398e933da5e22439bbff89b803b F tool/restore_jrnl.tcl 6957a34f8f1f0f8285e07536225ec3b292a9024a F tool/rollback-test.c 9fc98427d1e23e84429d7e6d07d9094fbdec65a5 -F tool/showdb.c 525ecc443578647703051308ad50a93de6ba2c4b +F tool/showdb.c 1f3fe634d6f690b8d39ab1b9fd34583d468921e1 F tool/showjournal.c b62cecaab86a4053d944c276bb5232e4d17ece02 F tool/showwal.c 3f7f7da5ec0cba51b1449a75f700493377da57b5 F tool/soak1.tcl 8d407956e1a45b485a8e072470a3e629a27037fe @@ -1152,7 +1152,7 @@ F tool/vdbe-compress.tcl 0cf56e9263a152b84da86e75a5c0cdcdb7a47891 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff -P 5e3b9ecc7b2b2e50952de819b99bafdb7b9ff59e -R 706dcce3a402caa9db92672703e679ae +P 6379b0729521146bc4ec27a9924492c7dc1d8a31 +R d624107de1307ff82acc1c4254272e47 U drh -Z e7afb21bdb8343de7138a61b1fa9482c +Z ce78bc9f9aa25be3c31879ef495a76f2 diff --git a/manifest.uuid b/manifest.uuid index 7c8d73272d..4b5c72332f 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -6379b0729521146bc4ec27a9924492c7dc1d8a31 \ No newline at end of file +27c27daa3324b7c9323acfb972330367630bb64e \ No newline at end of file diff --git a/tool/showdb.c b/tool/showdb.c index 27424e0920..4d274a7aac 100644 --- a/tool/showdb.c +++ b/tool/showdb.c @@ -119,7 +119,7 @@ static unsigned char *print_byte_range( /* ** Print an entire page of content as hex */ -static print_page(int iPg){ +static void print_page(int iPg){ int iStart; unsigned char *aData; iStart = (iPg-1)*pagesize; @@ -131,7 +131,7 @@ static print_page(int iPg){ /* Print a line of decode output showing a 4-byte integer. */ -static print_decode_line( +static void print_decode_line( unsigned char *aData, /* Content being decoded */ int ofst, int nByte, /* Start and size of decode */ const char *zMsg /* Message to append */ @@ -428,7 +428,7 @@ static void decode_trunk_page( int detail, /* Show leaf pages if true */ int recursive /* Follow the trunk change if true */ ){ - int n, i, k; + int n, i; unsigned char *a; while( pgno>0 ){ a = getContent((pgno-1)*pagesize, pagesize); @@ -495,7 +495,6 @@ static void page_usage_cell( int cellno /* Index of the cell on the page */ ){ int i; - int nDesc = 0; int n = 0; i64 nPayload; i64 rowid; @@ -677,7 +676,7 @@ static void page_usage_report(const char *zDbName){ if( rc==SQLITE_OK ){ while( sqlite3_step(pStmt)==SQLITE_ROW ){ int pgno = sqlite3_column_int(pStmt, 2); - page_usage_btree(pgno, 0, 0, sqlite3_column_text(pStmt, 1)); + page_usage_btree(pgno, 0, 0, (const char*)sqlite3_column_text(pStmt,1)); } }else{ printf("ERROR: cannot query database: %s\n", sqlite3_errmsg(db)); @@ -835,7 +834,6 @@ int main(int argc, char **argv){ free(a); continue; }else if( zLeft && zLeft[0]=='t' ){ - unsigned char *a; int detail = 0; int recursive = 0; int i; @@ -861,4 +859,5 @@ int main(int argc, char **argv){ } } close(db); + return 0; } From ec2da854122bce8fadfa4480c14d0902dbf2eeff Mon Sep 17 00:00:00 2001 From: drh Date: Wed, 29 Jan 2014 01:46:12 +0000 Subject: [PATCH 3/3] Make sure that sqlite3SelectDup() initializes the nSelectRow of the duplicate Select object. FossilOrigin-Name: 5bb29b82109224a2ad02920658fabd8fb0f27b3f --- manifest | 12 ++++++------ manifest.uuid | 2 +- src/expr.c | 1 + 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/manifest b/manifest index 0863208836..1cd51063f2 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sharmless\scompiler\swarnings\sin\sthe\sshowdb\sutility\sprogram. -D 2014-01-28T20:36:22.236 +C Make\ssure\sthat\ssqlite3SelectDup()\sinitializes\sthe\snSelectRow\sof\sthe\nduplicate\sSelect\sobject. +D 2014-01-29T01:46:12.389 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 2ef13430cd359f7b361bb863504e227b25cc7f81 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -175,7 +175,7 @@ F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac F src/ctime.c 77779efbe78dd678d84bfb4fc2e87b6b6ad8dccd F src/date.c 593c744b2623971e45affd0bde347631bdfa4625 F src/delete.c d784e2ee2c6e90fbbd9dcf88a2030c9e12a9318d -F src/expr.c 96f00a262308f3f97d2afd8519c7a284e25829f3 +F src/expr.c e3e09af908b968305d4efeda8dc3499a087ee7d2 F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb F src/fkey.c 2ab0f5384b70594468ef3ac5c7ed8ca24bfd17d5 F src/func.c f4499b39d66b71825514334ce67b32ff14bd19f5 @@ -1152,7 +1152,7 @@ F tool/vdbe-compress.tcl 0cf56e9263a152b84da86e75a5c0cdcdb7a47891 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff -P 6379b0729521146bc4ec27a9924492c7dc1d8a31 -R d624107de1307ff82acc1c4254272e47 +P 27c27daa3324b7c9323acfb972330367630bb64e +R f049cadfe79d3cfbcc34d51b06338c39 U drh -Z ce78bc9f9aa25be3c31879ef495a76f2 +Z 40ce23bc9f3b9d3c5fa7bebae22e1b10 diff --git a/manifest.uuid b/manifest.uuid index 4b5c72332f..a9b235c6f0 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -27c27daa3324b7c9323acfb972330367630bb64e \ No newline at end of file +5bb29b82109224a2ad02920658fabd8fb0f27b3f \ No newline at end of file diff --git a/src/expr.c b/src/expr.c index a48a31f932..7323e5d4f7 100644 --- a/src/expr.c +++ b/src/expr.c @@ -1064,6 +1064,7 @@ Select *sqlite3SelectDup(sqlite3 *db, Select *p, int flags){ pNew->addrOpenEphm[0] = -1; pNew->addrOpenEphm[1] = -1; pNew->addrOpenEphm[2] = -1; + pNew->nSelectRow = p->nSelectRow; pNew->pWith = withDup(db, p->pWith); return pNew; }