From 8f5b14a5c25d7ee74d9b97121df54fbe987b2750 Mon Sep 17 00:00:00 2001 From: dan Date: Sat, 2 Feb 2019 13:47:25 +0000 Subject: [PATCH] Fix a buffer overread in fts5 debugging scalar function fts5_decode(). FossilOrigin-Name: 54f2399fb2a626602d405c857297f2da833f9f048cbc478f9110bed2e9bda299 --- ext/fts5/fts5_index.c | 4 + ext/fts5/test/fts5corrupt3.test | 155 ++++++++++++++++++++++++++++++++ manifest | 16 ++-- manifest.uuid | 2 +- 4 files changed, 168 insertions(+), 9 deletions(-) diff --git a/ext/fts5/fts5_index.c b/ext/fts5/fts5_index.c index 202f9eb6a0..5e02bd3d02 100644 --- a/ext/fts5/fts5_index.c +++ b/ext/fts5/fts5_index.c @@ -6427,6 +6427,10 @@ static void fts5DecodeFunction( /* Decode any more doclist data that appears on the page before the ** first term. */ nDoclist = (iTermOff ? iTermOff : szLeaf) - iOff; + if( nDoclist+iOff>n ){ + rc = FTS5_CORRUPT; + goto decode_out; + } fts5DecodeDoclist(&rc, &s, &a[iOff], nDoclist); while( iPgidxOff