mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-08-31 03:45:41 +00:00
poppler: fix CVE-2026-10118
A flaw was found in Poppler's Splash backend. A remote attacker could exploit this vulnerability by crafting a malicious PDF file that, when rendered, triggers an integer overflow in the `tilingPatternFill` function. This overflow leads to an undersized heap memory allocation, allowing a subsequent out-of-bounds write. Successful exploitation could result in arbitrary code execution, information disclosure, or denial of service within the context of the application processing the PDF. Backport patch to fix CVE-2026-10118. Reference: [https://nvd.nist.gov/vuln/detail/CVE-2026-10118] [https://gitlab.freedesktop.org/poppler/poppler/-/work_items/1715] Upstream Patch: [https://gitlab.freedesktop.org/poppler/poppler/-/commit/8352264766652b98336e92359a70b3161a9ab97a] Signed-off-by: Abhishek Bachiphale <Abhishek.Bachiphale@windriver.com> Signed-off-by: Anuj Mittal <anuj.mittal@oss.qualcomm.com>
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
From 8352264766652b98336e92359a70b3161a9ab97a Mon Sep 17 00:00:00 2001
|
||||
From: Marek Kasik <mkasik@redhat.com>
|
||||
Date: Thu, 21 May 2026 17:51:51 +0200
|
||||
Subject: [PATCH] SplashOutputDev: Fix integer overflow in tilingPatternFill
|
||||
|
||||
Use checkedMultiply() to check integer multiplication of surface size
|
||||
and number of repetitions to avoid integer overflow and possible memory issues.
|
||||
|
||||
Fixes: #1715
|
||||
|
||||
CVE: CVE-2026-10118
|
||||
Upstream-Status: Backport [https://gitlab.freedesktop.org/poppler/poppler/-/commit/8352264766652b98336e92359a70b3161a9ab97a]
|
||||
|
||||
Changes:
|
||||
- Removed copyright from the upstream patch
|
||||
|
||||
Signed-off-by: Abhishek Bachiphale <Abhishek.Bachiphale@windriver.com>
|
||||
---
|
||||
poppler/SplashOutputDev.cc | 4 +---
|
||||
1 file changed, 1 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/poppler/SplashOutputDev.cc b/poppler/SplashOutputDev.cc
|
||||
index ff3ad0eff..f055486c3 100644
|
||||
--- a/poppler/SplashOutputDev.cc
|
||||
+++ b/poppler/SplashOutputDev.cc
|
||||
@@ -4327,7 +4328,7 @@ bool SplashOutputDev::tilingPatternFill(GfxState *state, Gfx *gfxA, Catalog * /*
|
||||
matc[2] = ctm[2];
|
||||
matc[3] = ctm[3];
|
||||
|
||||
- if (surface_width == 0 || surface_height == 0 || repeatX * repeatY <= 4) {
|
||||
+ if (surface_width == 0 || surface_height == 0 || repeatX * repeatY <= 4 || checkedMultiply(surface_width, repeatX, &result_width) || checkedMultiply(surface_height, repeatY, &result_height)) {
|
||||
state->setCTM(savedCTM[0], savedCTM[1], savedCTM[2], savedCTM[3], savedCTM[4], savedCTM[5]);
|
||||
return false;
|
||||
}
|
||||
@@ -4349,8 +4350,6 @@ bool SplashOutputDev::tilingPatternFill(GfxState *state, Gfx *gfxA, Catalog * /*
|
||||
kx = matc[0];
|
||||
ky = matc[3] - (matc[1] * matc[2]) / matc[0];
|
||||
}
|
||||
- result_width = surface_width * repeatX;
|
||||
- result_height = surface_height * repeatY;
|
||||
kx = result_width / (fabs(kx) + 1);
|
||||
ky = result_height / (fabs(ky) + 1);
|
||||
state->concatCTM(kx, 0, 0, ky, 0, 0);
|
||||
--
|
||||
GitLab
|
||||
|
||||
@@ -8,6 +8,7 @@ SRC_URI = "http://poppler.freedesktop.org/${BP}.tar.xz \
|
||||
file://basename-include.patch \
|
||||
file://0001-cmake-Do-not-use-isystem.patch \
|
||||
file://0001-workaround-build-racing.patch \
|
||||
file://CVE-2026-10118.patch \
|
||||
"
|
||||
SRC_URI[sha256sum] = "c18b40eb36b1a0c5b86e29ca054bf0770304583da4f2cdd42fe86eca6a20de48"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user