]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix an assert() in the OP_ParseSchema opcode that might fail on a corrupt
authordrh <>
Mon, 7 Jun 2021 11:50:23 +0000 (11:50 +0000)
committerdrh <>
Mon, 7 Jun 2021 11:50:23 +0000 (11:50 +0000)
database file when running with PRAGMA writable_schema=ON.
dbsqlfuzz e7d743ca65f2767e415095f0c5a49166a0f55eea.

FossilOrigin-Name: 10801f65af495a999ef61741322ea82dc20bd92ea8e55e4016c409096f38b0d1

manifest
manifest.uuid
src/vdbe.c

index bb164ca6bf2eeee59a8782e90c0e4f6e42985218..71008c5556c011ecdb759de02a62889c75891dd4 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Remove\sunnecessary\send-of-line\swhitespace\sfrom\sthe\sregexp.c\sextension.
-D 2021-06-07T00:54:38.895
+C Fix\san\sassert()\sin\sthe\sOP_ParseSchema\sopcode\sthat\smight\sfail\son\sa\scorrupt\ndatabase\sfile\swhen\srunning\swith\sPRAGMA\swritable_schema=ON.\ndbsqlfuzz\se7d743ca65f2767e415095f0c5a49166a0f55eea.
+D 2021-06-07T11:50:23.565
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -616,7 +616,7 @@ F src/upsert.c df8f1727d62b5987c4fd302cd4d7c0c84ae57cd65683c5a34a740dfe24039235
 F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0
 F src/util.c 41c7a72da1df47864faa378a1c720b38adb288c6838cb6be5594511b6287a048
 F src/vacuum.c 492422c1463c076473bae1858799c7a0a5fe87a133d1223239447c422cd26286
-F src/vdbe.c a51f4947380b0561ef70730e1144bf3837216cfea61a59a498149d47eeb09943
+F src/vdbe.c 87d29d763c0398d8128ecc9f043aab7108123b15c919ec92d4b57e5e4385818c
 F src/vdbe.h 25dabb25c7e157b84e59260cfb5b466c3ac103ede9f36f4db371332c47601abe
 F src/vdbeInt.h 58980223a32495ad059d10581b83e133abdc77248b1bab85c080cab8a13bd819
 F src/vdbeapi.c d9e99daf59fec928986838b3389a7337e82fec6b3b5de30206cb99fb4661b94e
@@ -1918,7 +1918,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 2aa9368b63b42ac7c700516f109edcc6098c12b850eae591afed4e51a3f41819
-R 6410a80813c7a5acd6639014bb0b3850
+P 17e26a1f5e3cc4e96b9265dcdbf54f376304b0908f3ff0a0d3df33653e77e5b6
+R 2008131d3502f721f33346d6e5ea4f59
 U drh
-Z e86420a701d8182f7faf4cd935aa8498
+Z 608a44948c135ddd98aa43f877710cc1
index b4dc1a0dfe717c3986ee0a106a8d0595eb5546ec..0e8715fd086b956b147c98ca288685de61aca4e9 100644 (file)
@@ -1 +1 @@
-17e26a1f5e3cc4e96b9265dcdbf54f376304b0908f3ff0a0d3df33653e77e5b6
\ No newline at end of file
+10801f65af495a999ef61741322ea82dc20bd92ea8e55e4016c409096f38b0d1
\ No newline at end of file
index eb5a3f0aabf1220a3377bc696b8415f638331f6b..cbfec41ae1b6daca196dc6f2848c45d1d26735ff 100644 (file)
@@ -6361,7 +6361,9 @@ case OP_ParseSchema: {
 
   iDb = pOp->p1;
   assert( iDb>=0 && iDb<db->nDb );
-  assert( DbHasProperty(db, iDb, DB_SchemaLoaded) || db->mallocFailed );
+  assert( DbHasProperty(db, iDb, DB_SchemaLoaded)
+           || db->mallocFailed
+           || (CORRUPT_DB && (db->flags & SQLITE_NoSchemaError)!=0) );
 
 #ifndef SQLITE_OMIT_ALTERTABLE
   if( pOp->p4.z==0 ){