diff --git a/ghostscript-9.24-000-let-CUPS-id-itself-as-DeviceN.patch b/ghostscript-9.24-000-let-CUPS-id-itself-as-DeviceN.patch new file mode 100644 index 0000000..b8a1a5d --- /dev/null +++ b/ghostscript-9.24-000-let-CUPS-id-itself-as-DeviceN.patch @@ -0,0 +1,79 @@ +From bc3df0773fccf4b4906a3e59652ad646ea0fee91 Mon Sep 17 00:00:00 2001 +From: Chris Liddell +Date: Tue, 4 Sep 2018 17:01:08 +0100 +Subject: [PATCH] For ICC profile validation, have cups id iteself as DeviceN + +Give the range of color spaces and models that cups supports, we can't +reasonably provide (or expect others to provide) output ICC profiles for all +cases. + +For the purpose of profile validation, have it claim to be DeviceN and benefit +from the extra tolerance in profiles allowed for that class of device. +--- + cups/gdevcups.c | 15 ++++++++++++++- + devices/devs.mak | 2 +- + 2 files changed, 15 insertions(+), 2 deletions(-) + +diff --git a/cups/gdevcups.c b/cups/gdevcups.c +index c1574f860..decd8eb35 100644 +--- a/cups/gdevcups.c ++++ b/cups/gdevcups.c +@@ -70,6 +70,7 @@ + #include "std.h" /* to stop stdlib.h redefining types */ + #include "gdevprn.h" + #include "gsparam.h" ++#include "gxdevsop.h" + #include "arch.h" + #include "gsicc_manage.h" + +@@ -252,6 +253,7 @@ private int cups_put_params(gx_device *, gs_param_list *); + private int cups_set_color_info(gx_device *); + private dev_proc_sync_output(cups_sync_output); + private prn_dev_proc_get_space_params(cups_get_space_params); ++private int cups_spec_op(gx_device *dev_, int op, void *data, int datasize); + + #ifdef dev_t_proc_encode_color + private cm_map_proc_gray(cups_map_gray); +@@ -392,7 +394,7 @@ private gx_device_procs cups_procs = + NULL, /* push_transparency_state */ + NULL, /* pop_transparency_state */ + NULL, /* put_image */ +- ++ cups_spec_op + }; + + #define prn_device_body_copies(dtype, procs, dname, w10, h10, xdpi, ydpi, lo, to, lm, bm, rm, tm, ncomp, depth, mg, mc, dg, dc, print_pages)\ +@@ -5927,6 +5929,17 @@ cups_print_planar(gx_device_printer *pdev, + return (0); + } + ++private int ++cups_spec_op(gx_device *dev_, int op, void *data, int datasize) ++{ ++ /* Although not strictly DeviceN, the range of color models ++ this device supports presets similar issues. ++ */ ++ if (op == gxdso_supports_devn) { ++ return true; ++ } ++ return gx_default_dev_spec_op(dev_, op, data, datasize); ++} + + /* + */ +diff --git a/devices/devs.mak b/devices/devs.mak +index c85604cc0..e8654e566 100644 +--- a/devices/devs.mak ++++ b/devices/devs.mak +@@ -1860,7 +1860,7 @@ $(DD)pwgraster.dev : $(lcups_dev) $(lcupsi_dev) $(cups_) $(GDEV) \ + $(ADDMOD) $(DD)pwgraster -include $(lcups_dev) + $(ADDMOD) $(DD)pwgraster -include $(lcupsi_dev) + +-$(DEVOBJ)gdevcups.$(OBJ) : $(LCUPSSRCDIR)$(D)gdevcups.c $(std_h) $(DEVS_MAK) $(MAKEDIRS) ++$(DEVOBJ)gdevcups.$(OBJ) : $(LCUPSSRCDIR)$(D)gdevcups.c $(std_h) $(gxdevsop_h) $(DEVS_MAK) $(MAKEDIRS) + $(CUPS_CC) $(DEVO_)gdevcups.$(OBJ) $(C_) $(CFLAGS) $(CUPSCFLAGS) \ + $(I_)$(GLSRC) \ + $(I_)$(DEVSRC) \ +-- +2.14.4 + diff --git a/ghostscript-9.24-001-retain-LockSafetyParams.patch b/ghostscript-9.24-001-retain-LockSafetyParams.patch new file mode 100644 index 0000000..a8852aa --- /dev/null +++ b/ghostscript-9.24-001-retain-LockSafetyParams.patch @@ -0,0 +1,41 @@ +From 5812b1b78fc4d36fdc293b7859de69241140d590 Mon Sep 17 00:00:00 2001 +From: Chris Liddell +Date: Tue, 4 Sep 2018 23:18:46 +0100 +Subject: [PATCH] Bug 699714: retain .LockSafetyParams through failed + .installpagedevice + +In the event that the .trysetparams fails during .installpagedevice, catch the +error, and ensure that at least the .LockSafetyParams is set. +--- + Resource/Init/gs_setpd.ps | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/Resource/Init/gs_setpd.ps b/Resource/Init/gs_setpd.ps +index bba3c8c0e..aee96149e 100644 +--- a/Resource/Init/gs_setpd.ps ++++ b/Resource/Init/gs_setpd.ps +@@ -95,12 +95,19 @@ level2dict begin + { % Since setpagedevice doesn't create new device objects, + % we must (carefully) reinstall the old parameters in + % the same device. +- .currentpagedevice pop //null currentdevice //null .trysetparams ++ .currentpagedevice pop //null currentdevice //null ++ {.trysetparams} .internalstopped ++ { ++ //null ++ } if + dup type /booleantype eq + { pop pop } +- { % This should never happen! ++ { + SETPDDEBUG { (Error in .trysetparams!) = pstack flush } if + cleartomark pop pop pop ++ % if resetting the entire device state failed, at least put back the se ++ currentdevice //null //false mark /.LockSafetyParams .currentpagedevice pop ++ /.LockSafetyParams .knownget not {//false} if .putdeviceparamsonly + /.installpagedevice cvx /rangecheck signalerror + } + ifelse pop pop +-- +2.14.4 + diff --git a/ghostscript.spec b/ghostscript.spec index 37042c8..073a49f 100644 --- a/ghostscript.spec +++ b/ghostscript.spec @@ -93,6 +93,8 @@ BuildRequires: libXt-devel # Upstream patches -- official upstream patches released by upstream since the # ---------------- last rebase that are necessary for any reason: #Patch000: example000.patch +Patch000: ghostscript-9.24-000-let-CUPS-id-itself-as-DeviceN.patch +Patch001: ghostscript-9.24-001-retain-LockSafetyParams.patch # Downstream patches -- these should be always included when doing rebase: @@ -463,6 +465,7 @@ done %changelog * Wed Sep 05 2018 David Kaspar [Dee'Kej] - 9.24-1 - rebase to latest upstream version, which contains important CVE fixes +- additional ZER0-DAY fixes added * Wed Aug 29 2018 David Kaspar [Dee'Kej] - 9.23-7 - ghostscript-9.23-002-fixes-for-set-of-CVEs-reported-by-Google.patch added