]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
When running an incremental vacuum, detect growth in the size of the database
authordrh <>
Wed, 15 Jun 2022 14:57:04 +0000 (14:57 +0000)
committerdrh <>
Wed, 15 Jun 2022 14:57:04 +0000 (14:57 +0000)
file (which can only occur if the file is corrupt) and fail with SQLITE_CORRUPT.

FossilOrigin-Name: cd7a44124558ea6a43c89b1cba4402d7bf6a6ccb83be0eeb7dd01b56933bca73

manifest
manifest.uuid
src/btree.c

index fbd67a553aa26f0f0b076fd306103db4cfffcc52..f2f58ab32bb3b8961d451c703504d98c01152bcf 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sthe\s--query-invariants\soption\sto\sfuzzcheck.\s\sNo\schanges\sto\sthe\sSQLite\score.
-D 2022-06-15T12:50:51.305
+C When\srunning\san\sincremental\svacuum,\sdetect\sgrowth\sin\sthe\ssize\sof\sthe\sdatabase\nfile\s(which\scan\sonly\soccur\sif\sthe\sfile\sis\scorrupt)\sand\sfail\swith\sSQLITE_CORRUPT.
+D 2022-06-15T14:57:04.251
 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 6f12c520c386fa56b16c2db67de6227786ca811d9c8b0e83b6a8829a10cb0d38
+F src/btree.c cc49f394c156f101ff12449a21ec1478f60e1bbd287fbf5fec8c2322dc55cccd
 F src/btree.h 74d64b8f28cfa4a894d14d4ed64fa432cd697b98b61708d4351482ae15913e22
 F src/btreeInt.h 8ce1332edd89dfd2461d561ac10a0ab5601c8e06200cb5230596c3caaf54482e
 F src/build.c 23f874642825d7eaaeeb7a3281b2b1a75e1d4c4dd9ae4dceddcd908266634214
@@ -1977,9 +1977,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 988a2a759f2b9da0e287e65306039b7a3e2b5aac3d31fe15cbb30d30ea6caf71 d13b4621291831ff33cc4a8d53653eaa3f59fecf2fbc5d404db17e33a914495d
-R 954f4b32b5c4881e57e563fd72566597
-T +closed d13b4621291831ff33cc4a8d53653eaa3f59fecf2fbc5d404db17e33a914495d
+P fef282f9fbb10967102f9676d85b8c6a3b36aff7109f1becdaeaeddef0dff4f1
+R a5fe9d41c5873f090af7d61350af7dff
 U drh
-Z 50169eb96e3eb3e12f6092ce44911480
+Z b3c7fcb81f6ca7a7c7393e5acbb520dd
 # Remove this line to create a well-formed Fossil manifest.
index 59bc7981046d4bbb79453f8727d787466ea81617..27831e289b4947b8357cddcfad82c2aa18427ead 100644 (file)
@@ -1 +1 @@
-fef282f9fbb10967102f9676d85b8c6a3b36aff7109f1becdaeaeddef0dff4f1
\ No newline at end of file
+cd7a44124558ea6a43c89b1cba4402d7bf6a6ccb83be0eeb7dd01b56933bca73
\ No newline at end of file
index 773e4cb9267af5e5d9bbe06c26e7d41e22973bbb..8ed4d6cef4b416a27b4d8a9b311780619a288a6a 100644 (file)
@@ -3933,12 +3933,17 @@ static int incrVacuumStep(BtShared *pBt, Pgno nFin, Pgno iLastPg, int bCommit){
       }
       do {
         MemPage *pFreePg;
+        Pgno dbSize = btreePagecount(pBt);
         rc = allocateBtreePage(pBt, &pFreePg, &iFreePg, iNear, eMode);
         if( rc!=SQLITE_OK ){
           releasePage(pLastPg);
           return rc;
         }
         releasePage(pFreePg);
+        if( iFreePg>dbSize ){
+          releasePage(pLastPg);
+          return SQLITE_CORRUPT_BKPT;
+        }
       }while( bCommit && iFreePg>nFin );
       assert( iFreePg<iLastPg );