From: dan Date: Fri, 10 Jul 2020 11:12:36 +0000 (+0000) Subject: Fix a broken assert() in fts3 that could fail when handling corrupt records. X-Git-Tag: version-3.33.0~66 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b16425d05a29faeec7dd77d71c0f466f8eb2340d;p=thirdparty%2Fsqlite.git Fix a broken assert() in fts3 that could fail when handling corrupt records. FossilOrigin-Name: 5124732370fd53c93314c9c79b4251bd46ce81c2e7aa4f59e2c1889cc4263d5a --- diff --git a/ext/fts3/fts3.c b/ext/fts3/fts3.c index 5296f9d6e7..892fc36d33 100644 --- a/ext/fts3/fts3.c +++ b/ext/fts3/fts3.c @@ -2068,7 +2068,7 @@ static void fts3PutDeltaVarint( sqlite3_int64 *piPrev, /* IN/OUT: Previous value written to list */ sqlite3_int64 iVal /* Write this value to the list */ ){ - assert( iVal-*piPrev > 0 || (*piPrev==0 && iVal==0) ); + assert_fts3_nc( iVal-*piPrev > 0 || (*piPrev==0 && iVal==0) ); *pp += sqlite3Fts3PutVarint(*pp, iVal-*piPrev); *piPrev = iVal; } diff --git a/manifest b/manifest index a80c023d2c..3212b63538 100644 --- a/manifest +++ b/manifest @@ -1,13 +1,13 @@ B 7a876209a678a34c198b54ceef9e3c041f128a14dc73357f6a57cadadaa6cf7b -C Fix\shandling\sof\sanother\scorrupt\sdatabase\scase\sin\sfts3. -D 2020-07-09T21:29:34.103 +C Fix\sa\sbroken\sassert()\sin\sfts3\sthat\scould\sfail\swhen\shandling\scorrupt\srecords. +D 2020-07-10T11:12:36.503 F Makefile.in 19374a5db06c3199ec1bab71ab74a103d8abf21053c05e9389255dc58083f806 F Makefile.msc 48f5a3fc32672c09ad73795749f6253e406a31526935fbbffd8f021108d54574 F autoconf/Makefile.am a8d1d24affe52ebf8d7ddcf91aa973fa0316618ab95bb68c87cabf8faf527dc8 F configure a97f98dfff699495aef66ae3d9c424345778a663f583e0d6e7522670518f87c1 x F configure.ac 40d01e89cb325c28b33f5957e61fede0bd17da2b5e37d9b223a90c8a318e88d4 F doc/lemon.html 1edc0f916e771212792d4d077aedc05168bf13fd65d64d41b2c13e46ac0063a8 -F ext/fts3/fts3.c 5ffabd0d13210fb9cfe1c08184201282722adfeea49cd9e8e2ae29d1fefd7fcb +F ext/fts3/fts3.c b8ed676b377b1f7f07596aa6272ea623acf087f529a3007b75d1f4908919e6b9 F ext/fts3/fts3_write.c 723ed1b11ed46ad1b3a23c0d69fa39e77986783a82d5711bf87a5ce29e0a3b52 F ext/lsm1/lsm_unix.c 11e0a5c19d754a4e1d93dfad06de8cc201f10f886b8e61a4c599ed34e334fc24 F ext/misc/decimal.c c1897f624893d1c12e3c879d97ca7d1c4a36cae10d32afe632779de78c4aaa4f @@ -34,7 +34,7 @@ F test/busy2.test 415364312743992641f9bf679c84918327296067f85a5d00012b339dc35acb F test/decimal.test 12739a01bdba4c4d79f95b323e6b67b9fad1ab6ffb56116bd2b9c81a5b19e1d9 F test/filter1.test 6c483ecf7886c8843a8612c021aa23f33c581f584151f251842b3a3592c95ac8 F test/fkey5.test 321fd41e8754389526b2b8e8769348dc9ff23a65d4d48b19c27df17459e82ec5 -F test/fts3corrupt4.test 07cabb7a5a3a4d5bbae08b537e0d9e22eebdb49b7b7a98646ef8c258308ae66f +F test/fts3corrupt4.test b77dcdfa207c11d7966e71837c518cb0639c78fd109dec89c65d45a3bfd36701 F test/fuzzdata8.db 0ae860b36b79fd41cafddc9e6602358b2d5c331cf200283221e659f86e196c0c F test/gencol1.test b05e6c5edb9b10d48efb634ed07342441bddc89d225043e17095c36e567521a0 F test/ieee754.test b0945d12be7d255f3dfa18e2511b17ca37e0edd2b803231c52d05b86c04ab26e @@ -46,7 +46,7 @@ F tool/mksqlite3c.tcl f4ef476510eca4124c874a72029f1e01bc54a896b1724e8f9eef0d8bfa F tool/mksqlite3h.tcl 1f5e4a1dbbbc43c83cc6e74fe32c6c620502240b66c7c0f33a51378e78fc4edf F tool/showlocks.c 9cc5e66d4ebbf2d194f39db2527ece92077e86ae627ddd233ee48e16e8142564 F tool/speed-check.sh 615cbdf50f1409ef3bbf9f682e396df80f49d97ed93ed3e61c8e91fae6afde58 -P 610ee8d5dc855fd163daa3c93b44db7874463d69df5a01ab4113b725a031b9d4 -R f506df3e64449a71a2d48ebddc1578d7 +P ccff8cb8267d4c5605484f7a35c1836937f20b3d6879fe84cd84dc24bbbffc77 +R abe8831689bcc88a9040a035ac96873e U dan -Z 1f24dc1574d5c512fe643a8c300eaca2 +Z 07dd0ef315f5745bd324608854712dcf diff --git a/manifest.uuid b/manifest.uuid index 83875f548d..746aa4e462 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -ccff8cb8267d4c5605484f7a35c1836937f20b3d6879fe84cd84dc24bbbffc77 \ No newline at end of file +5124732370fd53c93314c9c79b4251bd46ce81c2e7aa4f59e2c1889cc4263d5a \ No newline at end of file diff --git a/test/fts3corrupt4.test b/test/fts3corrupt4.test index 85d62b33a4..90a7c7d4c2 100644 --- a/test/fts3corrupt4.test +++ b/test/fts3corrupt4.test @@ -6266,5 +6266,20 @@ do_catchsql_test 45.2 { INSERT INTO x1(x1) VALUES( 'merge=1' ) } {1 {database disk image is malformed}} +#------------------------------------------------------------------------- +reset_db +set saved $sqlite_fts3_enable_parentheses +set sqlite_fts3_enable_parentheses 1 +do_execsql_test 46.1 { + CREATE VIRTUAL TABLE t0 USING fts3(a INTEGER PRIMARY KEY,b,c,d); + INSERT INTO t0_segdir VALUES(0,0,0,0,'0 42',X'0001310301c9000103323334050d8000f200000461616161050101020200000462626262050101030200'); +} {} + +do_catchsql_test 46.2 { + SELECT * FROM t0 + WHERE t0 MATCH x'2b0a312b0a312a312a2a0b5d0a0b0b0a312a0a0b0b0a312a0b310a392a0b0a27312a2a0b5d0a312a0b310a31315d0b310a312a316d2a0b313b15bceaa50a312a0b0a27312a2a0b5d0a312a0b310a312b0b2a310a312a0b2a0b2a0b2e5d0a0bff313336e34a2a312a0b0a3c310b0a0b4b4b0b4b2a4bec40322b2a0b310a0a312a0a0a0a0a0a0a0a0a0b310a312a2a2a0b5d0a0b0b0a312a0b310a312a0b0a4e4541530b310a5df5ced70a0a0a0a0a4f520a0a0a0a0a0a0a312a0b0a4e4541520b310a5d616161610a0a0a0a4f520a0a0a0a0a0a312b0a312a312a0a0a0a0a0a0a004a0b0a310b220a0b0a310a4a22310a0b0a7e6fe0e0e030e0e0e0e0e01176e02000e0e0e0e0e01131320226310a0b0a310a4a22310a0b0a310a766f8b8b4ee0e0300ae0090909090909090909090909090909090909090909090909090909090909090947aaaa540b09090909090909090909090909090909090909090909090909090909090909fae0e0f2f22164e0e0f273e07fefefef7d6dfafafafa6d6d6d6d'; +} {1 {database disk image is malformed}} + +set sqlite_fts3_enable_parentheses $saved finish_test