blob: 0d10779a060bf7b7ff052cfc5c52282c1c7566d8 [file] [log] [blame]
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Darwin Huang <huangdarwin@chromium.org>
Date: Tue, 7 Jan 2020 13:34:37 -0800
Subject: [PATCH 19/25] Fix fts3 UB uint64
Backports https://sqlite.org/src/info/e1f12978b53683114ab0
Bug: 1037786
---
third_party/sqlite/patched/ext/fts3/fts3_snippet.c | 2 +-
third_party/sqlite/patched/test/fts3snippet.test | 13 +++++++++++++
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/third_party/sqlite/patched/ext/fts3/fts3_snippet.c b/third_party/sqlite/patched/ext/fts3/fts3_snippet.c
index dda71c3985af..6eae82dbc3ff 100644
--- a/third_party/sqlite/patched/ext/fts3/fts3_snippet.c
+++ b/third_party/sqlite/patched/ext/fts3/fts3_snippet.c
@@ -560,7 +560,7 @@ static int fts3BestSnippet(
/* Set the *pmSeen output variable. */
for(i=0; i<nList; i++){
if( sIter.aPhrase[i].pHead ){
- *pmSeen |= (u64)1 << i;
+ *pmSeen |= (u64)1 << (i%64);
}
}
diff --git a/third_party/sqlite/patched/test/fts3snippet.test b/third_party/sqlite/patched/test/fts3snippet.test
index ce565127b5a3..9ee37dc6263f 100644
--- a/third_party/sqlite/patched/test/fts3snippet.test
+++ b/third_party/sqlite/patched/test/fts3snippet.test
@@ -587,5 +587,18 @@ do_execsql_test 5.1 {
{[a70] [a71] [a72]}
}
+#-------------------------------------------------------------------------
+# Request a snippet from a query with more than 64 phrases.
+#
+reset_db
+do_execsql_test 6.0 {
+ CREATE VIRTUAL TABLE f USING fts3(b);
+ INSERT INTO f VALUES ( x'746e6e6d64612e082a011065616e656d655a616c702a2f65732e0f42014001380230018218');
+}
+
+do_execsql_test 6.1 {
+ SELECT length(snippet(f))>0 FROM f WHERE b MATCH x'1065616e656d655a616c702a2f65732e0f42014001380230018218021001081e0a3d746e6e6d64612e082a010f42014001380230018218021001081e0a3d746e6e6d64612e082a011065616e656d655a616c702a2f65732e0f42014001380230018218021001081e0a3d746e6e6d64612e082a011065616e656d655a616c702a2f65732e0f42014001380230018218021001081e0a3d746e6e6d64612e082a011065616e656d655a616c702a2f0a3d746e6e6d64612e082a011065616e656d655a616c702a2f65732e0f42014001018218021001081e0a3d746e6e6d64612e082a011065616e656d655a616c702a018218021001081e0a3d746e6e6d64612e082a011065616e656d655a616c2a2f65732e0f42014001380230018218021001081e0a3d746e6e6d64612e082a011065616e656d655a616c702a2f65732e0f42014001380230018218021001081e0a3d746e6e6d64612e082a011065616e656d655a616c702a2f65732e0f42014001380230018218021001081e0a3d746e6e6d64612e082a011065616e656d655a616c702a2f65732e0f42014001380230018218021001081e0a3d746e6e6d64612e0f42';
+} {1}
+
set sqlite_fts3_enable_parentheses 0
finish_test
--
2.25.0.rc1.283.g88dfdc4193-goog