From: drh <> Date: Thu, 11 Jun 2026 01:31:19 +0000 (+0000) Subject: Improved detection of corrupt node IDs in RTree shadow tables. X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=d688d1551ab00a176bc8ad198d5b0366d0be890d;p=thirdparty%2Fsqlite.git Improved detection of corrupt node IDs in RTree shadow tables. Test case in TH3. FossilOrigin-Name: e01a185a699d0c4ad2341ce2114bc826f02768735cef67179a1127229a073d03 --- diff --git a/ext/rtree/rtree.c b/ext/rtree/rtree.c index 5041cf3db2..1c0c6f4d35 100644 --- a/ext/rtree/rtree.c +++ b/ext/rtree/rtree.c @@ -761,6 +761,9 @@ static int nodeAcquire( rc = SQLITE_CORRUPT_VTAB; RTREE_IS_CORRUPT(pRtree); } + }else if( iNode<=0 ){ + RTREE_IS_CORRUPT(pRtree); + rc = SQLITE_CORRUPT_VTAB; }else if( pRtree->iNodeSize==sqlite3_blob_bytes(pRtree->pNodeBlob) ){ pNode = (RtreeNode *)sqlite3_malloc64(sizeof(RtreeNode)+pRtree->iNodeSize); if( !pNode ){ diff --git a/manifest b/manifest index 2778e29be6..2bb19ee48b 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\ssigned-integer\soverflow\sin\sfts5\sthat\smight\soccur\swhen\sdealing\swith\sstrategicly\scorrupted\srecords.\sBug\s[bugs:/info/2026-06-10T03:56:42Z\s|\s2026-06-10T03:56:42Z]. -D 2026-06-10T16:51:20.171 +C Improved\sdetection\sof\scorrupt\snode\sIDs\sin\sRTree\sshadow\stables.\nTest\scase\sin\sTH3. +D 2026-06-11T01:31:19.738 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -494,7 +494,7 @@ F ext/recover/sqlite3recover.h 011c799f02deb70ab685916f6f538e6bb32c4e0025e79bfd0 F ext/recover/test_recover.c 3d0fb1df7823f5bc22a0b93955034d16a2dfa2eb1e443e9a0123a77f120599a3 F ext/rtree/README 734aa36238bcd2dee91db5dba107d5fcbdb02396612811377a8ad50f1272b1c1 F ext/rtree/geopoly.c 77bad24162b6ae84a2fd6de3f1f8ad0b255a4ceb572f50f8771d1ac9d4d986d8 -F ext/rtree/rtree.c e350bb1c7adefab45cd4ce77e11393c7f3a9ee21c27345a684b6e1c04fae1a12 +F ext/rtree/rtree.c 0e7e3dd53ef90ab540ed991df3395f4e2e2204e85351a2e6bc3e6ae55c23640c F ext/rtree/rtree.h 4a690463901cb5e6127cf05eb8e642f127012fd5003830dbc974eca5802d9412 F ext/rtree/rtree1.test e0608db762b2aadca0ecb6f97396cf66244490adc3ba88f2a292b27be3e1da3e F ext/rtree/rtree2.test 9d9deddbb16fd0c30c36e6b4fdc3ee3132d765567f0f9432ee71e1303d32603d @@ -2209,8 +2209,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c -P 8b961dc3d27c5aa62a5dc7c2e44f8b505817e184f8499f3bb903e06b5aec1b72 -R 1f6a43a747295a1933a4aa3b45b558bb -U dan -Z d194393ed734fcf872689abff265089a +P fc6442ee54795fbeb746539193716238aa653d80170523bc327ae3ce0d945ebf +R b62a1a9be915fa38c4712f8e4e09ecb6 +U drh +Z 070cbc699c8093e05563261e6f56f802 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 1d32beea58..79c8d3d3fa 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -fc6442ee54795fbeb746539193716238aa653d80170523bc327ae3ce0d945ebf +e01a185a699d0c4ad2341ce2114bc826f02768735cef67179a1127229a073d03