]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Early detection of freelist size corruption in incremental vacuum.
authordrh <drh@noemail.net>
Tue, 14 Jul 2020 12:40:53 +0000 (12:40 +0000)
committerdrh <drh@noemail.net>
Tue, 14 Jul 2020 12:40:53 +0000 (12:40 +0000)
FossilOrigin-Name: f25a56c26e28abd44373230c6b5763aed35c9a7648abede8a53409dccc0bee1d

manifest
manifest.uuid
src/btree.c
test/fuzzdata8.db

index c182bbb7cae614caec06387346701b0cef04b4b1..128609c9ae2d472b8ec2a98aeca2da958cba1226 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,6 +1,6 @@
 B 7a876209a678a34c198b54ceef9e3c041f128a14dc73357f6a57cadadaa6cf7b
-C Readd\sthe\sALWAYS()\smacro\sthat\swas\sremoved\sby\s[f7a74f89dbd58b47]\sas\sthe\ncondition\sis\sno\slonger\sreachable\sdue\sto\sthe\sprevious\scheck-in.
-D 2020-07-13T15:35:08.219
+C Early\sdetection\sof\sfreelist\ssize\scorruption\sin\sincremental\svacuum.
+D 2020-07-14T12:40:53.857
 F Makefile.in 19374a5db06c3199ec1bab71ab74a103d8abf21053c05e9389255dc58083f806
 F Makefile.msc 48f5a3fc32672c09ad73795749f6253e406a31526935fbbffd8f021108d54574
 F autoconf/Makefile.am a8d1d24affe52ebf8d7ddcf91aa973fa0316618ab95bb68c87cabf8faf527dc8
@@ -15,7 +15,7 @@ F ext/lsm1/lsm_unix.c 11e0a5c19d754a4e1d93dfad06de8cc201f10f886b8e61a4c599ed34e3
 F ext/misc/decimal.c c1897f624893d1c12e3c879d97ca7d1c4a36cae10d32afe632779de78c4aaa4f
 F ext/misc/ieee754.c bb6bd8e9eeeda5a7ac82839fcab5c0b8156b0532165387cc5458a97f60047b5d
 F main.mk b1cd0bc6aedad7ebb667b7f74f835f932f60ee33be2a5c3051fd93eb465f5c75
-F src/btree.c e8a64df5ebd1e9d5184ff89fc110e048cdf7b77cc300eb51c48969ef4e71c23b
+F src/btree.c b8b0e80c8bbe4e1fb35ae559e9e9aa009799c20cf12f159ebb503b05be1fab9b
 F src/btreeInt.h 19267385aa3bc00067d48e0e4ba83ae82dc08b0c15a3b3df20ea653cb462b5bf
 F src/build.c ba1bbe563a3dc02d5fed20537603181e5289c13ea30ae5e775f552e7557adbfa
 F src/expr.c 90039a043658ce78c3237ba5064c0934b7294120f6adc387f8d0fba306028154
@@ -39,7 +39,7 @@ F test/decimal.test 12739a01bdba4c4d79f95b323e6b67b9fad1ab6ffb56116bd2b9c81a5b19
 F test/filter1.test 6c483ecf7886c8843a8612c021aa23f33c581f584151f251842b3a3592c95ac8
 F test/fkey5.test 321fd41e8754389526b2b8e8769348dc9ff23a65d4d48b19c27df17459e82ec5
 F test/fts3corrupt4.test b77dcdfa207c11d7966e71837c518cb0639c78fd109dec89c65d45a3bfd36701
-F test/fuzzdata8.db ef83ab1c8d130daabef304cb440bae2215208120de741b8476de66e16237808d
+F test/fuzzdata8.db 281cbc8166a8bc5843f4a913e803ba76e27905eb02fb9d5cfd581c2429f29855
 F test/gencol1.test b05e6c5edb9b10d48efb634ed07342441bddc89d225043e17095c36e567521a0
 F test/ieee754.test b0945d12be7d255f3dfa18e2511b17ca37e0edd2b803231c52d05b86c04ab26e
 F test/speedtest1.c a8b5afe72d78ff365012aba48d3f0c579e957facb7630f765f58a6ae4656d20d
@@ -51,7 +51,7 @@ F tool/mksqlite3c.tcl f4ef476510eca4124c874a72029f1e01bc54a896b1724e8f9eef0d8bfa
 F tool/mksqlite3h.tcl 1f5e4a1dbbbc43c83cc6e74fe32c6c620502240b66c7c0f33a51378e78fc4edf
 F tool/showlocks.c 9cc5e66d4ebbf2d194f39db2527ece92077e86ae627ddd233ee48e16e8142564
 F tool/speed-check.sh 615cbdf50f1409ef3bbf9f682e396df80f49d97ed93ed3e61c8e91fae6afde58
-P e6c2192ef88e9990c8b91755c8e779f09e23f936a17123d8e42059257b756ed7
-R 6bb073a35e650c3614329dfe9addd72f
+P 9cb03beae42d814a1b1b69f72865fde502d3f443313ec29edd010d1de40225eb
+R 6c75ad267939fa9d328d6d874eb3a742
 U drh
-Z 0642ca58347e016bdf51c35b901ea5bc
+Z 34c5068e51b7d65d7ed7e485c5f919a6
index 880efef3d21bee1fd3a6912a69a3ee90ec2bcbc4..ee6465087b7a378fee68912ddf9e595c41303a83 100644 (file)
@@ -1 +1 @@
-9cb03beae42d814a1b1b69f72865fde502d3f443313ec29edd010d1de40225eb
\ No newline at end of file
+f25a56c26e28abd44373230c6b5763aed35c9a7648abede8a53409dccc0bee1d
\ No newline at end of file
index 76069a33ebcdb38e8918f7db66de043476a82ea9..342ff2bf7e33b7a87bf78ef97ae6c3f0b94ace74 100644 (file)
@@ -3886,7 +3886,7 @@ int sqlite3BtreeIncrVacuum(Btree *p){
     Pgno nFree = get4byte(&pBt->pPage1->aData[36]);
     Pgno nFin = finalDbSize(pBt, nOrig, nFree);
 
-    if( nOrig<nFin ){
+    if( nOrig<nFin || nFree>=nOrig ){
       rc = SQLITE_CORRUPT_BKPT;
     }else if( nFree>0 ){
       rc = saveAllCursors(pBt, 0, 0);
index d45392ac7cee5a946f03d6ece6bfa3721c8a3997..abd635f0ddeb82b2f995ab1fccc6155d73f511fe 100644 (file)
Binary files a/test/fuzzdata8.db and b/test/fuzzdata8.db differ