From aff0fd483c24ea83377824dbcbd17fad374594b2 Mon Sep 17 00:00:00 2001 From: drh Date: Wed, 6 Mar 2019 14:08:41 +0000 Subject: [PATCH] Add an "|| CORRUPT_DB" term to an assert() that might be false if the database is corrupt. Also add a branch to have sqlite3PagerMovepage() return SQLITE_CORRUPT in that case. FossilOrigin-Name: b0d5cf40bba34e459caa7480bc84a1d75496c2ab52029f4bb0a31f2d9369a8ee --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/pager.c | 6 +++++- test/fuzzdata8.db | Bin 1021952 -> 1031168 bytes 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/manifest b/manifest index 95aabe0a74..35badc253c 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\spotential\s32-bit\sinteger\soverflow\sin\sthe\s"showdb"\sutility\sprogram\swhen\nit\sis\strying\sto\sinterpret\sa\scorrupt\sdatabase\sfile. -D 2019-03-05T23:49:17.602 +C Add\san\s"||\sCORRUPT_DB"\sterm\sto\san\sassert()\sthat\smight\sbe\sfalse\sif\sthe\sdatabase\nis\scorrupt.\s\sAlso\sadd\sa\sbranch\sto\shave\ssqlite3PagerMovepage()\sreturn\nSQLITE_CORRUPT\sin\sthat\scase. +D 2019-03-06T14:08:41.132 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F Makefile.in 1ad7263f38329c0ecea543c80f30af839ee714ea77fc391bf1a3fbb919a5b6b5 @@ -502,7 +502,7 @@ F src/os_setup.h 0dbaea40a7d36bf311613d31342e0b99e2536586 F src/os_unix.c 2b9604eb5c12f40a0613e832b6267f5814f84479d570d482ba6f98d7affa7c1c F src/os_win.c 85d9e532d0444ab6c16d7431490c2e279e282aa0917b0e988996b1ae0de5c5a0 F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a -F src/pager.c 5ff85a1dafdbbc3d27e21dbb52ac02066507b1e2d7da4cd4961408eed2cce23a +F src/pager.c 422fd8cfa59fb9173eff36a95878904a0eeb0dcc62ba49350acc8b1e51c4dc7b F src/pager.h 217921e81eb5fe455caa5cda96061959706bcdd29ddb57166198645ef7822ac3 F src/parse.y 741a270b7f2f85bc5d026d06fb5a9ccba5335304ff2831e1cb44b36cd0da6006 F src/pcache.c 696a01f1a6370c1b50a09c15972bc3bee3333f8fcd1f2da8e9a76b1b062c59ee @@ -993,7 +993,7 @@ F test/fuzzdata4.db b502c7d5498261715812dd8b3c2005bad08b3a26e6489414bd13926cd3e4 F test/fuzzdata5.db e35f64af17ec48926481cfaf3b3855e436bd40d1cfe2d59a9474cb4b748a52a5 F test/fuzzdata6.db 92a80e4afc172c24f662a10a612d188fb272de4a9bd19e017927c95f737de6d7 F test/fuzzdata7.db 7b04dfb4e2e28f7174d0b83920ee564ebb5261e23f0b843c383a7868788a300c -F test/fuzzdata8.db bcdd2175b8876c3679aa1c00874a9f69368f464e498f800d3917bd74a0563127 +F test/fuzzdata8.db f6906d0e04c050e661272aba5f82cf35eb232e25493850bba5a5f339dddb7327 F test/fuzzer1.test 3d4c4b7e547aba5e5511a2991e3e3d07166cfbb8 F test/fuzzer2.test a85ef814ce071293bce1ad8dffa217cbbaad4c14 F test/fuzzerfault.test 8792cd77fd5bce765b05d0c8e01b9edcf8af8536 @@ -1806,7 +1806,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 38d2e510cdedf38153466b161c0842b1604aef7b5589c51f628ae7cbb6a8722a -R 5f08c12dd4cf8ba7c214856356c2450a +P 3803e750384ec37091b0a6c350f8ef67720e316fd6f74c95e3c5f231c4a01ceb +R 5ce5e7502772fd8fb0367a42a020f65d U drh -Z fa7715e4b91d1f3064235b4ac30911e1 +Z e5a870506571dc7c7e8d899a4f9fe623 diff --git a/manifest.uuid b/manifest.uuid index 3ba75e5ce1..84f7877ee1 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -3803e750384ec37091b0a6c350f8ef67720e316fd6f74c95e3c5f231c4a01ceb \ No newline at end of file +b0d5cf40bba34e459caa7480bc84a1d75496c2ab52029f4bb0a31f2d9369a8ee \ No newline at end of file diff --git a/src/pager.c b/src/pager.c index 9dd3dfe007..24c7a2d569 100644 --- a/src/pager.c +++ b/src/pager.c @@ -7177,8 +7177,12 @@ int sqlite3PagerMovepage(Pager *pPager, DbPage *pPg, Pgno pgno, int isCommit){ */ pPg->flags &= ~PGHDR_NEED_SYNC; pPgOld = sqlite3PagerLookup(pPager, pgno); - assert( !pPgOld || pPgOld->nRef==1 ); + assert( !pPgOld || pPgOld->nRef==1 || CORRUPT_DB ); if( pPgOld ){ + if( pPgOld->nRef>1 ){ + sqlite3PagerUnrefNotNull(pPgOld); + return SQLITE_CORRUPT_BKPT; + } pPg->flags |= (pPgOld->flags&PGHDR_NEED_SYNC); if( pPager->tempFile ){ /* Do not discard pages from an in-memory database since we might diff --git a/test/fuzzdata8.db b/test/fuzzdata8.db index 230960b9d9e2b144b800e203900d61bce23e5e56..7f0897dec5d8e0682caf7b3d5505e4c12d82d870 100644 GIT binary patch delta 23668 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 delta 16742 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