From 56e38185fe26dbaeba7545bf94c5a25150e16907 Mon Sep 17 00:00:00 2001 From: dan Date: Fri, 12 Jun 2020 15:17:27 +0000 Subject: [PATCH] Fix a buffer overread in fts3 that could occur when decoding a corrupted record. FossilOrigin-Name: 9a4a40c45feb2bb89020dc7711b4753479112ceae7ce2a44521d72afeddfac83 --- ext/fts3/fts3.c | 5 ++++- manifest | 15 +++++++++------ manifest.uuid | 2 +- test/fts3corrupt2.test | 2 +- test/fts3corrupt4.test | 35 ++++++++++++++++++++++++++++++++--- 5 files changed, 47 insertions(+), 12 deletions(-) diff --git a/ext/fts3/fts3.c b/ext/fts3/fts3.c index 88ff0ee2c5..7e2cd79055 100644 --- a/ext/fts3/fts3.c +++ b/ext/fts3/fts3.c @@ -2267,6 +2267,9 @@ static int fts3PoslistMerge( */ fts3GetDeltaVarint(&p1, &i1); fts3GetDeltaVarint(&p2, &i2); + if( i1<2 || i2<2 ){ + break; + } do { fts3PutDeltaVarint(&p, &iPrev, (i1