From ad3ad6b389653722507e588c5cb34d8731e49e89 Mon Sep 17 00:00:00 2001 From: Chris Liddell Date: Mon, 26 Nov 2018 18:01:25 +0000 Subject: [PATCH] Have gs_cet.ps run from gs_init.ps Previously gs_cet.ps was run on the command line, to set up the interpreter state so our output more closely matches the example output for the QL CET tests. Allow a -dCETMODE command line switch, which will cause gs_init.ps to run the file directly. This works better for gpdl as it means the changes are made in the intial interpreter state, rather than after initialisation is complete. This also means adding a definition of the default procedure for black generation and under color removal (rather it being defined in-line in .setdefaultbgucr Also, add a check so gs_cet.ps only runs once - if we try to run it a second time, we'll just skip over the file, flushing through to the end. CVE: CVE-2019-3835 Upstream-Status: Backport [git://git.ghostscript.com/ghostpdl.git] Signed-off-by: Ovidiu Panait --- Resource/Init/gs_cet.ps | 11 ++++++++++- Resource/Init/gs_init.ps | 13 ++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/Resource/Init/gs_cet.ps b/Resource/Init/gs_cet.ps index d3e1686..75534bb 100644 --- a/Resource/Init/gs_cet.ps +++ b/Resource/Init/gs_cet.ps @@ -1,6 +1,11 @@ %!PS % Set defaults for Ghostscript to match Adobe CPSI behaviour for CET +systemdict /product get (PhotoPRINT SE 5.0v2) readonly eq +{ + (%END GS_CET) .skipeof +} if + % do this in the server level so it is persistent across jobs //true 0 startjob not { (*** Warning: CET startup is not in server default) = flush @@ -25,7 +30,9 @@ currentglobal //true setglobal /UNROLLFORMS true def -{ } bind dup +(%.defaultbgrucrproc) cvn { } bind def + +(%.defaultbgrucrproc) cvn load dup setblackgeneration setundercolorremoval 0 array cvx readonly dup dup dup setcolortransfer @@ -109,3 +116,5 @@ userdict /.smoothness currentsmoothness put % end of slightly nasty hack to give consistent cluster results //false 0 startjob pop % re-enter encapsulated mode + +%END GS_CET diff --git a/Resource/Init/gs_init.ps b/Resource/Init/gs_init.ps index 45bebf4..e6b9cd2 100644 --- a/Resource/Init/gs_init.ps +++ b/Resource/Init/gs_init.ps @@ -1538,10 +1538,18 @@ setpacking % any-part-of-pixel rule. 0.5 .setfilladjust } bind def + % Set the default screen and BG/UCR. +% We define the proc here, rather than inline in .setdefaultbgucr +% for the benefit of gs_cet.ps so jobs that do anything that causes +% .setdefaultbgucr to be called will still get the redefined proc +% in gs_cet.ps +(%.defaultbgrucrproc) cvn { pop 0 } def + /.setdefaultbgucr { systemdict /setblackgeneration known { - { pop 0 } dup setblackgeneration setundercolorremoval + (%.defaultbgrucrproc) cvn load dup + setblackgeneration setundercolorremoval } if } bind def /.useloresscreen { % - .useloresscreen @@ -2491,4 +2499,7 @@ WRITESYSTEMDICT { % be 'true' in some cases. userdict /AGM_preserve_spots //false put +systemdict /CETMODE .knownget +{ { (gs_cet.ps) runlibfile } if } if + % The interpreter will run the initial procedure (start). -- 2.18.1