]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Ensure fts5 consistently calls sqlite3_value_text() before sqlite3_value_bytes()...
authordan <dan@noemail.net>
Fri, 20 Dec 2019 13:24:11 +0000 (13:24 +0000)
committerdan <dan@noemail.net>
Fri, 20 Dec 2019 13:24:11 +0000 (13:24 +0000)
FossilOrigin-Name: c16305eba0eb14368f2631b9a82b7eb4483c93f3b31257ee7c33f9b00c344379

ext/fts5/fts5_storage.c
ext/fts5/test/fts5integrity.test
manifest
manifest.uuid

index c5bf8024db235aeb2331bb06714fecaedba50ce1..27fa45c19b135327eab508bd765155792e4aed0c 100644 (file)
@@ -738,10 +738,11 @@ int sqlite3Fts5StorageIndexInsert(
   for(ctx.iCol=0; rc==SQLITE_OK && ctx.iCol<pConfig->nCol; ctx.iCol++){
     ctx.szCol = 0;
     if( pConfig->abUnindexed[ctx.iCol]==0 ){
+      const char *zText = sqlite3_value_text(apVal[ctx.iCol+2]);
+      int nText = sqlite3_value_bytes(apVal[ctx.iCol+2]);
       rc = sqlite3Fts5Tokenize(pConfig, 
           FTS5_TOKENIZE_DOCUMENT,
-          (const char*)sqlite3_value_text(apVal[ctx.iCol+2]),
-          sqlite3_value_bytes(apVal[ctx.iCol+2]),
+          zText, nText,
           (void*)&ctx,
           fts5StorageInsertCallback
       );
index 25c7277305ba722ceae7564d9be19cd7cd79802d..e8135b078f795c8e9db2b470288ff6b28796f57d 100644 (file)
@@ -210,4 +210,21 @@ foreach {tn pgsz} {
   } {1000}
 }
 
+#-------------------------------------------------------------------------
+reset_db
+do_execsql_test 7.0 {
+  PRAGMA encoding = 'UTF-16';
+  CREATE VIRTUAL TABLE vt0 USING fts5(c0);
+  INSERT INTO vt0 VALUES (x'46f0');
+  SELECT quote(c0) FROM vt0;
+} {X'46F0'}
+
+do_execsql_test 7.1 {
+  UPDATE vt0 SET c0='';
+}
+
+do_execsql_test 7.2 {
+  INSERT INTO vt0(vt0) VALUES('integrity-check');
+}
+
 finish_test
index a561736eb00917fec81883e84510302539b87e54..a3be36482a1cb4a1b60fe6456becdbd874318d8f 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Do\snot\scontinue\san\sALTER\sTABLE\stree\swalk\sof\sa\ssubquery\sif\sa\sprior\serror\nis\sseen\sin\sthe\stree.\s\sReport\sthe\sproblem\simmediately,\swithout\scontinuing.
-D 2019-12-20T12:55:21.482
+C Ensure\sfts5\sconsistently\scalls\ssqlite3_value_text()\sbefore\ssqlite3_value_bytes().\sThis\smatters\swhen\sstoring\sblobs\sin\sfts5\stables\swithin\sutf-16\sdatabases.\sFix\sfor\s[cf36cb4e02].
+D 2019-12-20T13:24:11.254
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -118,7 +118,7 @@ F ext/fts5/fts5_expr.c 2be456484786333d559dc2987a00f2750981fab91d52db8452a804627
 F ext/fts5/fts5_hash.c 1cc0095646f5f3b46721aa112fb4f9bf29ae175cb5338f89dcec66ed97acfe75
 F ext/fts5/fts5_index.c 99b77ae1f503978ca76985bcfff7345c822aed8bbaa8edb3747f804f614685b5
 F ext/fts5/fts5_main.c 9db1f173d299466aeff89bd949fb1eb0a181265726fb56f11e07ea292dcc9a73
-F ext/fts5/fts5_storage.c 167e3d8f8052a71032d498e32a2f2ed5ffe489e5d4d47e298adfa02ed55c7882
+F ext/fts5/fts5_storage.c 87cd8365614533537f237c2c12bc47333f6287cc3b4c14ce0cfec831f186180c
 F ext/fts5/fts5_tcl.c 39bcbae507f594aad778172fa914cad0f585bf92fd3b078c686e249282db0d95
 F ext/fts5/fts5_test_mi.c 08c11ec968148d4cb4119d96d819f8c1f329812c568bac3684f5464be177d3ee
 F ext/fts5/fts5_test_tok.c f96c6e193c466711d6d7828d5f190407fe7ab897062d371426dd3036f01258e7
@@ -182,7 +182,7 @@ F ext/fts5/test/fts5first.test 3fcf2365c00a15fc9704233674789a3b95131d12de18a9b99
 F ext/fts5/test/fts5full.test e1701a112354e0ff9a1fdffb0c940c576530c33732ee20ac5e8361777070d717
 F ext/fts5/test/fts5fuzz1.test 238d8c45f3b81342aa384de3e581ff2fa330bf922a7b69e484bbc06051a1080e
 F ext/fts5/test/fts5hash.test a4cf51acad99bfc43c16fb74f9d22495dc221ae0701fc5e908ca963a9b26a02b
-F ext/fts5/test/fts5integrity.test 4317561cd25eca7df16aa1f7d1a700ee958059fa639785f94aba0a84df9ab17b
+F ext/fts5/test/fts5integrity.test dea2ea1977a67256aa8346514dccd8f477863edaebf305486ab45dd004b646fd
 F ext/fts5/test/fts5interrupt.test 09613247b273a99889808ef852898177e671406fe71fdde7ea00e78ea283d227
 F ext/fts5/test/fts5lastrowid.test be98fe3e03235296585b72daad7aed5717ba0062bae5e5c18dd6e04e194c6b28
 F ext/fts5/test/fts5leftjoin.test c0b4cafb9661379e576dc4405c0891d8fcc2782680740513c4d1fc114b43d4ad
@@ -1852,7 +1852,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 07beb3629e648e7feae4e786191514339ac1d8f6ba5bb6e7cc8a04bc1f1cd6ab
-R 90a0618f94e6c2b48b3e57f071c32644
-U drh
-Z e9630083ebe8d733d28678003df0c2ce
+P 01ca865f31c0c817ede7f357401ef76cf311ae662397908464f53e1c147f5b6b
+R 00fcb0f09947c903a1a870a5269ba6c2
+U dan
+Z 3880b4023bbe5b3af0421eab38686cc0
index 9d671b8ad7e7ef9a0af8d48b00944584be5ea362..f5bf322d5e28f7ea77191bef77983650fdd33f1d 100644 (file)
@@ -1 +1 @@
-01ca865f31c0c817ede7f357401ef76cf311ae662397908464f53e1c147f5b6b
\ No newline at end of file
+c16305eba0eb14368f2631b9a82b7eb4483c93f3b31257ee7c33f9b00c344379
\ No newline at end of file