From 7f918346589c03c45c5acc573b995ca8d12ba0bf Mon Sep 17 00:00:00 2001 From: drh <> Date: Thu, 22 Oct 2026 10:40:42 +0000 Subject: [PATCH] Extra safety margin added to sqlite3VdbeMemFromBtree(). Change suggested by Martin Mirchev. Test cases in TH3. FossilOrigin-Name: 952ae2c63e0a2007d8213132636e2e99bae113a9c7582b68b2e5a686b0777a99 --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/vdbemem.c | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/manifest b/manifest index 72c748f306..d79a6fb55d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Avoid\sreturning\sextra\srows\swhen\sthe\sRHS\sof\sa\s"rowid\s=\s"\sconstraint\son\san\sfts5\stable\sis\snot\san\sinteger\svalue.\sReport\s[bugs:/info/2026-10-20T20:31:49Z\s|\s2026-10-20T20:31:49Z]. -D 2026-10-21T15:25:33.449 +C Extra\ssafety\smargin\sadded\sto\ssqlite3VdbeMemFromBtree().\s\sChange\nsuggested\sby\sMartin\sMirchev.\s\sTest\scases\sin\sTH3. +D 2026-10-22T10:40:42.232 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -875,7 +875,7 @@ F src/vdbeInt.h 68e5ab63f184f2871780c83ce78b425d0360869611baea4c65575f91f76ac1d3 F src/vdbeapi.c aac3e0c3d7fc1da567c2b7040e14e9a30a1315c5c912d4d3c2d571d9a44523cb F src/vdbeaux.c 7e3975222531284ff14cb1be93b5751f6a3392a56d86d6329fcaa120471f56f3 F src/vdbeblob.c b3f0640db9642fbdc88bd6ebcc83d6009514cafc98f062f675f2c8d505d82692 -F src/vdbemem.c f18b437fd3c1a3a5491c649f8775feae95d81cdbc67e11deceb0fb625eacf2fa +F src/vdbemem.c 272c5b317fe0a166f28f9bdc46dbd00a9df7e3e8e5e2430e42b8b58815a4d008 F src/vdbesort.c a72ad2a629df2901fde4aa588e38590d0aa27b7d5bc3b2a416e5f295de839cc1 F src/vdbetrace.c 49e689f751505839742f4a243a1a566e57d5c9eaf0d33bbaa26e2de3febf7b41 F src/vdbevtab.c fc46b9cbd759dc013f0b3724549cc0d71379183c667df3a5988f7e2f1bd485f3 @@ -2287,8 +2287,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c -P 07ed30558ee7da460ed0ca2b36cd555aeb5caa91f0971b2cf83adc08524ca9b7 -R d7ead0348d4bdb2da6030d70089006ef -U dan -Z 5bdff69ee0f675433957ed1b7f020ea9 +P 5a09fc807377b4cfa37b06d69101530611df143bd64f3384db480797d8795fea +R ed817cc16af242fe4c94b76aad9d2d42 +U drh +Z 04a38d4844429f3559ac01e0bbee2a28 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 84dc273db2..10167286f6 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -5a09fc807377b4cfa37b06d69101530611df143bd64f3384db480797d8795fea +952ae2c63e0a2007d8213132636e2e99bae113a9c7582b68b2e5a686b0777a99 diff --git a/src/vdbemem.c b/src/vdbemem.c index 4aceb153d9..c330b93eaa 100644 --- a/src/vdbemem.c +++ b/src/vdbemem.c @@ -1475,10 +1475,10 @@ int sqlite3VdbeMemFromBtree( if( (u64)amt + (u64)offset > (u64)sqlite3BtreeMaxRecordSize(pCur) ){ return SQLITE_CORRUPT_BKPT; } - if( SQLITE_OK==(rc = sqlite3VdbeMemClearAndResize(pMem, amt+1)) ){ + if( SQLITE_OK==(rc = sqlite3VdbeMemClearAndResize(pMem, amt+8)) ){ rc = sqlite3BtreePayload(pCur, offset, amt, pMem->z); if( rc==SQLITE_OK ){ - pMem->z[amt] = 0; /* Overrun area used when reading malformed records */ + memset(pMem->z+amt,0,8); /* Overrun area for malformed records */ pMem->flags = MEM_Blob; pMem->n = (int)amt; }else{