From: drh <> Date: Mon, 10 Oct 2022 12:10:07 +0000 (+0000) Subject: Improved detection of database corrupting when moving pages on an X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e77b21b656b578e776a895af35fed52640316a82;p=thirdparty%2Fsqlite.git Improved detection of database corrupting when moving pages on an autovacuumed database when creating a new btree. dbsqlfuzz 9a55397eae13cec64aebf1fd35489c3a90bdaac5 FossilOrigin-Name: 835e191213acd3b357b912469078c01796f6119d80a56950dab95ab704eb2f87 --- diff --git a/manifest b/manifest index bc56d490f6..b3541e8a42 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\sproblem\scausing\sthe\sseek-scan\soptimization\sto\sskip\sover\svalid\srows\sthat\scould\soccur\swhen\sit\sis\sused\swith\sexpressions\sof\sthe\sform\s(a\sIN\s(?,?..)\sAND\sb\s>=\s?).\sdbsqlfuzz\sab1db6dc0efb04cba1cd3431ee6da4894fdc4520. -D 2022-10-07T19:11:22.290 +C Improved\sdetection\sof\sdatabase\scorrupting\swhen\smoving\spages\son\san\nautovacuumed\sdatabase\swhen\screating\sa\snew\sbtree.\ndbsqlfuzz\s9a55397eae13cec64aebf1fd35489c3a90bdaac5 +D 2022-10-10T12:10:07.606 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -510,7 +510,7 @@ F src/auth.c f4fa91b6a90bbc8e0d0f738aa284551739c9543a367071f55574681e0f24f8cf F src/backup.c a2891172438e385fdbe97c11c9745676bec54f518d4447090af97189fd8e52d7 F src/bitvec.c 7c849aac407230278445cb069bebc5f89bf2ddd87c5ed9459b070a9175707b3d F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6 -F src/btree.c 98e30d582239e1c940390f6487aa0d231691989a142fa863a689c021517ede08 +F src/btree.c 0fd520ec47f0b0be212150567c3fe8f15ff423d3f7afb811964a4fb458027e35 F src/btree.h 74d64b8f28cfa4a894d14d4ed64fa432cd697b98b61708d4351482ae15913e22 F src/btreeInt.h 8ce1332edd89dfd2461d561ac10a0ab5601c8e06200cb5230596c3caaf54482e F src/build.c 29fcc97af5197511788a571ed35a001eea472cbe3bcdbae88178e17fcafd4341 @@ -1980,9 +1980,9 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P dc01d9d8d898ac864811d39e7f3a47be2f179bbda137500da6874f461315d4b3 -Q +63d9efe277759d4daa29794846b60c6f55491496618f423f61468df72d0a4633 -R 55384e6cde5f657b1f4f77e3ca0dab48 +P b6be4ce6db3a891029a56a34edf61283b442fa67b4f1982e880be5cc69bd8058 +Q +327965bc71023d9380a9d6805062659108dab4bfcd386b7aba813754f270d33a +R 925d006821c3ee7dfe2d8056ab9b4c8c U drh -Z 52a758abbd21692f0699035570eb82b6 +Z 2afa1ae91cec64b653a83c6a4c6ffb8b # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index c9f97a7d27..c7d32a2c9c 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b6be4ce6db3a891029a56a34edf61283b442fa67b4f1982e880be5cc69bd8058 \ No newline at end of file +835e191213acd3b357b912469078c01796f6119d80a56950dab95ab704eb2f87 \ No newline at end of file diff --git a/src/btree.c b/src/btree.c index ebfca451b9..18ebd96d90 100644 --- a/src/btree.c +++ b/src/btree.c @@ -3747,6 +3747,9 @@ static int modifyPagePointer(MemPage *pPage, Pgno iFrom, Pgno iTo, u8 eType){ } } }else{ + if( pCell+4 > pPage->aData+pPage->pBt->usableSize ){ + return SQLITE_CORRUPT_PAGE(pPage); + } if( get4byte(pCell)==iFrom ){ put4byte(pCell, iTo); break;