]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Improved detection of a corrupt database schema. Fix for a problem discovered
authordrh <drh@noemail.net>
Sat, 11 Jul 2020 16:42:28 +0000 (16:42 +0000)
committerdrh <drh@noemail.net>
Sat, 11 Jul 2020 16:42:28 +0000 (16:42 +0000)
by dbsqlfuzz.

FossilOrigin-Name: 30735432bc33cb953b6d7d2a2de9eb378f9740e0e663f50c727c3f138cd43a2b

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

index f6a1015369f35e4f6a2003424ce04e5a1e010b04..207e47c1919c533bc000ec4ac15a53ea6ee07698 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,6 +1,6 @@
 B 7a876209a678a34c198b54ceef9e3c041f128a14dc73357f6a57cadadaa6cf7b
-C Remove\sunnecessary\scode\sfrom\sthe\swindow\sfunctions\simplementation.
-D 2020-07-10T21:43:53.474
+C Improved\sdetection\sof\sa\scorrupt\sdatabase\sschema.\sFix\sfor\sa\sproblem\sdiscovered\nby\sdbsqlfuzz.
+D 2020-07-11T16:42:28.397
 F Makefile.in 19374a5db06c3199ec1bab71ab74a103d8abf21053c05e9389255dc58083f806
 F Makefile.msc 48f5a3fc32672c09ad73795749f6253e406a31526935fbbffd8f021108d54574
 F autoconf/Makefile.am a8d1d24affe52ebf8d7ddcf91aa973fa0316618ab95bb68c87cabf8faf527dc8
@@ -13,7 +13,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 e8e4a7e4727f0ead6433fdafeff347bf078fec39bee55a24441c3481e5b85164
+F src/btree.c e8a64df5ebd1e9d5184ff89fc110e048cdf7b77cc300eb51c48969ef4e71c23b
 F src/btreeInt.h 19267385aa3bc00067d48e0e4ba83ae82dc08b0c15a3b3df20ea653cb462b5bf
 F src/build.c ba1bbe563a3dc02d5fed20537603181e5289c13ea30ae5e775f552e7557adbfa
 F src/expr.c 73bd71448acb4f9a69c8c05e30281a9e982bb7de8f91a9c93b742dec09280442
@@ -36,7 +36,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 0ae860b36b79fd41cafddc9e6602358b2d5c331cf200283221e659f86e196c0c
+F test/fuzzdata8.db ef83ab1c8d130daabef304cb440bae2215208120de741b8476de66e16237808d
 F test/gencol1.test b05e6c5edb9b10d48efb634ed07342441bddc89d225043e17095c36e567521a0
 F test/ieee754.test b0945d12be7d255f3dfa18e2511b17ca37e0edd2b803231c52d05b86c04ab26e
 F test/speedtest1.c a8b5afe72d78ff365012aba48d3f0c579e957facb7630f765f58a6ae4656d20d
@@ -47,7 +47,7 @@ F tool/mksqlite3c.tcl f4ef476510eca4124c874a72029f1e01bc54a896b1724e8f9eef0d8bfa
 F tool/mksqlite3h.tcl 1f5e4a1dbbbc43c83cc6e74fe32c6c620502240b66c7c0f33a51378e78fc4edf
 F tool/showlocks.c 9cc5e66d4ebbf2d194f39db2527ece92077e86ae627ddd233ee48e16e8142564
 F tool/speed-check.sh 615cbdf50f1409ef3bbf9f682e396df80f49d97ed93ed3e61c8e91fae6afde58
-P 5124732370fd53c93314c9c79b4251bd46ce81c2e7aa4f59e2c1889cc4263d5a
-R ea3bc4c92fd2088a0776485a898bb94e
+P 1e87da9c93309d1d69b1e0ab65c615b9ff9c1c6813ad0c7b90d2495be4ba0adc
+R ff70a39063eed43e9dd438f7258ce866
 U drh
-Z 8fbb30c3fa3021d385b71d6a00620564
+Z d54b70f0c5aff12e31d9bd93382c262a
index 739a48e326a314acc227e71dbe657fcaed3f4289..b8d5fa2b63fecc864065c50e9c20b4d209f9f0ee 100644 (file)
@@ -1 +1 @@
-1e87da9c93309d1d69b1e0ab65c615b9ff9c1c6813ad0c7b90d2495be4ba0adc
\ No newline at end of file
+30735432bc33cb953b6d7d2a2de9eb378f9740e0e663f50c727c3f138cd43a2b
\ No newline at end of file
index 00915abec597c9ecd5596c1d6657f2d4f25e9be6..76069a33ebcdb38e8918f7db66de043476a82ea9 100644 (file)
@@ -8772,7 +8772,11 @@ int sqlite3BtreeInsert(
   assert( pPage->intKey || pX->nKey>=0 );
   assert( pPage->leaf || !pPage->intKey );
   if( pPage->nFree<0 ){
-    rc = btreeComputeFreeSpace(pPage);
+    if( pCur->eState>CURSOR_INVALID ){
+      rc = SQLITE_CORRUPT_BKPT;
+    }else{
+      rc = btreeComputeFreeSpace(pPage);
+    }
     if( rc ) return rc;
   }
 
index 77e2b9fa15a0bef2a790961f44f27ae4e126cf86..d45392ac7cee5a946f03d6ece6bfa3721c8a3997 100644 (file)
Binary files a/test/fuzzdata8.db and b/test/fuzzdata8.db differ