From: dan Date: Fri, 23 Apr 2021 11:37:01 +0000 (+0000) Subject: Fix an assert() in fts5_index.c that may fail if the database records are corrupt. X-Git-Tag: version-3.36.0~157 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f3d5a684610ed339a90cbb6f4ed8ea4db13b5f53;p=thirdparty%2Fsqlite.git Fix an assert() in fts5_index.c that may fail if the database records are corrupt. FossilOrigin-Name: dfadb96edfef1d49e48a659264b9eb8d7f98d95d159d95c92c30dd4ba6c6e739 --- diff --git a/ext/fts5/fts5_index.c b/ext/fts5/fts5_index.c index 858b549cf8..869d7a8b71 100644 --- a/ext/fts5/fts5_index.c +++ b/ext/fts5/fts5_index.c @@ -5079,7 +5079,8 @@ static void fts5MergePrefixLists( nTail = pHead->iter.nPoslist - pHead->iOff; /* WRITEPOSLISTSIZE */ - assert( tmp.n+nTail<=nTmp ); + assert_nc( tmp.n+nTail<=nTmp ); + assert( tmp.n+nTail<=nTmp+nMerge*10 ); if( tmp.n+nTail>nTmp-FTS5_DATA_ZERO_PADDING ){ if( p->rc==SQLITE_OK ) p->rc = FTS5_CORRUPT; break; diff --git a/ext/fts5/test/fts5corrupt3.test b/ext/fts5/test/fts5corrupt3.test index 9b43f3e069..631cb2159c 100644 --- a/ext/fts5/test/fts5corrupt3.test +++ b/ext/fts5/test/fts5corrupt3.test @@ -14591,6 +14591,207 @@ do_catchsql_test 74.1 { SELECT rowid, quote(matchinfo(t1,'p�xyb