From: drh Date: Tue, 24 Nov 2015 02:10:52 +0000 (+0000) Subject: Remove an incorrect ALWAYS() macro. Fix for ticket [e5c6268dd807fa8950] - X-Git-Tag: version-3.10.0~107 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2edc5fd73a9d98d7dabe896c01fa4b0438af25de;p=thirdparty%2Fsqlite.git Remove an incorrect ALWAYS() macro. Fix for ticket [e5c6268dd807fa8950] - a problem introduced in SQLite 3.9.0 and found by libFuzzer. FossilOrigin-Name: 824ad96f72cb0c948ec98aca9d17a7e6790c575f --- diff --git a/manifest b/manifest index 7f76cef1ff..8f1d010fc6 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\sa\sclarifying\scomment\sto\sthe\svirtual\stable\stest\smodule\s'test8'. -D 2015-11-24T01:17:01.246 +C Remove\san\sincorrect\sALWAYS()\smacro.\s\sFix\sfor\sticket\s[e5c6268dd807fa8950]\s-\s\na\sproblem\sintroduced\sin\sSQLite\s3.9.0\sand\sfound\sby\slibFuzzer. +D 2015-11-24T02:10:52.306 F Makefile.in d828db6afa6c1fa060d01e33e4674408df1942a1 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc e928e68168df69b353300ac87c10105206653a03 @@ -292,7 +292,7 @@ F src/ctime.c 509ef9c64d1321f42448f111da86400b1799218a F src/date.c fb1c99172017dcc8e237339132c91a21a0788584 F src/dbstat.c ffd63fc8ba7541476ced189b95e95d7f2bc63f78 F src/delete.c 00af9f08a15ddc5cba5962d3d3e5bf2d67b2e7da -F src/expr.c dfccb439a2a981d71970ce3d15effeb59b258798 +F src/expr.c cb1a419508e5b27769a91e00e36e94724e7b1d51 F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb F src/fkey.c 31900763094a3736a5fc887469202eb579fef2d0 F src/func.c ecdd69ec6a1e406f04cc73324be2ebbf6354197f @@ -579,7 +579,7 @@ F test/descidx1.test 6d03b44c8538fe0eb4924e19fba10cdd8f3c9240 F test/descidx2.test 9f1a0c83fd57f8667c82310ca21b30a350888b5d F test/descidx3.test 09ddbe3f5295f482d2f8b687cf6db8bad7acd9a2 F test/diskfull.test 106391384780753ea6896b7b4f005d10e9866b6e -F test/distinct.test 175d49ee783febaf368192dfe7f5afbc68910230 +F test/distinct.test a1783b960ad8c15a77cd9f207be072898db1026c F test/distinctagg.test 1a6ef9c87a58669438fc771450d7a72577417376 F test/e_blobbytes.test 9bea1d3e2b20f3010b04abba58f6ba172301f49f F test/e_blobclose.test df756753f571bc30e42e3a6cba2807576e49e716 @@ -1404,7 +1404,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 19d9f9ce691963310fa73ac5ff728ea8dea9d2b2 -R 5f2e3f4f59d38b9500a642209d9901f8 -U mistachkin -Z 92cc12dd9fcb76285889b066a4a2f02e +P e92f97a6794440eb9d64e21218d39cb0e297a98e +R 67e74267bda19ceddf30801e5b6dab85 +U drh +Z 988f4fae8dad66d5bbc6c477f18a57af diff --git a/manifest.uuid b/manifest.uuid index e7ce74a97f..3fce085be0 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e92f97a6794440eb9d64e21218d39cb0e297a98e \ No newline at end of file +824ad96f72cb0c948ec98aca9d17a7e6790c575f \ No newline at end of file diff --git a/src/expr.c b/src/expr.c index 0255d6902f..8cf018f9d4 100644 --- a/src/expr.c +++ b/src/expr.c @@ -3818,7 +3818,7 @@ int sqlite3ExprCompare(Expr *pA, Expr *pB, int iTab){ } return 2; } - if( pA->op!=TK_COLUMN && ALWAYS(pA->op!=TK_AGG_COLUMN) && pA->u.zToken ){ + if( pA->op!=TK_COLUMN && pA->op!=TK_AGG_COLUMN && pA->u.zToken ){ if( pA->op==TK_FUNCTION ){ if( sqlite3StrICmp(pA->u.zToken,pB->u.zToken)!=0 ) return 2; }else if( strcmp(pA->u.zToken,pB->u.zToken)!=0 ){ diff --git a/test/distinct.test b/test/distinct.test index 2fb90dc3e3..dac2269b0b 100644 --- a/test/distinct.test +++ b/test/distinct.test @@ -252,4 +252,21 @@ do_execsql_test 5.6 { SELECT DISTINCT x FROM t1 ORDER BY x; } {1 2 3 4 5 6} +#------------------------------------------------------------------------- +# 2015-11-23. Problem discovered by Kostya Serebryany using libFuzzer +# +db close +sqlite3 db :memory: +do_execsql_test 6.1 { + CREATE TABLE jjj(x); + SELECT (SELECT 'mmm' UNION SELECT DISTINCT max(name) ORDER BY 1) + FROM sqlite_master; +} {jjj} +do_execsql_test 6.2 { + CREATE TABLE nnn(x); + SELECT (SELECT 'mmm' UNION SELECT DISTINCT max(name) ORDER BY 1) + FROM sqlite_master; +} {mmm} + + finish_test