From: drh <> Date: Mon, 7 Jun 2021 11:50:23 +0000 (+0000) Subject: Fix an assert() in the OP_ParseSchema opcode that might fail on a corrupt X-Git-Tag: version-3.36.0~38 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fe972341a5a1993382aa75b3aa3eb0026c800ff2;p=thirdparty%2Fsqlite.git Fix an assert() in the OP_ParseSchema opcode that might fail on a corrupt database file when running with PRAGMA writable_schema=ON. dbsqlfuzz e7d743ca65f2767e415095f0c5a49166a0f55eea. FossilOrigin-Name: 10801f65af495a999ef61741322ea82dc20bd92ea8e55e4016c409096f38b0d1 --- diff --git a/manifest b/manifest index bb164ca6bf..71008c5556 100644 --- 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 diff --git a/manifest.uuid b/manifest.uuid index b4dc1a0dfe..0e8715fd08 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -17e26a1f5e3cc4e96b9265dcdbf54f376304b0908f3ff0a0d3df33653e77e5b6 \ No newline at end of file +10801f65af495a999ef61741322ea82dc20bd92ea8e55e4016c409096f38b0d1 \ No newline at end of file diff --git a/src/vdbe.c b/src/vdbe.c index eb5a3f0aab..cbfec41ae1 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -6361,7 +6361,9 @@ case OP_ParseSchema: { iDb = pOp->p1; assert( iDb>=0 && iDbnDb ); - 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 ){