Fix an assert() in fts3 that can fail when processing a corrupt record.

FossilOrigin-Name: a58a6d6fb241a50c4c7c9af8a9c65bc4746e905b2ae12290c7182afa944053a2
This commit is contained in:
dan 2020-06-16 14:06:20 +00:00
parent 346a70ca1e
commit b65ce39607
4 changed files with 27 additions and 10 deletions

@ -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 ){

@ -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

@ -1 +1 @@
61782a7ae3c25cf59d7a676cb295eb024d17c46e532ae78c6fe871a91d712fa9
a58a6d6fb241a50c4c7c9af8a9c65bc4746e905b2ae12290c7182afa944053a2

@ -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