From 12fe9a0d2512ebbbcc9c492af187ff76404b913e Mon Sep 17 00:00:00 2001 From: drh Date: Tue, 19 Feb 2019 16:42:54 +0000 Subject: [PATCH] Fix an assert() that might not be true if the database file is corrupt. FossilOrigin-Name: f2d400db4dbfb05e2540178ed3662f97f8c57a95f8129886c7081c35e53adf0d --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/btree.c | 2 +- test/fuzzdata8.db | Bin 987136 -> 991232 bytes 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/manifest b/manifest index c980667aed..d4cd296435 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C New\sassert()\sto\sverify\sthe\sTF_HasprimaryKey\sflag. -D 2019-02-19T13:51:58.095 +C Fix\san\sassert()\sthat\smight\snot\sbe\strue\sif\sthe\sdatabase\sfile\sis\scorrupt. +D 2019-02-19T16:42:54.196 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F Makefile.in 178d8eb6840771149cee40b322d1b3be30d330198c522c903c1b66fb5a1bfca4 @@ -455,7 +455,7 @@ F src/auth.c 0fac71038875693a937e506bceb492c5f136dd7b1249fbd4ae70b4e8da14f9df F src/backup.c 78d3cecfbe28230a3a9a1793e2ead609f469be43e8f486ca996006be551857ab F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33 F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6 -F src/btree.c 2105865a621c211cd76d8d21a6831249c31c876d7d1fe7d7ebe27410cd893747 +F src/btree.c 026f48c39b179a5602423904fcaaae87bbd75f659fd672b3756fea43356d9909 F src/btree.h 63b94fb38ce571c15eb6a3661815561b501d23d5948b2d1e951fbd7a2d04e8d3 F src/btreeInt.h 6111c15868b90669f79081039d19e7ea8674013f907710baa3c814dc3f8bfd3f F src/build.c ac41c86b486f480b2bcad7e55c6cc19d7151082f74682ab048c45980d6c9ddac @@ -992,7 +992,7 @@ F test/fuzzdata4.db b502c7d5498261715812dd8b3c2005bad08b3a26e6489414bd13926cd3e4 F test/fuzzdata5.db e35f64af17ec48926481cfaf3b3855e436bd40d1cfe2d59a9474cb4b748a52a5 F test/fuzzdata6.db 92a80e4afc172c24f662a10a612d188fb272de4a9bd19e017927c95f737de6d7 F test/fuzzdata7.db 3fc78e65dfe0be9df9e262075d5a335f18f627da47dfc691d1a7b822f34d4b99 -F test/fuzzdata8.db b7f93d26fb1d29af7c5181eda877f1a20bdbb3d286bc14622e77d08752b6da61 +F test/fuzzdata8.db 04d95f81db43fa4a247531d25573544125d9dd2777ae43594c9eb57e2a8b901c F test/fuzzer1.test 3d4c4b7e547aba5e5511a2991e3e3d07166cfbb8 F test/fuzzer2.test a85ef814ce071293bce1ad8dffa217cbbaad4c14 F test/fuzzerfault.test 8792cd77fd5bce765b05d0c8e01b9edcf8af8536 @@ -1804,7 +1804,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 55d43adc894a6b1e0f77bf481dad6dd604a0dc0022e72bbf2e3037f97351971e -R 4957484ea90ae4ee926291ee2f0443fe +P 0abace8a7aecca01c8677d07f3ec1bafb289ceffe5bcd60284701a7bf813f415 +R bfae54bdd2f15a7a8fbc764b3228c6f1 U drh -Z 06b0b1933b49b6d18ffce83176015625 +Z aaec93d3bd3865148d42c2428c55baee diff --git a/manifest.uuid b/manifest.uuid index a65f486535..7a8eaf1d80 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -0abace8a7aecca01c8677d07f3ec1bafb289ceffe5bcd60284701a7bf813f415 \ No newline at end of file +f2d400db4dbfb05e2540178ed3662f97f8c57a95f8129886c7081c35e53adf0d \ No newline at end of file diff --git a/src/btree.c b/src/btree.c index 0a8e6a99e4..aa2c84999c 100644 --- a/src/btree.c +++ b/src/btree.c @@ -8261,7 +8261,7 @@ static int balance_deeper(MemPage *pRoot, MemPage **ppChild){ } assert( sqlite3PagerIswriteable(pChild->pDbPage) ); assert( sqlite3PagerIswriteable(pRoot->pDbPage) ); - assert( pChild->nCell==pRoot->nCell ); + assert( pChild->nCell==pRoot->nCell || CORRUPT_DB ); TRACE(("BALANCE: copy root %d into %d\n", pRoot->pgno, pChild->pgno)); diff --git a/test/fuzzdata8.db b/test/fuzzdata8.db index 6ae5d76f4a9e4ea18af4be55f09953fec3f0e3f3..ed0d3497b4622f8ea25c591ae96612ee07a24d8e 100644 GIT binary patch delta 15031 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 MOy6X_WUVjxKfUtmw*UYD delta 14454 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 -- 2.47.3