mirror of
https://git.yoctoproject.org/poky
synced 2026-10-20 18:38:18 +00:00
libxfont: Fix CVE-2026-56001
Pick patch according to [2] [1] https://nvd.nist.gov/vuln/detail/CVE-2026-56001 [2] https://security-tracker.debian.org/tracker/CVE-2026-56001 (From OE-Core rev: 5a5af4e7c55a26951827622143831d89db2f4ad5) Signed-off-by: Vijay Anusuri <vanusuri@mvista.com> Signed-off-by: Yoann Congal <yoann.congal@smile.fr> Signed-off-by: Paul Barker <paul@pbarker.dev>
This commit is contained in:
1 parent
7f9740716b
commit
32cba115e9
2 files changed
+90
No files matched your search
@@ -0,0 +1,87 @@
|
||||
From be0b08e2d354138d3222b4490e2a77c6ee42f778 Mon Sep 17 00:00:00 2001
|
||||
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Date: Mon, 1 Jun 2026 16:46:10 +1000
|
||||
Subject: [PATCH] bitscale: fix integer overflow in BitmapScaleBitmaps
|
||||
bytestoalloc
|
||||
|
||||
bytestoalloc is declared as unsigned int (32-bit). When the sum of
|
||||
per-glyph byte counts exceeds 2^32, the value wraps around and calloc()
|
||||
allocates a buffer that is too small. The subsequent ScaleBitmap loop
|
||||
then writes past the end of the allocated buffer.
|
||||
|
||||
Change bytestoalloc from unsigned int to size_t to match the actual
|
||||
allocation size type, and add an explicit overflow check in the
|
||||
accumulation loop to bail out if the total would exceed SIZE_MAX.
|
||||
|
||||
This vulnerability was discovered by:
|
||||
Anonymous working with TrendAI Zero Day Initiative
|
||||
|
||||
CVE-2026-56001/ZDI-CAN-30558
|
||||
|
||||
Assisted-by: Claude:claude-opus-4-6
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Part-of: <https://gitlab.freedesktop.org/xorg/lib/libxfont/-/merge_requests/34>
|
||||
|
||||
Note: 'SIZE_MAX' is defined in header '<stdint.h>'. Add '#include
|
||||
<stdint.h>' to fix build failure.
|
||||
|
||||
Upstream-Status: Backport [import from debian libxfont1 1.5.2-4+deb9u1
|
||||
Upstream commit https://gitlab.freedesktop.org/xorg/lib/libxfont/-/commit/be0b08e2d354138d3222b4490e2a77c6ee42f778]
|
||||
CVE: CVE-2026-56001
|
||||
Signed-off-by: Vijay Anusuri <vanusuri@mvista.com>
|
||||
---
|
||||
src/bitmap/bitscale.c | 24 +++++++++++++++++++++---
|
||||
1 file changed, 21 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/bitmap/bitscale.c b/src/bitmap/bitscale.c
|
||||
index 13ed924..32144d6 100644
|
||||
--- a/src/bitmap/bitscale.c
|
||||
+++ b/src/bitmap/bitscale.c
|
||||
@@ -38,6 +38,7 @@ from The Open Group.
|
||||
#include <X11/fonts/bitmap.h>
|
||||
#include <X11/fonts/fontutil.h>
|
||||
#include <math.h>
|
||||
+#include <stdint.h>
|
||||
|
||||
#ifndef MAX
|
||||
#define MAX(a,b) (((a)>(b)) ? a : b)
|
||||
@@ -1459,7 +1460,7 @@ BitmapScaleBitmaps(FontPtr pf, /* scaled font */
|
||||
opci;
|
||||
FontInfoPtr pfi;
|
||||
int glyph;
|
||||
- unsigned bytestoalloc = 0;
|
||||
+ size_t bytestoalloc = 0;
|
||||
int firstCol, lastCol, firstRow, lastRow;
|
||||
|
||||
double xform[4], inv_xform[4];
|
||||
@@ -1486,8 +1487,25 @@ BitmapScaleBitmaps(FontPtr pf, /* scaled font */
|
||||
glyph = pf->glyph;
|
||||
for (i = 0; i < nchars; i++)
|
||||
{
|
||||
- if ((pci = ACCESSENCODING(bitmapFont->encoding, i)))
|
||||
- bytestoalloc += BYTES_FOR_GLYPH(pci, glyph);
|
||||
+ if ((pci = ACCESSENCODING(bitmapFont->encoding, i))) {
|
||||
+ size_t glyphsize = BYTES_FOR_GLYPH(pci, glyph);
|
||||
+ if (bytestoalloc > SIZE_MAX - glyphsize) {
|
||||
+ fprintf(stderr,
|
||||
+ "Error: bitmap allocation overflow for scaled font\n");
|
||||
+ goto bail;
|
||||
+ }
|
||||
+ bytestoalloc += glyphsize;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* Reject unreasonably large bitmap allocations that could result
|
||||
+ * from malicious fonts with extreme scale factors. 256 MiB is
|
||||
+ * far beyond any legitimate scaled bitmap font. */
|
||||
+#define BITMAP_SCALE_MAX_ALLOC (256 * 1024 * 1024)
|
||||
+ if (bytestoalloc > BITMAP_SCALE_MAX_ALLOC) {
|
||||
+ fprintf(stderr,
|
||||
+ "Error: scaled bitmap size %zu exceeds limit\n", bytestoalloc);
|
||||
+ goto bail;
|
||||
}
|
||||
|
||||
/* Do we add the font malloc stuff for VALUE ADDED ? */
|
||||
--
|
||||
2.43.0
|
||||
|
||||
@@ -19,6 +19,9 @@ XORG_EXT = "tar.bz2"
|
||||
|
||||
BBCLASSEXTEND = "native"
|
||||
|
||||
SRC_URI += "file://CVE-2026-56001.patch \
|
||||
"
|
||||
|
||||
SRC_URI[md5sum] = "16eaf156edd79b68038b6a7c44aa9e9b"
|
||||
SRC_URI[sha256sum] = "1a7f7490774c87f2052d146d1e0e64518d32e6848184a18654e8d0bb57883242"
|
||||
|
||||
|
||||
Reference in new issue
Block a user