Date: Sunday, November 1, 2015 @ 11:31:07 Author: andyrtr Revision: 249914
archrelease: copy trunk to extra-x86_64 Added: ghostscript/repos/extra-x86_64/PKGBUILD (from rev 249913, ghostscript/trunk/PKGBUILD) ghostscript/repos/extra-x86_64/add_gserrors_h.diff (from rev 249913, ghostscript/trunk/add_gserrors_h.diff) ghostscript/repos/extra-x86_64/bug_696246.diff (from rev 249913, ghostscript/trunk/bug_696246.diff) ghostscript/repos/extra-x86_64/ghostscript-sys-zlib.patch (from rev 249913, ghostscript/trunk/ghostscript-sys-zlib.patch) Deleted: ghostscript/repos/extra-x86_64/PKGBUILD ghostscript/repos/extra-x86_64/bug_696246.diff ghostscript/repos/extra-x86_64/ghostscript-sys-zlib.patch ----------------------------+ PKGBUILD | 186 ++++++++++--------- add_gserrors_h.diff | 43 ++++ bug_696246.diff | 406 +++++++++++++++++++++---------------------- ghostscript-sys-zlib.patch | 50 ++--- 4 files changed, 366 insertions(+), 319 deletions(-) Deleted: PKGBUILD =================================================================== --- PKGBUILD 2015-11-01 10:30:58 UTC (rev 249913) +++ PKGBUILD 2015-11-01 10:31:07 UTC (rev 249914) @@ -1,91 +0,0 @@ -# $Id$ -# Maintainer: AndyRTR <andy...@archlinux.org> - -### !!! rebuild groff from core that picks up hardcoding the GS versioned font path !!! ### - -pkgname=ghostscript -pkgver=9.18 -pkgrel=3 -pkgdesc="An interpreter for the PostScript language" -arch=('i686' 'x86_64') -license=('AGPL' 'custom') -depends=('libxt' 'libcups' 'fontconfig' 'jasper' 'zlib' 'libpng>=1.5.7' 'libjpeg' - 'libtiff>=4.0.0' 'lcms2' 'dbus' 'libpaper') -makedepends=('gtk3' 'gnutls' 'hardening-wrapper') -optdepends=('texlive-core: needed for dvipdf' - 'gtk3: needed for gsx') -url="http://www.ghostscript.com/" -source=(http://downloads.ghostscript.com/public/ghostscript-${pkgver}.tar.bz2 - ghostscript-sys-zlib.patch - bug_696246.diff) -#options=('!makeflags') -# http://downloads.ghostscript.com/public/SHA1SUMS -sha1sums=('388fea50a38e422a4c6ff27c184491bf5ecb96e1' - 'e054caf753df4d67221b29a2eac66130653f7556' - 'f259eaac3beb0ec346bb2d4d2455e4e3baddecd4') - -prepare() { - cd ghostscript-${pkgver} - # fix build with system zlib - patch -Np1 -i ${srcdir}/ghostscript-sys-zlib.patch - # fix http://bugs.ghostscript.com/show_bug.cgi?id=696246 - FS#46637, FS#46734? - patch -Np1 -i ${srcdir}/bug_696246.diff -} - -build() { - cd ghostscript-${pkgver} - - # force it to use system-libs - # keep heavily patched included openjpeg, leads to segfault with system openjpeg - # https://bugs.archlinux.org/task/38226 - rm -rf jpeg libpng zlib jasper expat tiff lcms lcms2 freetype cups/libs # jbig2dec is in community - - autoconf --force - - ./configure --prefix=/usr \ - --enable-dynamic \ - --with-ijs \ - --with-jbig2dec \ - --with-omni \ - --with-x \ - --with-drivers=ALL\ - --with-fontpath=/usr/share/fonts/Type1:/usr/share/fonts \ - --enable-fontconfig \ - --enable-freetype \ - --enable-openjpeg \ - --without-luratech \ - --without-omni \ - --with-system-libtiff \ - --with-libpaper \ - --disable-compile-inits #--help # needed for linking with system-zlib - make - - # Build IJS - cd ijs - sed -i "s:AM_PROG_CC_STDC:AC_PROG_CC:g" configure.ac - ./autogen.sh - ./configure --prefix=/usr --enable-shared --disable-static - make -} - -package() { - cd ghostscript-${pkgver} - make DESTDIR="${pkgdir}" \ - cups_serverroot="${pkgdir}"/etc/cups \ - cups_serverbin="${pkgdir}"/usr/lib/cups install install-so - - # install missing doc files # http://bugs.archlinux.org/task/18023 - install -m 644 "${srcdir}"/ghostscript-${pkgver}/doc/{Ps2ps2.htm,gs-vms.hlp,gsdoc.el,pscet_status.txt} "${pkgdir}"/usr/share/ghostscript/$pkgver/doc/ - - install -D -m644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE - - # remove unwanted localized man-pages - rm -rf "$pkgdir"/usr/share/man/[^man1]* - - # install IJS - cd ijs - make DESTDIR="${pkgdir}" install - - # remove filters that are now maintained in cups-filters as upstream home - rm -rf "$pkgdir"/usr/lib/cups/filter/{gstopxl,gstoraster} -} Copied: ghostscript/repos/extra-x86_64/PKGBUILD (from rev 249913, ghostscript/trunk/PKGBUILD) =================================================================== --- PKGBUILD (rev 0) +++ PKGBUILD 2015-11-01 10:31:07 UTC (rev 249914) @@ -0,0 +1,95 @@ +# $Id$ +# Maintainer: AndyRTR <andy...@archlinux.org> + +### !!! rebuild groff from core that picks up hardcoding the GS versioned font path !!! ### + +pkgname=ghostscript +pkgver=9.18 +pkgrel=4 +pkgdesc="An interpreter for the PostScript language" +arch=('i686' 'x86_64') +license=('AGPL' 'custom') +depends=('libxt' 'libcups' 'fontconfig' 'jasper' 'zlib' 'libpng>=1.5.7' 'libjpeg' + 'libtiff>=4.0.0' 'lcms2' 'dbus' 'libpaper') +makedepends=('gtk3' 'gnutls' 'hardening-wrapper') +optdepends=('texlive-core: needed for dvipdf' + 'gtk3: needed for gsx') +url="http://www.ghostscript.com/" +source=(http://downloads.ghostscript.com/public/ghostscript-${pkgver}.tar.bz2 + ghostscript-sys-zlib.patch + bug_696246.diff + add_gserrors_h.diff) +#options=('!makeflags') +# http://downloads.ghostscript.com/public/SHA1SUMS +sha1sums=('388fea50a38e422a4c6ff27c184491bf5ecb96e1' + 'e054caf753df4d67221b29a2eac66130653f7556' + 'f259eaac3beb0ec346bb2d4d2455e4e3baddecd4' + 'ca686fed1af36d1f9fa866b47ff129c71d6a19ff') + +prepare() { + cd ghostscript-${pkgver} + # fix build with system zlib + patch -Np1 -i ${srcdir}/ghostscript-sys-zlib.patch + # fix http://bugs.ghostscript.com/show_bug.cgi?id=696246 - FS#46637, FS#46734? + patch -Np1 -i ${srcdir}/bug_696246.diff + # add a missing header; FS#46928 + patch -Np1 -i ${srcdir}/add_gserrors_h.diff +} + +build() { + cd ghostscript-${pkgver} + + # force it to use system-libs + # keep heavily patched included openjpeg, leads to segfault with system openjpeg + # https://bugs.archlinux.org/task/38226 + rm -rf jpeg libpng zlib jasper expat tiff lcms lcms2 freetype cups/libs # jbig2dec is in community + + autoconf --force + + ./configure --prefix=/usr \ + --enable-dynamic \ + --with-ijs \ + --with-jbig2dec \ + --with-omni \ + --with-x \ + --with-drivers=ALL\ + --with-fontpath=/usr/share/fonts/Type1:/usr/share/fonts \ + --enable-fontconfig \ + --enable-freetype \ + --enable-openjpeg \ + --without-luratech \ + --without-omni \ + --with-system-libtiff \ + --with-libpaper \ + --disable-compile-inits #--help # needed for linking with system-zlib + make + + # Build IJS + cd ijs + sed -i "s:AM_PROG_CC_STDC:AC_PROG_CC:g" configure.ac + ./autogen.sh + ./configure --prefix=/usr --enable-shared --disable-static + make +} + +package() { + cd ghostscript-${pkgver} + make DESTDIR="${pkgdir}" \ + cups_serverroot="${pkgdir}"/etc/cups \ + cups_serverbin="${pkgdir}"/usr/lib/cups install install-so + + # install missing doc files # http://bugs.archlinux.org/task/18023 + install -m 644 "${srcdir}"/ghostscript-${pkgver}/doc/{Ps2ps2.htm,gs-vms.hlp,gsdoc.el,pscet_status.txt} "${pkgdir}"/usr/share/ghostscript/$pkgver/doc/ + + install -D -m644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE + + # remove unwanted localized man-pages + rm -rf "$pkgdir"/usr/share/man/[^man1]* + + # install IJS + cd ijs + make DESTDIR="${pkgdir}" install + + # remove filters that are now maintained in cups-filters as upstream home + rm -rf "$pkgdir"/usr/lib/cups/filter/{gstopxl,gstoraster} +} Copied: ghostscript/repos/extra-x86_64/add_gserrors_h.diff (from rev 249913, ghostscript/trunk/add_gserrors_h.diff) =================================================================== --- add_gserrors_h.diff (rev 0) +++ add_gserrors_h.diff 2015-11-01 10:31:07 UTC (rev 249914) @@ -0,0 +1,43 @@ +From feafe5e540a0545ec5d28f3f66bb542056bba495 Mon Sep 17 00:00:00 2001 +From: Chris Liddell <chris.lidd...@artifex.com> +Date: Fri, 23 Oct 2015 10:16:11 +0100 +Subject: [PATCH] Bug 696301: add gserrors.h to the installed files + +for the so-install target. + +Also remove a spurious (copy'n'paste error) comment. + +No cluster differences +--- + base/gserrors.h | 2 +- + base/unix-dll.mak | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/base/gserrors.h b/base/gserrors.h +index 5f18081..cdebb38 100644 +--- a/base/gserrors.h ++++ b/base/gserrors.h +@@ -25,7 +25,7 @@ + /* We don't use a typedef internally to avoid a lot of casting. */ + + enum gs_error_type { +- gs_error_ok = 0, /* unknown error */ ++ gs_error_ok = 0, + gs_error_unknownerror = -1, /* unknown error */ + gs_error_dictfull = -2, + gs_error_dictstackoverflow = -3, +diff --git a/base/unix-dll.mak b/base/unix-dll.mak +index 7b67aa1..73b4fa9 100644 +--- a/base/unix-dll.mak ++++ b/base/unix-dll.mak +@@ -186,6 +186,7 @@ install-so-subtarget: so-subtarget + ln -s $(GS_SONAME_MAJOR_MINOR) $(DESTDIR)$(libdir)/$(GS_SONAME_MAJOR) + $(INSTALL_DATA) $(PSSRC)iapi.h $(DESTDIR)$(gsincludedir)iapi.h + $(INSTALL_DATA) $(PSSRC)ierrors.h $(DESTDIR)$(gsincludedir)ierrors.h ++ $(INSTALL_DATA) $(GLSRC)gserrors.h $(DESTDIR)$(gsincludedir)gserrors.h + $(INSTALL_DATA) $(DEVSRC)gdevdsp.h $(DESTDIR)$(gsincludedir)gdevdsp.h + + soinstall: +-- +2.5.1 + Deleted: bug_696246.diff =================================================================== --- bug_696246.diff 2015-11-01 10:30:58 UTC (rev 249913) +++ bug_696246.diff 2015-11-01 10:31:07 UTC (rev 249914) @@ -1,203 +0,0 @@ -From: Chris Liddell <chris.lidd...@artifex.com> -Date: Fri, 9 Oct 2015 09:54:10 +0000 (+0100) -Subject: Bug 696246: devijs account for device sublassing. -X-Git-Url: http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff_plain;h=b68e05c3 - -Bug 696246: devijs account for device sublassing. - -The IJS device wasn't coping with the possibility it had been subclassed. - -No cluster differences ---- - -diff --git a/devices/gdevijs.c b/devices/gdevijs.c -index 5520716..a2e21ea 100644 ---- a/devices/gdevijs.c -+++ b/devices/gdevijs.c -@@ -827,6 +827,10 @@ gsijs_open(gx_device *dev) - if (code < 0) - return code; - -+ while (dev->child) -+ dev = dev->child; -+ ijsdev = (gx_device_ijs *)dev; -+ - if (use_outputfd) { - /* Note: dup() may not be portable to all interesting IJS - platforms. In that case, this branch should be #ifdef'ed out. -From: Chris Liddell <chris.lidd...@artifex.com> -Date: Fri, 9 Oct 2015 11:54:44 +0000 (+0100) -Subject: Bug 696246: patch the memory manager fields for sublassed devices. -X-Git-Url: http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff_plain;h=95553954 - -Bug 696246: patch the memory manager fields for sublassed devices. - -When we subclass a device, we were patching the "visible" type field - that is, -the one referenced directly in the device structure. We were not patching -the type information in the memory object header so, in particular, the -garbage collector could end up calling the wrong methods for the subclassed -device. - -No cluster differences. ---- - -diff --git a/base/gdevdflt.c b/base/gdevdflt.c -index 5768937..305f89d 100644 ---- a/base/gdevdflt.c -+++ b/base/gdevdflt.c -@@ -17,6 +17,8 @@ - #include "math_.h" - #include "memory_.h" - #include "gx.h" -+#include "gsstruct.h" -+#include "gxobj.h" - #include "gserrors.h" - #include "gsropt.h" - #include "gxcomp.h" -@@ -26,6 +28,7 @@ - #include "gstrans.h" /* For gs_pdf14trans_t */ - #include "gxistate.h" /* for gs_image_state_s */ - -+ - /* defined in gsdpram.c */ - int gx_default_get_param(gx_device *dev, char *Param, void *list); - -@@ -1294,6 +1297,11 @@ int gx_device_subclass(gx_device *dev_to_subclass, gx_device *new_prototype, uns - ptr1 = ((char *)new_prototype) + sizeof(gx_device); - memcpy(ptr, ptr1, new_prototype->params_size - sizeof(gx_device)); - -+ /* We have to patch up the "type" parameters that the memory manage/garbage -+ * collector will use, as well. -+ */ -+ (((obj_header_t *)dev_to_subclass) - 1)->o_type = new_prototype->stype; -+ - /* If the original device's stype structure was dynamically allocated, we need - * to 'fixup' the contents, it's procs need to point to the new device's procs - * for instance. -diff --git a/base/lib.mak b/base/lib.mak -index de78333..09b70e5 100644 ---- a/base/lib.mak -+++ b/base/lib.mak -@@ -1210,7 +1210,7 @@ $(GLOBJ)gdevdsha.$(OBJ) : $(GLSRC)gdevdsha.c $(AK) $(gx_h)\ - - $(GLOBJ)gdevdflt.$(OBJ) : $(GLSRC)gdevdflt.c $(AK) $(gx_h)\ - $(gserrors_h) $(gsropt_h) $(gxcomp_h) $(gxdevice_h) $(gxdevsop_h) $(math__h)\ -- $(MAKEDIRS) -+ $(gsstruct_h) $(gxobj_h) $(MAKEDIRS) - $(GLCC) $(GLO_)gdevdflt.$(OBJ) $(C_) $(GLSRC)gdevdflt.c - - $(GLOBJ)gdevdgbr.$(OBJ) : $(GLSRC)gdevdgbr.c $(AK) $(gx_h)\ -From 007bd77d08d800e6b07274d62e3c91be7c4a3f47 Mon Sep 17 00:00:00 2001 -From: Ken Sharp <ken.sh...@artifex.com> -Date: Mon, 12 Oct 2015 16:36:11 +0100 -Subject: [PATCH] Guard against NULL 'base' for non-clist devices - -Bug #696246 "Ghostscript 9.18 with -dFirstPage/-dLastPage fails for ijs and some x11 devices" - -This is actually for the plib device. This device is currently (this will -change in the next commit) set to BandingAuto, despite the fact that the -device only works in banding mode. - -This can lead to use arriving in gdev_mem_open_scan_lines with all of -mdev->bitmap_memory, mdev->line_pointers_memory and mdev->base being set to -NULL. The code didn't check and assumed that mdev->base was valid, which -led to a later seg fault. - -Here we just check to make sure it isn't NULL and return an error if it is. -This doesn't prevent the possibility of garbage uninitialised values, but -there's not much we can do to check that at this stage, devices are supposed -to be initialised to 0 so this 'shouldn't' happen. - -No differences expected. ---- - base/gdevmem.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/base/gdevmem.c b/base/gdevmem.c -index 3019451f..507fa19 100644 ---- a/base/gdevmem.c -+++ b/base/gdevmem.c -@@ -471,6 +471,9 @@ gdev_mem_open_scan_lines(gx_device_memory *mdev, int setup_height) - line_pointers_adjacent = false; - } - if (line_pointers_adjacent) { -+ if (mdev->base == 0) -+ return_error(gs_error_rangecheck); -+ - gdev_mem_bits_size(mdev, mdev->width, mdev->height, &size); - mdev->line_ptrs = (byte **)(mdev->base + size); - } --- -2.5.1 - -From 1bdbe4f87dc57648821e613ebcc591b84e8b35b3 Mon Sep 17 00:00:00 2001 -From: Ken Sharp <ken.sh...@artifex.com> -Date: Mon, 12 Oct 2015 16:38:09 +0100 -Subject: [PATCH] Ensure plib devices always use the clist - -Bug #696246 "Ghostscript 9.18 with -dFirstPage/-dLastPage fails for ijs and some x11 devices" - -the plib* class of devices only work if clist is present, but previously -they left the banding_type set to 'auto', which meant that under some -conditions we did not use the clist, leading to a seg fault. - -This commit simply forces banding_type to be 'BandingAlways'. - -No differences expected. ---- - devices/gdevplib.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/devices/gdevplib.c b/devices/gdevplib.c -index 51bd7ea..87c6f46 100644 ---- a/devices/gdevplib.c -+++ b/devices/gdevplib.c -@@ -691,6 +691,8 @@ plib_open(gx_device * pdev) - bdev->printer_procs.buf_procs.size_buf_device = plib_size_buf_device; - pdev->is_planar = 1; - -+ bdev->space_params.banding_type = BandingAlways; -+ - /* You might expect us to call gdev_prn_open_planar rather than - * gdev_prn_open, but if we do that, it overwrites the 2 function - * pointers we've just overwritten! */ --- -2.5.1 - -From 5571ddfa377c5d7d98f55af40e693814ac287ae4 Mon Sep 17 00:00:00 2001 -From: Ken Sharp <ken.sh...@artifex.com> -Date: Mon, 12 Oct 2015 16:40:10 +0100 -Subject: [PATCH] prevent rinkj device crash when misconfigured (no SetupFile) - -Bug #696246 "Ghostscript 9.18 with -dFirstPage/-dLastPage fails for ijs and some x11 devices" - -The rinkj device requires a SetupFile to be given as a device parameter, -however it doesn't actually check to see if one is given, and just tries -to open the filename, with a predictable crash when none is given. - -Here we check the filename and attempt to ensure it is both present and -minimally valid. - -No differences expected. ---- - devices/gdevrinkj.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/devices/gdevrinkj.c b/devices/gdevrinkj.c -index f55bc60..12c396a 100644 ---- a/devices/gdevrinkj.c -+++ b/devices/gdevrinkj.c -@@ -1193,6 +1193,10 @@ rinkj_print_page(gx_device_printer *pdev, FILE *file) - int code = 0; - RinkjDevice *cmyk_dev; - -+ if (rdev->setup_fn == 0 || rdev->setup_fn[0] == 0) { -+ emprintf(rdev->memory, "Error, SetupFile not defined, output aborted\n"); -+ return 0; -+ } - cmyk_dev = rinkj_init(rdev, file); - if (cmyk_dev == 0) - return gs_note_error(gs_error_ioerror); --- -2.5.1 - Copied: ghostscript/repos/extra-x86_64/bug_696246.diff (from rev 249913, ghostscript/trunk/bug_696246.diff) =================================================================== --- bug_696246.diff (rev 0) +++ bug_696246.diff 2015-11-01 10:31:07 UTC (rev 249914) @@ -0,0 +1,203 @@ +From: Chris Liddell <chris.lidd...@artifex.com> +Date: Fri, 9 Oct 2015 09:54:10 +0000 (+0100) +Subject: Bug 696246: devijs account for device sublassing. +X-Git-Url: http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff_plain;h=b68e05c3 + +Bug 696246: devijs account for device sublassing. + +The IJS device wasn't coping with the possibility it had been subclassed. + +No cluster differences +--- + +diff --git a/devices/gdevijs.c b/devices/gdevijs.c +index 5520716..a2e21ea 100644 +--- a/devices/gdevijs.c ++++ b/devices/gdevijs.c +@@ -827,6 +827,10 @@ gsijs_open(gx_device *dev) + if (code < 0) + return code; + ++ while (dev->child) ++ dev = dev->child; ++ ijsdev = (gx_device_ijs *)dev; ++ + if (use_outputfd) { + /* Note: dup() may not be portable to all interesting IJS + platforms. In that case, this branch should be #ifdef'ed out. +From: Chris Liddell <chris.lidd...@artifex.com> +Date: Fri, 9 Oct 2015 11:54:44 +0000 (+0100) +Subject: Bug 696246: patch the memory manager fields for sublassed devices. +X-Git-Url: http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff_plain;h=95553954 + +Bug 696246: patch the memory manager fields for sublassed devices. + +When we subclass a device, we were patching the "visible" type field - that is, +the one referenced directly in the device structure. We were not patching +the type information in the memory object header so, in particular, the +garbage collector could end up calling the wrong methods for the subclassed +device. + +No cluster differences. +--- + +diff --git a/base/gdevdflt.c b/base/gdevdflt.c +index 5768937..305f89d 100644 +--- a/base/gdevdflt.c ++++ b/base/gdevdflt.c +@@ -17,6 +17,8 @@ + #include "math_.h" + #include "memory_.h" + #include "gx.h" ++#include "gsstruct.h" ++#include "gxobj.h" + #include "gserrors.h" + #include "gsropt.h" + #include "gxcomp.h" +@@ -26,6 +28,7 @@ + #include "gstrans.h" /* For gs_pdf14trans_t */ + #include "gxistate.h" /* for gs_image_state_s */ + ++ + /* defined in gsdpram.c */ + int gx_default_get_param(gx_device *dev, char *Param, void *list); + +@@ -1294,6 +1297,11 @@ int gx_device_subclass(gx_device *dev_to_subclass, gx_device *new_prototype, uns + ptr1 = ((char *)new_prototype) + sizeof(gx_device); + memcpy(ptr, ptr1, new_prototype->params_size - sizeof(gx_device)); + ++ /* We have to patch up the "type" parameters that the memory manage/garbage ++ * collector will use, as well. ++ */ ++ (((obj_header_t *)dev_to_subclass) - 1)->o_type = new_prototype->stype; ++ + /* If the original device's stype structure was dynamically allocated, we need + * to 'fixup' the contents, it's procs need to point to the new device's procs + * for instance. +diff --git a/base/lib.mak b/base/lib.mak +index de78333..09b70e5 100644 +--- a/base/lib.mak ++++ b/base/lib.mak +@@ -1210,7 +1210,7 @@ $(GLOBJ)gdevdsha.$(OBJ) : $(GLSRC)gdevdsha.c $(AK) $(gx_h)\ + + $(GLOBJ)gdevdflt.$(OBJ) : $(GLSRC)gdevdflt.c $(AK) $(gx_h)\ + $(gserrors_h) $(gsropt_h) $(gxcomp_h) $(gxdevice_h) $(gxdevsop_h) $(math__h)\ +- $(MAKEDIRS) ++ $(gsstruct_h) $(gxobj_h) $(MAKEDIRS) + $(GLCC) $(GLO_)gdevdflt.$(OBJ) $(C_) $(GLSRC)gdevdflt.c + + $(GLOBJ)gdevdgbr.$(OBJ) : $(GLSRC)gdevdgbr.c $(AK) $(gx_h)\ +From 007bd77d08d800e6b07274d62e3c91be7c4a3f47 Mon Sep 17 00:00:00 2001 +From: Ken Sharp <ken.sh...@artifex.com> +Date: Mon, 12 Oct 2015 16:36:11 +0100 +Subject: [PATCH] Guard against NULL 'base' for non-clist devices + +Bug #696246 "Ghostscript 9.18 with -dFirstPage/-dLastPage fails for ijs and some x11 devices" + +This is actually for the plib device. This device is currently (this will +change in the next commit) set to BandingAuto, despite the fact that the +device only works in banding mode. + +This can lead to use arriving in gdev_mem_open_scan_lines with all of +mdev->bitmap_memory, mdev->line_pointers_memory and mdev->base being set to +NULL. The code didn't check and assumed that mdev->base was valid, which +led to a later seg fault. + +Here we just check to make sure it isn't NULL and return an error if it is. +This doesn't prevent the possibility of garbage uninitialised values, but +there's not much we can do to check that at this stage, devices are supposed +to be initialised to 0 so this 'shouldn't' happen. + +No differences expected. +--- + base/gdevmem.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/base/gdevmem.c b/base/gdevmem.c +index 3019451f..507fa19 100644 +--- a/base/gdevmem.c ++++ b/base/gdevmem.c +@@ -471,6 +471,9 @@ gdev_mem_open_scan_lines(gx_device_memory *mdev, int setup_height) + line_pointers_adjacent = false; + } + if (line_pointers_adjacent) { ++ if (mdev->base == 0) ++ return_error(gs_error_rangecheck); ++ + gdev_mem_bits_size(mdev, mdev->width, mdev->height, &size); + mdev->line_ptrs = (byte **)(mdev->base + size); + } +-- +2.5.1 + +From 1bdbe4f87dc57648821e613ebcc591b84e8b35b3 Mon Sep 17 00:00:00 2001 +From: Ken Sharp <ken.sh...@artifex.com> +Date: Mon, 12 Oct 2015 16:38:09 +0100 +Subject: [PATCH] Ensure plib devices always use the clist + +Bug #696246 "Ghostscript 9.18 with -dFirstPage/-dLastPage fails for ijs and some x11 devices" + +the plib* class of devices only work if clist is present, but previously +they left the banding_type set to 'auto', which meant that under some +conditions we did not use the clist, leading to a seg fault. + +This commit simply forces banding_type to be 'BandingAlways'. + +No differences expected. +--- + devices/gdevplib.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/devices/gdevplib.c b/devices/gdevplib.c +index 51bd7ea..87c6f46 100644 +--- a/devices/gdevplib.c ++++ b/devices/gdevplib.c +@@ -691,6 +691,8 @@ plib_open(gx_device * pdev) + bdev->printer_procs.buf_procs.size_buf_device = plib_size_buf_device; + pdev->is_planar = 1; + ++ bdev->space_params.banding_type = BandingAlways; ++ + /* You might expect us to call gdev_prn_open_planar rather than + * gdev_prn_open, but if we do that, it overwrites the 2 function + * pointers we've just overwritten! */ +-- +2.5.1 + +From 5571ddfa377c5d7d98f55af40e693814ac287ae4 Mon Sep 17 00:00:00 2001 +From: Ken Sharp <ken.sh...@artifex.com> +Date: Mon, 12 Oct 2015 16:40:10 +0100 +Subject: [PATCH] prevent rinkj device crash when misconfigured (no SetupFile) + +Bug #696246 "Ghostscript 9.18 with -dFirstPage/-dLastPage fails for ijs and some x11 devices" + +The rinkj device requires a SetupFile to be given as a device parameter, +however it doesn't actually check to see if one is given, and just tries +to open the filename, with a predictable crash when none is given. + +Here we check the filename and attempt to ensure it is both present and +minimally valid. + +No differences expected. +--- + devices/gdevrinkj.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/devices/gdevrinkj.c b/devices/gdevrinkj.c +index f55bc60..12c396a 100644 +--- a/devices/gdevrinkj.c ++++ b/devices/gdevrinkj.c +@@ -1193,6 +1193,10 @@ rinkj_print_page(gx_device_printer *pdev, FILE *file) + int code = 0; + RinkjDevice *cmyk_dev; + ++ if (rdev->setup_fn == 0 || rdev->setup_fn[0] == 0) { ++ emprintf(rdev->memory, "Error, SetupFile not defined, output aborted\n"); ++ return 0; ++ } + cmyk_dev = rinkj_init(rdev, file); + if (cmyk_dev == 0) + return gs_note_error(gs_error_ioerror); +-- +2.5.1 + Deleted: ghostscript-sys-zlib.patch =================================================================== --- ghostscript-sys-zlib.patch 2015-11-01 10:30:58 UTC (rev 249913) +++ ghostscript-sys-zlib.patch 2015-11-01 10:31:07 UTC (rev 249914) @@ -1,25 +0,0 @@ -diff -up ghostscript-9.12/configure.ac.sys-zlib ghostscript-9.12/configure.ac ---- ghostscript-9.12/configure.ac.sys-zlib 2014-03-26 11:48:54.983972222 +0000 -+++ ghostscript-9.12/configure.ac 2014-03-26 11:49:36.807230531 +0000 -@@ -854,7 +854,7 @@ AC_MSG_CHECKING([for local zlib source]) - dnl zlib is needed for language level 3, and libpng - # we must define ZLIBDIR regardless because png.mak does a -I$(ZLIBDIR) - # this seems a harmless default --ZLIBDIR=src -+ZLIBDIR=$includedir - AUX_SHARED_ZLIB= - - if test -d $srcdir/zlib; then -diff -up ghostscript-9.12/configure.sys-zlib ghostscript-9.12/configure ---- ghostscript-9.12/configure.sys-zlib 2014-03-26 11:49:45.547284521 +0000 -+++ ghostscript-9.12/configure 2014-03-26 11:49:56.171350127 +0000 -@@ -6254,7 +6254,7 @@ fi - $as_echo_n "checking for local zlib source... " >&6; } - # we must define ZLIBDIR regardless because png.mak does a -I$(ZLIBDIR) - # this seems a harmless default --ZLIBDIR=src -+ZLIBDIR=$includedir - AUX_SHARED_ZLIB= - - if test -d $srcdir/zlib; then - Copied: ghostscript/repos/extra-x86_64/ghostscript-sys-zlib.patch (from rev 249913, ghostscript/trunk/ghostscript-sys-zlib.patch) =================================================================== --- ghostscript-sys-zlib.patch (rev 0) +++ ghostscript-sys-zlib.patch 2015-11-01 10:31:07 UTC (rev 249914) @@ -0,0 +1,25 @@ +diff -up ghostscript-9.12/configure.ac.sys-zlib ghostscript-9.12/configure.ac +--- ghostscript-9.12/configure.ac.sys-zlib 2014-03-26 11:48:54.983972222 +0000 ++++ ghostscript-9.12/configure.ac 2014-03-26 11:49:36.807230531 +0000 +@@ -854,7 +854,7 @@ AC_MSG_CHECKING([for local zlib source]) + dnl zlib is needed for language level 3, and libpng + # we must define ZLIBDIR regardless because png.mak does a -I$(ZLIBDIR) + # this seems a harmless default +-ZLIBDIR=src ++ZLIBDIR=$includedir + AUX_SHARED_ZLIB= + + if test -d $srcdir/zlib; then +diff -up ghostscript-9.12/configure.sys-zlib ghostscript-9.12/configure +--- ghostscript-9.12/configure.sys-zlib 2014-03-26 11:49:45.547284521 +0000 ++++ ghostscript-9.12/configure 2014-03-26 11:49:56.171350127 +0000 +@@ -6254,7 +6254,7 @@ fi + $as_echo_n "checking for local zlib source... " >&6; } + # we must define ZLIBDIR regardless because png.mak does a -I$(ZLIBDIR) + # this seems a harmless default +-ZLIBDIR=src ++ZLIBDIR=$includedir + AUX_SHARED_ZLIB= + + if test -d $srcdir/zlib; then +