| Index: third_party/sqlite/fts3.patch
|
| diff --git a/third_party/sqlite/fts3.patch b/third_party/sqlite/fts3.patch
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..07fdb1a6afcb12b295146b5560dd8af558cd8f85
|
| --- /dev/null
|
| +++ b/third_party/sqlite/fts3.patch
|
| @@ -0,0 +1,68 @@
|
| +diff --git ext/fts3/fts3.c ext/fts3/fts3.c
|
| +index 20da051..71e22ae 100644
|
| +--- ext/fts3/fts3.c
|
| ++++ ext/fts3/fts3.c
|
| +@@ -291,6 +291,7 @@
|
| + ** deletions and duplications. This would basically be a forced merge
|
| + ** into a single segment.
|
| + */
|
| ++#define CHROMIUM_FTS3_CHANGES 1
|
| +
|
| + #if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3)
|
| +
|
| +@@ -1226,7 +1227,13 @@ static int fts3ScanInteriorNode(
|
| + isFirstTerm = 0;
|
| + zCsr += sqlite3Fts3GetVarint32(zCsr, &nSuffix);
|
| +
|
| +- if( nPrefix<0 || nSuffix<0 || &zCsr[nSuffix]>zEnd ){
|
| ++ /* NOTE(shess): Previous code checked for negative nPrefix and
|
| ++ ** nSuffix and suffix overrunning zEnd. Additionally corrupt if
|
| ++ ** the prefix is longer than the previous term, or if the suffix
|
| ++ ** causes overflow.
|
| ++ */
|
| ++ if( nPrefix<0 || nSuffix<0 || nPrefix>nBuffer
|
| ++ || &zCsr[nSuffix]<zCsr || &zCsr[nSuffix]>zEnd ){
|
| + rc = SQLITE_CORRUPT;
|
| + goto finish_scan;
|
| + }
|
| +@@ -3646,7 +3660,11 @@ int sqlite3Fts3Init(sqlite3 *db){
|
| + ** module with sqlite.
|
| + */
|
| + if( SQLITE_OK==rc
|
| ++#if CHROMIUM_FTS3_CHANGES && !SQLITE_TEST
|
| ++ /* fts3_tokenizer() disabled for security reasons. */
|
| ++#else
|
| + && SQLITE_OK==(rc = sqlite3Fts3InitHashTable(db, pHash, "fts3_tokenizer"))
|
| ++#endif
|
| + && SQLITE_OK==(rc = sqlite3_overload_function(db, "snippet", -1))
|
| + && SQLITE_OK==(rc = sqlite3_overload_function(db, "offsets", 1))
|
| + && SQLITE_OK==(rc = sqlite3_overload_function(db, "matchinfo", 1))
|
| +@@ -3656,11 +3674,15 @@ int sqlite3Fts3Init(sqlite3 *db){
|
| + rc = sqlite3_create_module_v2(
|
| + db, "fts3", &fts3Module, (void *)pHash, hashDestroy
|
| + );
|
| ++#if CHROMIUM_FTS3_CHANGES && !SQLITE_TEST
|
| ++ /* Disable fts4 pending review. */
|
| ++#else
|
| + if( rc==SQLITE_OK ){
|
| + rc = sqlite3_create_module_v2(
|
| + db, "fts4", &fts3Module, (void *)pHash, 0
|
| + );
|
| + }
|
| ++#endif
|
| + return rc;
|
| + }
|
| +
|
| +diff --git ext/fts3/fts3_icu.c ext/fts3/fts3_icu.c
|
| +index 85390d3..a75b14a 100644
|
| +--- ext/fts3/fts3_icu.c
|
| ++++ ext/fts3/fts3_icu.c
|
| +@@ -198,7 +198,7 @@ static int icuNext(
|
| +
|
| + while( iStart<iEnd ){
|
| + int iWhite = iStart;
|
| +- U8_NEXT(pCsr->aChar, iWhite, pCsr->nChar, c);
|
| ++ U16_NEXT(pCsr->aChar, iWhite, pCsr->nChar, c);
|
| + if( u_isspace(c) ){
|
| + iStart = iWhite;
|
| + }else{
|
|
|