1
0
mirror of https://github.com/sqlite/sqlite.git synced 2026-10-23 21:49:02 +03:00

Extra safety margin added to sqlite3VdbeMemFromBtree(). Change

suggested by Martin Mirchev.  Test cases in TH3.

FossilOrigin-Name: 952ae2c63e0a2007d8213132636e2e99bae113a9c7582b68b2e5a686b0777a99
This commit is contained in:
drh
2026-10-22 10:40:42 +00:00
parent 0269dadc3d
commit 7f91834658
3 changed files with 10 additions and 10 deletions

View File

@@ -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.

View File

@@ -1 +1 @@
5a09fc807377b4cfa37b06d69101530611df143bd64f3384db480797d8795fea
952ae2c63e0a2007d8213132636e2e99bae113a9c7582b68b2e5a686b0777a99

View File

@@ -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{