]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Improved detection of corruption in the %_stat table of FTS4.
authordrh <drh@noemail.net>
Mon, 18 Nov 2019 10:37:57 +0000 (10:37 +0000)
committerdrh <drh@noemail.net>
Mon, 18 Nov 2019 10:37:57 +0000 (10:37 +0000)
Chromium ticket 1025467.

FossilOrigin-Name: 10f8a3b718e0f47be528fba086c318e1dfe18ead383d01cfa24dedabad41e0a2

ext/fts3/fts3_snippet.c
manifest
manifest.uuid
test/fts4aa.test

index b8e2bbaac95ae5d6174a063d793ebe64c99962a9..48b8cf4ab40940af70f6dbb7e40d9b8346264af9 100644 (file)
@@ -1065,10 +1065,10 @@ static int fts3MatchinfoSelectDoctotal(
   }
   pEnd = a + n;
   a += sqlite3Fts3GetVarintBounded(a, pEnd, &nDoc);
-  if( nDoc==0 || a>pEnd ){
+  if( nDoc<=0 || a>pEnd ){
     return FTS_CORRUPT_VTAB;
   }
-  *pnDoc = (u32)nDoc;
+  *pnDoc = nDoc;
 
   if( paLen ) *paLen = a;
   if( ppEnd ) *ppEnd = pEnd;
index d256e1644bf6d2fddb4556339edcfcbf00b64813..1981bb25609f33ec8a6e2fcc019edc93a162a323 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\san\sassert\sthat\scan\sfail\sif\sthe\sschema\sis\scorrupt.
-D 2019-11-17T11:47:50.999
+C Improved\sdetection\sof\scorruption\sin\sthe\s%_stat\stable\sof\sFTS4.\nChromium\sticket\s1025467.
+D 2019-11-18T10:37:57.210
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -90,7 +90,7 @@ F ext/fts3/fts3_hash.c 8b6e31bfb0844c27dc6092c2620bdb1fca17ed613072db057d96952c6
 F ext/fts3/fts3_hash.h 39cf6874dc239d6b4e30479b1975fe5b22a3caaf
 F ext/fts3/fts3_icu.c 305ce7fb6036484085b5556a9c8e62acdc7763f0f4cdf5fd538212a9f3720116
 F ext/fts3/fts3_porter.c 3565faf04b626cddf85f03825e86056a4562c009
-F ext/fts3/fts3_snippet.c 70e8aa4a42a9e0338d0d73d0ec996db29ce5421404e29a86703cb8c39949b0cc
+F ext/fts3/fts3_snippet.c bc9b1236cf26013b584698277f7fc8d9e30cf2558b9555799a8d87a6fe55d5f6
 F ext/fts3/fts3_term.c f45a1e7c6ef464abb1231245d123dae12266b69e05cc56e14045b76591ae92d1
 F ext/fts3/fts3_test.c 73b16e229e517c1b1f0fb8e1046182a4e5dbc8dbe6eea8a5d4353fcce7dbbf39
 F ext/fts3/fts3_tokenize_vtab.c 1de9a61acfa2a0445ed989310c31839c57f6b6086dd9d5c97177ae734a17fd8b
@@ -973,7 +973,7 @@ F test/fts3sort.test ed34c716a11cc2009a35210e84ad5f9c102362ca
 F test/fts3tok1.test a663f4cac22a9505400bc22aacb818d7055240409c28729669ea7d4cc2120d15
 F test/fts3tok_err.test 52273cd193b9036282f7bacb43da78c6be87418d
 F test/fts3varint.test 0b84a3fd4eba8a39f3687523804d18f3b322e6d4539a55bf342079c3614f2ada
-F test/fts4aa.test 9a90721c2a36ef07783aa4b74f1425df4b8b5ab14749029026949c202c35fc4d
+F test/fts4aa.test 86cf2d603a7dcce9cfaea5f582699181f70896b521a05e8a1925638eb0dadeed
 F test/fts4check.test 6259f856604445d7b684c9b306b2efb6346834c3f50e8fc4a59a2ca6d5319ad0
 F test/fts4content.test 1518195a9f92b711d94419f76409a31cc78755854fb0abb1da2b74b9e0cf843e
 F test/fts4docid.test e33c383cfbdff0284685604d256f347a18fdbf01
@@ -1849,7 +1849,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 1e449687881f4d388e54a0e51bcabba41ab10cf7e596ff65e31e88a23c70d497
-R 34046cb8959003a11a67b66c8db4d70c
+P ed57c48e4bb337810521bda2da79614313e4835a317ca4eadb52bd67e4eadf98
+R 11f48b2460fa250b126c367bee79a533
 U drh
-Z b99bb99bc2fe46e8b5443bc31b14c739
+Z 2cd5c488ac2ec64086389266d74cbd79
index 8ce68a37aa831b1cb913a44666ff6d7d41d2b03c..57455a397a522b02ef066df4b711edadd790bbc2 100644 (file)
@@ -1 +1 @@
-ed57c48e4bb337810521bda2da79614313e4835a317ca4eadb52bd67e4eadf98
\ No newline at end of file
+10f8a3b718e0f47be528fba086c318e1dfe18ead383d01cfa24dedabad41e0a2
\ No newline at end of file
index 3e85a77ecc4f8068343632a2e53f02a1086b4d74..25319c3afdc18fde768d961377f0c0b26204456c 100644 (file)
@@ -226,7 +226,16 @@ do_catchsql_test fts4aa-5.70 {
   SELECT quote(matchinfo(t1,'a')) FROM t1 WHERE t1 MATCH 'one two';
 } {1 {database disk image is malformed}}
 
-
+# 2019-11-18 https://bugs.chromium.org/p/chromium/issues/detail?id=1025467
+db close
+sqlite3 db :memory:
+do_execsql_test fts4aa-6.10 {
+  CREATE VIRTUAL TABLE f USING fts4();
+  INSERT INTO f_segdir VALUES (77,91,0,0,'255 77',x'0001308000004d5c4ddddddd4d4d7b4d4d4d614d8019ff4d05000001204d4d2e4d6e4d4d4d4b4d6c4d004d4d4d4d4d4d3d000000004d5d4d4d645d4d004d4d4d4d4d4d4d4d4d454d6910004d05ffff054d646c4d004d5d4d4d4d4d3d000000004d4d4d4d4d4d4d4d4d4d4d69624d4d4d04004d4d4d4d4d604d4ce1404d554d45');
+  INSERT INTO f_segdir VALUES (77,108,0,0,'255 77',x'0001310000fa64004d4d4d3c5d4d654d4d4d614d8000ff4d05000001204d4d2e4d6e4d4d4dff4d4d4d4d4d4d00104d4d4d4d000000004d4d4d0400311d4d4d4d4d4d4d4d4d4d684d6910004d05ffff054d4d6c4d004d4d4d4d4d4d3d000000004d4d4d4d644d4d4d4d4d4d69624d4d4d03ed4d4d4d4d4d604d4ce1404d550080');
+  INSERT INTO f_stat VALUES (0,x'80808080100000000064004d4d4d3c4d4d654d4d4d614d8000ff4df6ff1a00204d4d2e4d6e4d4d4d104d4d4d4d4d4d00104d4d4d4d4d4d69574d4d4d000031044d4d4d3e4d4d4c4d05004d6910');
+  SELECT quote(matchinfo(f,'pnax')) from f where f match '0 1';
+} {X'0200000000000000000000000E0000000E00000001000000010000000100000001000000'}
 
 
 finish_test