From: drh <> Date: Tue, 1 Mar 2022 16:22:54 +0000 (+0000) Subject: Fix two assert() statements in btree.c which were not true in the case of X-Git-Tag: version-3.39.0~354 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=3703429cdb955dedb52378338f37494910730425;p=thirdparty%2Fsqlite.git Fix two assert() statements in btree.c which were not true in the case of a corrupt database file. [forum:/forumpost/14819f2063|Forum post 14819f2063]. FossilOrigin-Name: 3b36ed79d82fae47a08a7d27f4fcefb7978fdf0e7f8c0f4a82f59501f201b32b --- diff --git a/manifest b/manifest index b1024b6817..a085c17a7e 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sslightly-incorrect\sassert()\sstatements.\n[forum:/forumpost/f1e83b77b5ff37db|Forum\spost\sf1e83b77b5ff37db] -D 2022-03-01T15:48:16.615 +C Fix\stwo\sassert()\sstatements\sin\sbtree.c\swhich\swere\snot\strue\sin\sthe\scase\sof\na\scorrupt\sdatabase\sfile.\n[forum:/forumpost/14819f2063|Forum\spost\s14819f2063]. +D 2022-03-01T16:22:54.591 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -492,7 +492,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 e9b7ca07afe4005dcd047b49181c960528e56a0a67797ec4c09a65a15cf7cfa4 +F src/btree.c 7ca88aa5572d21cbcb76b59f8264a1fbe14ed705af45e3cc0e7d4d8eb1a7e393 F src/btree.h 74d64b8f28cfa4a894d14d4ed64fa432cd697b98b61708d4351482ae15913e22 F src/btreeInt.h 7282a6e77775f93a6eb78d3a41dab372a01a4ec1d93d3b4728d191d15fda42e2 F src/build.c 9891c2160886cf7e344d7e8f1f7177f9612916c7c67ffeacd64cb34a92d387a8 @@ -1944,8 +1944,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 12c012162ce110a7a7fbbe853f422e23cb4ae10b45237727328c8f3315b70842 -R 0ec794fb0f5ba9deb5bc4890e9cda4ec +P 3c9f5c9defd7d36684132ae4ade9db2e2148dad4bd91bfe9374620ecafc35348 +R d7be88b69a61c70ed08f890c1f637015 U drh -Z 0cf3035e6ec855c63a0dc18af5169a25 +Z 0293e7f5122586d466d085516d14c5f5 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index af1a9cc6ca..789a849565 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -3c9f5c9defd7d36684132ae4ade9db2e2148dad4bd91bfe9374620ecafc35348 \ No newline at end of file +3b36ed79d82fae47a08a7d27f4fcefb7978fdf0e7f8c0f4a82f59501f201b32b \ No newline at end of file diff --git a/src/btree.c b/src/btree.c index 08ea6f29c8..f26e1753f9 100644 --- a/src/btree.c +++ b/src/btree.c @@ -2142,7 +2142,7 @@ static void zeroPage(MemPage *pPage, int flags){ u8 hdr = pPage->hdrOffset; u16 first; - assert( sqlite3PagerPagenumber(pPage->pDbPage)==pPage->pgno ); + assert( sqlite3PagerPagenumber(pPage->pDbPage)==pPage->pgno || CORRUPT_DB ); assert( sqlite3PagerGetExtra(pPage->pDbPage) == (void*)pPage ); assert( sqlite3PagerGetData(pPage->pDbPage) == data ); assert( sqlite3PagerIswriteable(pPage->pDbPage) ); @@ -2284,7 +2284,7 @@ static int getAndInitPage( goto getAndInitPage_error2; } } - assert( (*ppPage)->pgno==pgno ); + assert( (*ppPage)->pgno==pgno || CORRUPT_DB ); assert( (*ppPage)->aData==sqlite3PagerGetData(pDbPage) ); /* If obtaining a child page for a cursor, we must verify that the page is