]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix an assert() in fts3 that could fail when processing a corrupt record.
authordrh <drh@noemail.net>
Wed, 17 Jun 2020 17:27:42 +0000 (17:27 +0000)
committerdrh <drh@noemail.net>
Wed, 17 Jun 2020 17:27:42 +0000 (17:27 +0000)
FossilOrigin-Name: ea71fb7fabcce71af05af14a8eaba3693f6bc859a18ab9f107eaac51260853fe

ext/fts3/fts3.c
manifest
manifest.uuid
test/fts3corrupt4.test

index dc27d93b610886509dea0f78bd3cc58879db7830..82d326ed7b49f839fda5fda605a99bc64b5c19cc 100644 (file)
@@ -2338,7 +2338,7 @@ static int fts3PoslistPhraseMerge(
   /* Never set both isSaveLeft and isExact for the same invocation. */
   assert( isSaveLeft==0 || isExact==0 );
 
-  assert( p!=0 && *p1!=0 && *p2!=0 );
+  assert_fts3_nc( p!=0 && *p1!=0 && *p2!=0 );
   if( *p1==POS_COLUMN ){ 
     p1++;
     p1 += fts3GetVarint32(p1, &iCol1);
index 0ac637628f6e192b4abe57b2f6582a94b47d2fff..922e290d179de5c320d5892e4c0629f0214c85ae 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,29 +1,22 @@
 B dafd2466a10f68acbe129010216f017a5fcfc048ffbc0da806d04f04e58cfcbb
-C Merge\smiscellaneous\sfixes\sfrom\strunk\sinto\sthe\s3.32\sbranch.
-D 2020-06-17T12:37:26.249
-F ext/fts3/fts3.c a93003c89b9c5cf2fbb870afb0afb7985c82f8dbd43f098cadae29058d26574f
+C Fix\san\sassert()\sin\sfts3\sthat\scould\sfail\swhen\sprocessing\sa\scorrupt\srecord.
+D 2020-06-17T17:27:42.376
+F ext/fts3/fts3.c 2e97a41c7b543602b06f2653e45a80040471e75faebe08cc8cc2a875e08c4573
 F src/btree.c fabc215bd1ebab0e48108e95e0f50531da9883156b95888f479f6c696db032ad
 F src/expr.c 96cf4c2996a8ff3fe2281d9f3042ec5431ab2cbd793aa30881d992918b473487
 F src/select.c bbd52d8405f0fdf70fe6643726467e39baa7402a0ab94ca0d509a28dfc689bcf
 F src/sqliteInt.h 04a6d2745c4f4849f5b8f898345e3548fe1df5aa910cc24f757ec69c9749478e
 F src/vdbe.c 907af2a69df180eb2127eb888db7d456a32e137a12786de4f977cf06a74b35a2
 F test/fts3corrupt2.test e318f0676e5e78d5a4b702637e2bb25265954c08a1b1e4aaf93c7880bb0c67d0
-F test/fts3corrupt4.test 000cc36cf50f61e51a3ae35748ea883674a9d8b797880975e10866849eefb404
+F test/fts3corrupt4.test 4664c72bb49400b6f3d86627760129ee7962e4834869909c55037ff21ccd36b8
 F test/fuzzdata8.db 9ce2e5f0d7e5e61d5f8f0817346b2a3db2aeebbaff20d04043521623ea0558be
 F test/istrue.test 06f92ea38750fa74df7dbbe6920205251c2310861fbbe23a3adfa918a2e2ba74
 F test/select3.test c49fbb758903f3718e2de5aa4655eda4838131cbea24a86db908f8b6889aa68c
 F test/selectA.test 68de52409e45a3313d00b8461b48bef4fb729faf36ade9067a994eae55cc86f4
 F test/whereG.test 9363b2a97d914cb1b81aff5069ef0cf2a071a67e2b604eac6fe9c0114017d9aa
 F test/window1.test 9d7f4990e5b36d95af93b189da4aa75216c6690ce95cced3c8b6d3234be51c2c
-P dafd2466a10f68acbe129010216f017a5fcfc048ffbc0da806d04f04e58cfcbb
-Q +10fa79d00f8091e5748c245f4cae5b5f499a5f8db20da741c130e05a21ede443
-Q +32a88bdd4be5acdc1b80856bf6e32724dc3a467d5050bec0fe1a3dfedcc06f34
-Q +44e573ecd5c2b60107133d60c51f3a04a3f904e9c1cf926e9b8ea977c7acae8d
-Q +90b1169d1b200d35a3f9f0ad2ae35a1b336bdd9b1ad0494ba80a382354c8d8b8
-Q +9a4a40c45feb2bb89020dc7711b4753479112ceae7ce2a44521d72afeddfac83
-Q +a58a6d6fb241a50c4c7c9af8a9c65bc4746e905b2ae12290c7182afa944053a2
-Q +ad738286e2441b5e84d05366db3fcafabe66be766f21fe6c17f43a8fabab16fb
-Q +cc1fffdeddf422404170fa163ab80372ae58b444d7012b2c164021b221709b3e
-R 83717039b44d13d1e2482c30f6c8121c
+P d55b8e7993997e6bd75396479c822947a1254b62c28c4bbb71b4ff4f1410a802
+Q +4adc0a1b0d84c2df6d6bf0d5d9d3fa9f7d048af8d232c4beb77518727890f212
+R f100ce1d1dd24c443d6f37be5e50d635
 U drh
-Z de07d70b676ae39dc1c19e1d06cfed27
+Z 89cb383605bae91c0693bc8d72810923
index 58ef611c3a13e096b956d9cf80cbf0ae7de774a5..abd4f26a33cbd71ea80f01a03d5966dee9134899 100644 (file)
@@ -1 +1 @@
-d55b8e7993997e6bd75396479c822947a1254b62c28c4bbb71b4ff4f1410a802
\ No newline at end of file
+ea71fb7fabcce71af05af14a8eaba3693f6bc859a18ab9f107eaac51260853fe
\ No newline at end of file
index c79a5a2379606ea1bd95eff7a1cafec6c9c33983..27b4eb53b6aa57590140e66cab96c2e820fd447b 100644 (file)
@@ -6112,4 +6112,15 @@ do_execsql_test 40.2 {
 
 set sqlite_fts3_enable_parentheses $saved
 
+#-------------------------------------------------------------------------
+reset_db
+do_execsql_test 41.1 {
+  CREATE VIRTUAL TABLE t1 USING fts3(a,b,c);
+  INSERT INTO t1_segdir VALUES(0,0,0,0,'0 835',X'000130120106000106000106001f030001030001030000083230313630363039090107000107000107000001340901050001050001050000013509010400010400010400010730303030303030091c0400010400010400000662696e6172793c0301020200030102020003010202000301020200030102020003010202000301020200030102020003010202000301020200030102020003010202000008636f3870696c657209010200010200010200000664627374617409070300010300010300010465627567090402000102000102000006656e61626c653f07020001020001020001020001020001020001020001020001020001030001010002020001020001020001020001120001020001020001020001020001020001087874656e73696f6e091f0400010400010400000466747334090a0300010300010400030135090d03000103000103000003676363090103000103000103000106656f706f6c790910030001030001030000056a736f6e310913030001030001030000046c6f6164091f030001030001030000036d6178091c02000102000102000105656d6f7279091c03000103000103000304737973350916030001030001030000066e6f636173653c02010202000301020200030102020003010202000301020200030102020003010202000301020200030102020003010202000301020200030102020000046f6d6974091f020001020001020000057274726565091903000103000103000302696d3c010102020003010202000301020200030102020003010202000301020200030102020003010202000301020200030102020003010202000301020200000a746872656164736166650922020001020001020000047674616209070400010400010400000178b401010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200010101020001010102000101010200');
+}
+
+do_execsql_test 41.2 {
+  SELECT offsets(t1) FROM t1 WHERE t1 MATCH 'rtree ner "json1^enable"';
+}
+
 finish_test