[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#897447: marked as done (jessie-pu: package ghostscript/9.06~dfsg-2+deb8u7)



Your message dated Sat, 23 Jun 2018 12:32:13 +0100
with message-id <1529753533.11744.69.camel@adam-barratt.org.uk>
and subject line Closing bugs for requests included in the EoL jessie point release
has caused the Debian Bug report #897447,
regarding jessie-pu: package ghostscript/9.06~dfsg-2+deb8u7
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
897447: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897447
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: jessie
User: release.debian.org@packages.debian.org
Usertags: pu

Hi

This is the corresponding update (as proposed for stretch-pu in
#897188 for stretch) for ghostscript to address CVE-2018-10194 and
CVE-2016-10317.

Attached the proposed debdiff.

Regards,
Salvatore
diff -Nru ghostscript-9.06~dfsg/debian/changelog ghostscript-9.06~dfsg/debian/changelog
--- ghostscript-9.06~dfsg/debian/changelog	2017-09-28 21:55:37.000000000 +0200
+++ ghostscript-9.06~dfsg/debian/changelog	2018-04-29 11:58:34.000000000 +0200
@@ -1,3 +1,14 @@
+ghostscript (9.06~dfsg-2+deb8u7) jessie; urgency=medium
+
+  * Non-maintainer upload.
+  * Segfault with fuzzing file in gxht_thresh_image_init
+  * Buffer overflow in fill_threshold_buffer (CVE-2016-10317)
+    (Closes: #860869)
+  * pdfwrite - Guard against trying to output an infinite number
+    (CVE-2018-10194) (Closes: #896069)
+
+ -- Salvatore Bonaccorso <carnil@debian.org>  Sun, 29 Apr 2018 11:58:34 +0200
+
 ghostscript (9.06~dfsg-2+deb8u6) jessie-security; urgency=high
 
   * Non-maintainer upload by the Security Team.
diff -Nru ghostscript-9.06~dfsg/debian/patches/Fix-Bug-696398-Segfault-with-fuzzing-file.patch ghostscript-9.06~dfsg/debian/patches/Fix-Bug-696398-Segfault-with-fuzzing-file.patch
--- ghostscript-9.06~dfsg/debian/patches/Fix-Bug-696398-Segfault-with-fuzzing-file.patch	1970-01-01 01:00:00.000000000 +0100
+++ ghostscript-9.06~dfsg/debian/patches/Fix-Bug-696398-Segfault-with-fuzzing-file.patch	2018-04-29 11:58:34.000000000 +0200
@@ -0,0 +1,29 @@
+From: Ray Johnston <ray.johnston@artifex.com>
+Date: Wed, 19 Jul 2017 22:05:33 -0700
+Subject: Fix Bug 696398: Segfault with fuzzing file.
+Origin: http://git.ghostscript.com/?p=ghostpdl.git;h=983e56cb679768fe5a048fbb33a43259efb9afbf
+Bug: https://bugs.ghostscript.com/show_bug.cgi?id=696398
+
+Oveflow of integer caused later failure even if allocation of the
+ht_buffer succeeded.  Detect overflow, return error.
+---
+ base/gxht_thresh.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/base/gxht_thresh.c b/base/gxht_thresh.c
+index 35f8e3f57..3fb840213 100644
+--- a/base/gxht_thresh.c
++++ b/base/gxht_thresh.c
+@@ -711,6 +711,9 @@ gxht_thresh_image_init(gx_image_enum *penum)
+            space */
+         max_height = (int) ceil(fixed2float(any_abs(penum->dst_height)) /
+                                             (float) penum->Height);
++        if ((max_height > 0) && (penum->ht_stride * spp_out > max_int / max_height))
++            return -1;         /* overflow */
++
+         penum->ht_buffer =
+                         gs_alloc_bytes(penum->memory,
+                            penum->ht_stride * max_height * spp_out,
+-- 
+2.17.0
+
diff -Nru ghostscript-9.06~dfsg/debian/patches/Fix-bug-697459-Buffer-overflow-in-fill_threshold_buf.patch ghostscript-9.06~dfsg/debian/patches/Fix-bug-697459-Buffer-overflow-in-fill_threshold_buf.patch
--- ghostscript-9.06~dfsg/debian/patches/Fix-bug-697459-Buffer-overflow-in-fill_threshold_buf.patch	1970-01-01 01:00:00.000000000 +0100
+++ ghostscript-9.06~dfsg/debian/patches/Fix-bug-697459-Buffer-overflow-in-fill_threshold_buf.patch	2018-04-29 11:58:34.000000000 +0200
@@ -0,0 +1,78 @@
+From: Ray Johnston <ray.johnston@artifex.com>
+Date: Tue, 21 Nov 2017 12:48:54 -0800
+Subject: Fix bug 697459 Buffer overflow in fill_threshold_buffer
+Origin: http://git.ghostscript.com/?p=ghostpdl.git;h=362ec9daadb9992b0def3520cd1dc6fa52edd1c4
+Bug-Debian: https://bugs.debian.org/860869
+Bug: https://bugs.ghostscript.com/show_bug.cgi?id=697459
+Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2016-10317
+
+There was an overflow check for ht_buffer size, but none for the larger
+threshold_buffer. Note that this file didn't fail on Windows because the
+combination of the ht_buffer and the size of the (miscalculated due to
+overflow) threshold_buffer would have exceeded the 2Gb limit.
+---
+ base/gxht_thresh.c | 13 ++++++++++---
+ base/gxipixel.c    |  2 +-
+ 2 files changed, 11 insertions(+), 4 deletions(-)
+
+diff --git a/base/gxht_thresh.c b/base/gxht_thresh.c
+index 3fb840213..726861685 100644
+--- a/base/gxht_thresh.c
++++ b/base/gxht_thresh.c
+@@ -711,7 +711,9 @@ gxht_thresh_image_init(gx_image_enum *penum)
+            space */
+         max_height = (int) ceil(fixed2float(any_abs(penum->dst_height)) /
+                                             (float) penum->Height);
+-        if ((max_height > 0) && (penum->ht_stride * spp_out > max_int / max_height))
++        if (max_height <= 0)
++            return -1;		/* shouldn't happen, but check so we don't div by zero */
++        if (penum->ht_stride * spp_out > max_int / max_height)
+             return -1;         /* overflow */
+ 
+         penum->ht_buffer =
+@@ -734,6 +736,11 @@ gxht_thresh_image_init(gx_image_enum *penum)
+            Also allow a 15 sample over run during the execution.  */
+         temp = (int) ceil((float) ((dev_width + 15.0) + 15.0)/16.0);
+         penum->line_size = bitmap_raster(temp * 16 * 8);  /* The stride */
++        if (penum->line_size > max_int / max_height) {
++            gs_free_object(penum->memory, penum->ht_buffer, "gxht_thresh");
++            penum->ht_buffer = NULL;
++            return -1;         /* thresh_buffer size overflow */
++        }
+         penum->line = gs_alloc_bytes(penum->memory, penum->line_size * spp_out,
+                                      "gxht_thresh");
+         penum->thresh_buffer = gs_alloc_bytes(penum->memory,
+@@ -754,7 +761,7 @@ gxht_thresh_image_init(gx_image_enum *penum)
+ }
+ 
+ static void
+-fill_threshhold_buffer(byte *dest_strip, byte *src_strip, int src_width,
++fill_threshold_buffer(byte *dest_strip, byte *src_strip, int src_width,
+                        int left_offset, int left_width, int num_tiles,
+                        int right_width)
+ {
+@@ -908,7 +915,7 @@ gxht_thresh_planes(gx_image_enum *penum, fixed xrun,
+                        to update with stride */
+                     position = contone_stride * k;
+                     /* Tile into the 128 bit aligned threshold strip */
+-                    fill_threshhold_buffer(&(thresh_align[position]),
++                    fill_threshold_buffer(&(thresh_align[position]),
+                                            thresh_tile, thresh_width, dx, left_width,
+                                            num_full_tiles, right_tile_width);
+                 }
+diff --git a/base/gxipixel.c b/base/gxipixel.c
+index edd40c52d..cb4f02a09 100644
+--- a/base/gxipixel.c
++++ b/base/gxipixel.c
+@@ -758,7 +758,7 @@ gx_image_enum_begin(gx_device * dev, const gs_gstate * pgs,
+     penum->memory = mem;
+     penum->buffer = buffer;
+     penum->buffer_size = bsize;
+-    penum->line = 0;
++    penum->line = NULL;
+     penum->icc_link = NULL;
+     penum->color_cache = NULL;
+     penum->ht_buffer = NULL;
+-- 
+2.17.0
+
diff -Nru ghostscript-9.06~dfsg/debian/patches/pdfwrite-Guard-against-trying-to-output-an-infinite-.patch ghostscript-9.06~dfsg/debian/patches/pdfwrite-Guard-against-trying-to-output-an-infinite-.patch
--- ghostscript-9.06~dfsg/debian/patches/pdfwrite-Guard-against-trying-to-output-an-infinite-.patch	1970-01-01 01:00:00.000000000 +0100
+++ ghostscript-9.06~dfsg/debian/patches/pdfwrite-Guard-against-trying-to-output-an-infinite-.patch	2018-04-29 11:58:34.000000000 +0200
@@ -0,0 +1,42 @@
+From: Ken Sharp <ken.sharp@artifex.com>
+Date: Wed, 18 Apr 2018 15:46:32 +0100
+Subject: pdfwrite - Guard against trying to output an infinite number
+Origin: http://git.ghostscript.com/?p=ghostpdl.git;a=commit;h=39b1e54b2968620723bf32e96764c88797714879
+Bug-Debian: https://bugs.debian.org/896069
+Bug: https://bugs.ghostscript.com/show_bug.cgi?id=699255
+Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2018-10194
+
+Bug #699255 " Buffer overflow on pprintg1 due to mishandle postscript file data to pdf"
+
+The file uses an enormous parameter to xyxhow, causing an overflow in
+the calculation of text positioning (value > 1e39).
+
+Since this is basically a nonsense value, and PostScript only supports
+real values up to 1e38, this patch follows the same approach as for
+a degenerate CTM, and treats it as 0.
+
+Adobe Acrobat Distiller throws a limitcheck error, so we could do that
+instead if this approach proves to be a problem.
+[carnil: backport to 9.06: file location change, context refresh]
+---
+ devices/vector/gdevpdts.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/base/gdevpdts.c
++++ b/base/gdevpdts.c
+@@ -152,9 +152,14 @@ append_text_move(pdf_text_state_t *pts,
+ static int
+ set_text_distance(gs_point *pdist, floatp dx, floatp dy, const gs_matrix *pmat)
+ {
+-    int code = gs_distance_transform_inverse(dx, dy, pmat, pdist);
++    int code;
+     double rounded;
+ 
++    if (dx > 1e38 || dy > 1e38)
++        code = gs_error_undefinedresult;
++    else
++        code = gs_distance_transform_inverse(dx, dy, pmat, pdist);
++
+     if (code == gs_error_undefinedresult) {
+         /* The CTM is degenerate.
+            Can't know the distance in user space.
diff -Nru ghostscript-9.06~dfsg/debian/patches/series ghostscript-9.06~dfsg/debian/patches/series
--- ghostscript-9.06~dfsg/debian/patches/series	2017-09-28 21:55:37.000000000 +0200
+++ ghostscript-9.06~dfsg/debian/patches/series	2018-04-29 11:58:34.000000000 +0200
@@ -34,3 +34,6 @@
 Bug-698056-make-bounds-check-in-gx_ttfReader__Read-m.patch
 Bug-698063-Bounds-check-Ins_JMPR.patch
 Bug-698158-prevent-trying-to-reloc-a-freed-object.patch
+Fix-Bug-696398-Segfault-with-fuzzing-file.patch
+Fix-bug-697459-Buffer-overflow-in-fill_threshold_buf.patch
+pdfwrite-Guard-against-trying-to-output-an-infinite-.patch

--- End Message ---
--- Begin Message ---
Version: 8.11

Hi,

The updates referenced by these bugs were included in today's EoL point
release for jessie (8.11).

Regards,

Adam

--- End Message ---

Reply to: