]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Enhance the btree search routine so that it does early detection of
authordrh <drh@noemail.net>
Mon, 21 Jan 2019 23:18:22 +0000 (23:18 +0000)
committerdrh <drh@noemail.net>
Mon, 21 Jan 2019 23:18:22 +0000 (23:18 +0000)
impossibly large keys and thereby avoids a large malloc() call.

FossilOrigin-Name: 3ecaaee69f49e43d38047b7d53b82689eba7f7d33541fcac3c32b6dc8a568458

manifest
manifest.uuid
src/btree.c

index f5e6099afd5114e12897011b19d53b419a76f467..ce5d58bd974db0803f701e0236b927f50e820fec 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Avoid\sdeferencing\sa\sfreed\spointer\sfollowing\san\sOOM\sor\sSQLITE_CORRUPT\serror\sin\nthe\sfts3\sxDestroy\smethod.
-D 2019-01-21T17:57:31.980
+C Enhance\sthe\sbtree\ssearch\sroutine\sso\sthat\sit\sdoes\searly\sdetection\sof\s\nimpossibly\slarge\skeys\sand\sthereby\savoids\sa\slarge\smalloc()\scall.
+D 2019-01-21T23:18:22.833
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F Makefile.in 0e7c107ebcaff26681bc5bcf017557db85aa828d6f7fd652d748b7a78072c298
@@ -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 73f282db4563a61e5da794a4c39f287eaceca08697a25012440b431f9cf7d2b6
+F src/btree.c 315ccbc0d23ec50c4b65c35bc64ff89f20575ab25a5605a01ae726461ba5dc6f
 F src/btree.h febb2e817be499570b7a2e32a9bbb4b607a9234f6b84bb9ae84916d4806e96f2
 F src/btreeInt.h 620ab4c7235f43572cf3ac2ac8723cbdf68073be4d29da24897c7b77dda5fd96
 F src/build.c f07c0b154c23737d1699ee63bba31c8ca8b323e2446b957bc6bfec81a62295fc
@@ -1801,7 +1801,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 6c33a303ebbb0f5193ead535280ba63118e14fb4f9977ce80dc716a0b082ec99
-R e88cdc4de46d06ba3ca3ee3037135e9c
-U dan
-Z 87d80b21089859763e2507d5a0c47674
+P 505ed9a47825240979338a24044559613fbbd2a7850bdff70c7164da054ec63d
+R e2e2c083d84dd4ed74c396601ff8b668
+U drh
+Z e752d990073956697e5a14d1f923521d
index 63bdb65e8a51dfd9e6659a9a0925da3ac11d8617..eaf6920801154952d28bb3e297f6944ddc35e565 100644 (file)
@@ -1 +1 @@
-505ed9a47825240979338a24044559613fbbd2a7850bdff70c7164da054ec63d
\ No newline at end of file
+3ecaaee69f49e43d38047b7d53b82689eba7f7d33541fcac3c32b6dc8a568458
\ No newline at end of file
index bec3eebebe0d93864526602eadf2932be5ba2a10..c42f80f70db92c7216a63cd229fe2db477f290be 100644 (file)
@@ -5475,7 +5475,7 @@ int sqlite3BtreeMovetoUnpacked(
           testcase( nCell==0 );  /* Invalid key size:  0x80 0x80 0x00 */
           testcase( nCell==1 );  /* Invalid key size:  0x80 0x80 0x01 */
           testcase( nCell==2 );  /* Minimum legal index key size */
-          if( nCell<2 ){
+          if( nCell<2 || nCell/pCur->pBt->usableSize>pCur->pBt->nPage ){
             rc = SQLITE_CORRUPT_PAGE(pPage);
             goto moveto_finish;
           }