From 7dcbdfa6718afb2afaf0a349e7d23a275f8377d2 Mon Sep 17 00:00:00 2001 From: drh <> Date: Sun, 25 Oct 2026 13:36:36 +0000 Subject: [PATCH] A better fix for the recover OOB write problem of the [37963c3869640f98] FossilOrigin-Name: fbe2d9fb82582c06d6f2b137270a085b76d415d551a704db7ab517207cf129bb --- ext/recover/sqlite3recover.c | 5 +++-- manifest | 12 ++++++------ manifest.uuid | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/ext/recover/sqlite3recover.c b/ext/recover/sqlite3recover.c index 198879a17a..861a672c62 100644 --- a/ext/recover/sqlite3recover.c +++ b/ext/recover/sqlite3recover.c @@ -1136,12 +1136,13 @@ static void recoverAddTable( recoverFinalize(p, pStmt); - pStmt = recoverPreparePrintf(p, p->dbOut, "PRAGMA index_xinfo(%Q)", zName); + pStmt = recoverPreparePrintf(p, p->dbOut, + "PRAGMA main.index_xinfo(%Q)", zName); while( pStmt && sqlite3_step(pStmt)==SQLITE_ROW ){ int iField = sqlite3_column_int(pStmt, 0); int iCol = sqlite3_column_int(pStmt, 1); - if( iCol>=pNew->nCol ) break; + assert( iColnCol ); pNew->aCol[iCol].iField = iField; pNew->bIntkey = 0; diff --git a/manifest b/manifest index 1cc3dc6271..facc0bed91 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\spossible\sOOB\swrite\sin\sthe\srecover\sextension\sgiven\sa\scorrupt\nschema.\s\s[bugs:/info/2026-10-25T12:08:19Z|Bug\s2026-10-25T12:08:19Z]. -D 2026-10-25T13:07:54.033 +C A\sbetter\sfix\sfor\sthe\srecover\sOOB\swrite\sproblem\sof\sthe\s[37963c3869640f98] +D 2026-10-25T13:36:36.669 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -492,7 +492,7 @@ F ext/recover/recoverpgsz.test 88766fcb810e52ee05335c456d4e5fb06d02b73d3ccb48c52 F ext/recover/recoverrowid.test f948bf4024a5f41b0e21b8af80c60564c5b5d78c05a8d64fc00787715ff9f45f F ext/recover/recoverslowidx.test c90d59c46bb8924a973ac6fbc38f3163cee38cc240256addcab1cf1a322c37dc F ext/recover/recoversql.test e66d01f95302a223bcd3fd42b5ee58dc2b53d70afa90b0d00e41e4b8eab20486 -F ext/recover/sqlite3recover.c a0107dc9d68dd76d7432f6ae18745c3b7a3425b519e870e81769880c9105fb89 +F ext/recover/sqlite3recover.c 7247eb5c3682451ab81b9bc485bf0f583f26a0a081d95094d3ca902fb8abc65b F ext/recover/sqlite3recover.h 011c799f02deb70ab685916f6f538e6bb32c4e0025e79bfd0e24ff9c74820959 F ext/recover/test_recover.c 3d0fb1df7823f5bc22a0b93955034d16a2dfa2eb1e443e9a0123a77f120599a3 F ext/rtree/README 734aa36238bcd2dee91db5dba107d5fcbdb02396612811377a8ad50f1272b1c1 @@ -2289,8 +2289,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c -P d3325353c8326ba92f03b3bdd46dc4522cd7eb3da670adb073bb060927be58c6 -R f821efa76317ac93cafa49acb96b5e04 +P 37963c3869640f9857dd4edf5e26fdca336ec71d8b1cf188507cab5fad91f681 +R c8473f1bad6272f108cca7f4f4579c7c U drh -Z ee711a829ebd704e268e13c01c48bb7d +Z b07fb998a34f92370cfe5b65817948a8 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 94e381ab0d..9b96e2f26a 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -37963c3869640f9857dd4edf5e26fdca336ec71d8b1cf188507cab5fad91f681 +fbe2d9fb82582c06d6f2b137270a085b76d415d551a704db7ab517207cf129bb