32 lines
1.2 KiB
Diff
32 lines
1.2 KiB
Diff
|
|
From 7c66bd37c346c0bbf92502edec140b488e4af6e2 Mon Sep 17 00:00:00 2001
|
||
|
|
From: Dan Kennedy <danielk1977@gmail.com>
|
||
|
|
Date: Tue, 22 Jan 2019 12:21:28 +0000
|
||
|
|
Subject: [PATCH 0813/1009] Fix another segfault caused by a corrupt fts3
|
||
|
|
database.
|
||
|
|
|
||
|
|
https://github.com/mackyle/sqlite/commit/7c66bd37c346c0bbf92502edec140b488e4af6e2
|
||
|
|
|
||
|
|
---
|
||
|
|
ext/fts3/fts3_write.c | 5 ++
|
||
|
|
1 files changed, 5 insertions(+), 0 deletion(-)
|
||
|
|
|
||
|
|
diff --git a/ext/fts3/fts3_write.c b/ext/fts3/fts3_write.c
|
||
|
|
index df3c07e..3e195c3 100644
|
||
|
|
--- a/ext/fts3/fts3_write.c
|
||
|
|
+++ b/ext/fts3/fts3_write.c
|
||
|
|
@@ -2255,6 +2255,11 @@ static int fts3SegWriterAdd(
|
||
|
|
nPrefix = fts3PrefixCompress(pWriter->zTerm, pWriter->nTerm, zTerm, nTerm);
|
||
|
|
nSuffix = nTerm-nPrefix;
|
||
|
|
|
||
|
|
+ /* If nSuffix is zero or less, then zTerm/nTerm must be a prefix of
|
||
|
|
+ ** pWriter->zTerm/pWriter->nTerm. i.e. must be equal to or less than when
|
||
|
|
+ ** compared with BINARY collation. This indicates corruption. */
|
||
|
|
+ if( nSuffix<=0 ) return FTS_CORRUPT_VTAB;
|
||
|
|
+
|
||
|
|
/* Figure out how many bytes are required by this new entry */
|
||
|
|
nReq = sqlite3Fts3VarintLen(nPrefix) + /* varint containing prefix size */
|
||
|
|
sqlite3Fts3VarintLen(nSuffix) + /* varint containing suffix size */
|
||
|
|
--
|
||
|
|
1.8.3.1
|
||
|
|
|