]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix an assert() in fts3 that can fail when processing a corrupt record.
authordan <dan@noemail.net>
Tue, 16 Jun 2020 14:06:20 +0000 (14:06 +0000)
committerdan <dan@noemail.net>
Tue, 16 Jun 2020 14:06:20 +0000 (14:06 +0000)
FossilOrigin-Name: a58a6d6fb241a50c4c7c9af8a9c65bc4746e905b2ae12290c7182afa944053a2

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

index 7e2cd79055b8eacd982b118a6319cc8871ea4b95..d03e7eefb30b4ae92ac5b50b0fda9027f3ee4572 100644 (file)
@@ -4523,7 +4523,7 @@ void sqlite3Fts3DoclistNext(
 
   assert( nDoclist>0 );
   assert( *pbEof==0 );
-  assert( p || *piDocid==0 );
+  assert_fts3_nc( p || *piDocid==0 );
   assert( !p || (p>=aDoclist && p<=&aDoclist[nDoclist]) );
 
   if( p==0 ){
index 208f10fd1c0b7e3efc358dab25b04aa56930a901..084ad09f6523953c47bb9d4864c060a38ca406e4 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,9 +1,9 @@
 B fd5abb1a7b5a55127d5c0d5ff448020d8bccab44e4f5afe1eb88fc19578af735
-C Provide\s"sqlite_schema"\sas\san\salternative\sname\sto\sthe\stable\sthat\sholds\sthe\ndatabase\sschema.
-D 2020-06-15T20:27:35.935
+C Fix\san\sassert()\sin\sfts3\sthat\scan\sfail\swhen\sprocessing\sa\scorrupt\srecord.
+D 2020-06-16T14:06:20.912
 F configure f594931bd7b23dad12db96b81e1dba43b41b30a4560d6eb008014e3d9f1617e8 x
 F configure.ac 13e4ecf89214c3aa0ba099a9e0178f13f03261ace627126737d8cee240ec5c1c
-F ext/fts3/fts3.c acc51e4378dd772251b31ead0ccd19070fc1774f6f6a55b11e00cb885e0f34bc
+F ext/fts3/fts3.c ad3416827315a5bef8d0e23d8e90bf29940fbec23ee78aa0c5d3caed85072dec
 F src/alter.c b8ffe4acd48b4fe793d01901f28fd4f3b037854a0e99f0c977738556c31b9d2b
 F src/btree.c f3a4479b0dba3a59a1d156d973be41fc1ccb3dbdb69151c4c62a791d86c9ffe2
 F src/build.c 8245e69aa1a2f8b67e76203fdbaa9f88deccd89b5ed41f7097c202b920484fd0
@@ -19,7 +19,7 @@ F src/vdbe.c 985f92b5131d62654c3c26062a2e55b1c8f71c2e10497e23021c6650d5c392b3
 F src/vtab.c 33ecf1d8b0fd1508fe23be9da40e48909c86a13db2725e273177eb47db2fc265
 F src/window.c 88a63e6948ea924b3cf9ad8aff5ea1fa53bebdb2f13340867205fda16ed0f19c
 F test/fts3corrupt2.test e318f0676e5e78d5a4b702637e2bb25265954c08a1b1e4aaf93c7880bb0c67d0
-F test/fts3corrupt4.test e77b06926348eb45b71569f9dc45e5b19c984ca1b1ef6671367f4ca9d6eaa973
+F test/fts3corrupt4.test 000cc36cf50f61e51a3ae35748ea883674a9d8b797880975e10866849eefb404
 F test/fuzzdata8.db b87ae726c84c3f80d457642d7650724a76eb3d7b76258959d712cc4d926ddfc7
 F test/istrue.test 06f92ea38750fa74df7dbbe6920205251c2310861fbbe23a3adfa918a2e2ba74
 F test/select3.test c49fbb758903f3718e2de5aa4655eda4838131cbea24a86db908f8b6889aa68c
@@ -28,7 +28,7 @@ F test/where.test f5e62453537e5b335b69f3b09f8a02ce3328289fad5d866e25371284b837d7
 F test/whereG.test 9363b2a97d914cb1b81aff5069ef0cf2a071a67e2b604eac6fe9c0114017d9aa
 F test/window1.test 9d7f4990e5b36d95af93b189da4aa75216c6690ce95cced3c8b6d3234be51c2c
 F test/without_rowid3.test 96426a6c9a2a5cf62bbe55ea1ad038eaaf4bf743f40a1ad517233b8e5a3d4339
-P 9472f1fe58222b738ad10fc93ceb365dc33b65c2bbca571f52bcd5bdb74b347e
-R 02b044eedda1f74db4b37271f6bc932d
-U drh
-Z dcba90128c816b6defcdc3a0ba95ebaa
+P 61782a7ae3c25cf59d7a676cb295eb024d17c46e532ae78c6fe871a91d712fa9
+R 14b01e4dd1603edf4df42d81f4ced7a5
+U dan
+Z 43e2585015a8d4d9f2bfa4334bc823ee
index 1d8a33bad876442be1e4d4dd564e300d4a0793b2..44a51946577aa2c67b402ae4ba66fbe68278425f 100644 (file)
@@ -1 +1 @@
-61782a7ae3c25cf59d7a676cb295eb024d17c46e532ae78c6fe871a91d712fa9
\ No newline at end of file
+a58a6d6fb241a50c4c7c9af8a9c65bc4746e905b2ae12290c7182afa944053a2
\ No newline at end of file
index 3bcf06af259ba96f1ebc43ffe9a82ec0b0c0327a..c79a5a2379606ea1bd95eff7a1cafec6c9c33983 100644 (file)
@@ -6091,7 +6091,24 @@ do_test 39.2 {
     }
   }
 } 0
+set sqlite_fts3_enable_parentheses $saved
+
+#-------------------------------------------------------------------------
+reset_db
+set saved $sqlite_fts3_enable_parentheses
+set sqlite_fts3_enable_parentheses 1
 
+do_execsql_test 40.1 {
+
+  CREATE VIRTUAL TABLE t0 USING fts3(col0 INTEGER PRIMARY KEY, col1, col2 ,col3 );
+  INSERT INTO t0_segdir VALUES(0,0,0,0,'0 42',
+      X'0001310301020001033233340500010102000004616161bc050101020200000462626262050101030200'
+  );
+}
+
+do_execsql_test 40.2 {
+  SELECT 0==matchinfo(t0,'sx') FROM t0 WHERE t0 MATCH '1* 2 3 4 5 6 OR 1';
+} 0
 
 set sqlite_fts3_enable_parentheses $saved