]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a broken assert() in fts3 that could fail when handling corrupt records.
authordan <dan@noemail.net>
Fri, 10 Jul 2020 11:12:36 +0000 (11:12 +0000)
committerdan <dan@noemail.net>
Fri, 10 Jul 2020 11:12:36 +0000 (11:12 +0000)
FossilOrigin-Name: 5124732370fd53c93314c9c79b4251bd46ce81c2e7aa4f59e2c1889cc4263d5a

ext/fts3/fts3.c
manifest
manifest.uuid
test/fts3corrupt4.test

index 5296f9d6e75dafddcbaa3c80420bc840166c9d1f..892fc36d33aec704c1ef882ba3cc05e895af96b4 100644 (file)
@@ -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;
 }
index a80c023d2c257c105b416128704c4b8f0cb4ab43..3212b6353884a9e4687fc6bb3ca4dcfc48a4d732 100644 (file)
--- 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
index 83875f548d4c9ce6d6edac1fc5c09f7104cc5944..746aa4e462a9053d643b42d8631d5dcd26552cb8 100644 (file)
@@ -1 +1 @@
-ccff8cb8267d4c5605484f7a35c1836937f20b3d6879fe84cd84dc24bbbffc77
\ No newline at end of file
+5124732370fd53c93314c9c79b4251bd46ce81c2e7aa4f59e2c1889cc4263d5a
\ No newline at end of file
index 85d62b33a425e5ea7e02eb71861c16a718c751d4..90a7c7d4c22e55b3e72b6fd0055122b43f1d448a 100644 (file)
@@ -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