All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] lib/LzmaEnc: Validate 'len' before subtracting
@ 2025-06-10 17:47 Lidong Chen via Grub-devel
  2025-06-10 17:58 ` sudhakar
  2025-06-10 18:13 ` Ross Philipson via Grub-devel
  0 siblings, 2 replies; 4+ messages in thread
From: Lidong Chen via Grub-devel @ 2025-06-10 17:47 UTC (permalink / raw)
  To: grub-devel, daniel.kiper; +Cc: Lidong Chen, ross.philipson

In LzmaEnc_CodeOneBlock(), both GetOptimumFast() and GetOptimum()
returns a value of greater or equal to 1, which is assigned to
'len'. But since LZMA_MATCH_LEN_MIN == 2, 'len' should be validated
before performing "len - LZMA_MATCH_LEN_MIN" to avoid underflow
when 'len' equals to 1.

Fixed: CID 51508

Signed-off-by: Lidong Chen <lidong.chen@oracle.com>
---
 grub-core/lib/LzmaEnc.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/grub-core/lib/LzmaEnc.c b/grub-core/lib/LzmaEnc.c
index 52b331558..d74e96303 100644
--- a/grub-core/lib/LzmaEnc.c
+++ b/grub-core/lib/LzmaEnc.c
@@ -1880,6 +1880,11 @@ static SRes LzmaEnc_CodeOneBlock(CLzmaEnc *p, Bool useLimits, UInt32 maxPackSize
         UInt32 posSlot, lenToPosState;
         RangeEnc_EncodeBit(&p->rc, &p->isRep[p->state], 0);
         p->state = kMatchNextStates[p->state];
+	if (len < LZMA_MATCH_LEN_MIN)
+	  {
+	    p->result = SZ_ERROR_DATA;
+	    return CheckErrors(p);
+	  }
         LenEnc_Encode2(&p->lenEnc, &p->rc, len - LZMA_MATCH_LEN_MIN, posState, !p->fastMode, p->ProbPrices);
         pos -= LZMA_NUM_REPS;
         GetPosSlot(pos, posSlot);
-- 
2.34.1


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-06-11  1:20 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-10 17:47 [PATCH] lib/LzmaEnc: Validate 'len' before subtracting Lidong Chen via Grub-devel
2025-06-10 17:58 ` sudhakar
2025-06-10 18:13 ` Ross Philipson via Grub-devel
2025-06-11  1:19   ` Lidong Chen via Grub-devel

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.