diff --git a/backport-CVE-2024-46955.patch b/backport-CVE-2024-46955.patch new file mode 100644 index 0000000000000000000000000000000000000000..bb789e7f32c90c870f63989f1d24ab4885acef37 --- /dev/null +++ b/backport-CVE-2024-46955.patch @@ -0,0 +1,59 @@ +From ca1fc2aefe9796e321d0589afe7efb35063c8b2a Mon Sep 17 00:00:00 2001 +From: Zdenek Hutyra +Date: Fri, 30 Aug 2024 13:11:53 +0100 +Subject: [PATCH] PS interpreter - check Indexed colour space index + +Bug #707990 "Out of bounds read when reading color in "Indexed" color space" + +Check the 'index' is in the valid range (0 to hival) for the colour +space. + +Also a couple of additional checks on the type of the 'proc' for +Indexed, DeviceN and Separation spaces. Make sure these really are +procs in case the user changed the colour space array. + +CVE-2024-46955 +--- + psi/zcolor.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/psi/zcolor.c b/psi/zcolor.c +index c0d73c2..7d15ec7 100644 +--- a/psi/zcolor.c ++++ b/psi/zcolor.c +@@ -3629,6 +3629,7 @@ static int septransform(i_ctx_t *i_ctx_p, ref *sepspace, int *usealternate, int + code = array_get(imemory, sepspace, 3, &proc); + if (code < 0) + return code; ++ check_proc(proc); + *esp = proc; + return o_push_estack; + } +@@ -4450,6 +4451,7 @@ static int devicentransform(i_ctx_t *i_ctx_p, ref *devicenspace, int *usealterna + code = array_get(imemory, devicenspace, 3, &proc); + if (code < 0) + return code; ++ check_proc(proc); + *esp = proc; + return o_push_estack; + } +@@ -4865,6 +4867,7 @@ static int indexedbasecolor(i_ctx_t * i_ctx_p, ref *space, int base, int *stage, + code = array_get(imemory, space, 3, &proc); + if (code < 0) + return code; ++ check_proc(proc); + *ep = proc; /* lookup proc */ + return o_push_estack; + } else { +@@ -4878,6 +4881,9 @@ static int indexedbasecolor(i_ctx_t * i_ctx_p, ref *space, int base, int *stage, + if (!r_has_type(op, t_integer)) + return_error (gs_error_typecheck); + index = op->value.intval; ++ /* Ensure it is in range. See bug #707990 */ ++ if (index < 0 || index > pcs->params.indexed.hival) ++ return_error(gs_error_rangecheck); + /* And remove it from the stack. */ + ref_stack_pop(&o_stack, 1); + op = osp; +-- +2.27.0 diff --git a/ghostscript.spec b/ghostscript.spec index 8c1b2e4b32dba254bc19f3a91db9dc795d689429..a956dae7a758c7bbb17a7713fa4d1c337eb6f68b 100644 --- a/ghostscript.spec +++ b/ghostscript.spec @@ -9,7 +9,7 @@ Name: ghostscript Version: 9.55.0 -Release: 13 +Release: 14 Summary: An interpreter for PostScript and PDF files License: AGPLv3+ URL: https://ghostscript.com/ @@ -45,6 +45,7 @@ Patch17: Bug-707510-5-2-The-original-fix-was-overly-aggressive.patch Patch18: Bug-707510-fix-LIBIDN-usage.patch Patch19: backport-CVE-2024-46953.patch Patch20: backport-CVE-2024-46956.patch +Patch21: backport-CVE-2024-46955.patch BuildRequires: automake gcc BuildRequires: adobe-mappings-cmap-devel adobe-mappings-pdf-devel @@ -205,6 +206,12 @@ install -m 0755 -d %{buildroot}%{_datadir}/%{name}/conf.d/ %{_bindir}/dvipdf %changelog +* Wed Oct 30 2024 liningjie - 9.55.0-14 +- Type:CVE +- ID:NA +- SUG:NA +- DECS: Fix CVE-2024-46955 + * Fri Oct 25 2024 liningjie - 9.55.0-13 - Type:CVE - ID:NA