<pre style='margin:0'>
Herby Gillot (herbygillot) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/392f842c7a2922b1ccc28ffd3202e9cbffe94b0b">https://github.com/macports/macports-ports/commit/392f842c7a2922b1ccc28ffd3202e9cbffe94b0b</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 392f842c7a2 ghostscript: update to 9.55.0
</span>392f842c7a2 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 392f842c7a2922b1ccc28ffd3202e9cbffe94b0b
</span>Author: Evan Miller <emmiller@gmail.com>
AuthorDate: Fri Jan 21 16:02:55 2022 -0500

<span style='display:block; white-space:pre;color:#404040;'>    ghostscript: update to 9.55.0
</span>---
 print/ghostscript/Portfile                         |  27 +--
 print/ghostscript/files/patch-base_scommon.h.diff  |  36 ----
 print/ghostscript/files/patch-configure.ac.diff    |  11 -
 print/ghostscript/files/patch-cve-2021-3781.diff   | 232 ---------------------
 .../files/patch-ghostscript-gsicc_lcms2.diff       |  15 ++
 5 files changed, 23 insertions(+), 298 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/print/ghostscript/Portfile b/print/ghostscript/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 86b8edf84cd..bbf926e1d6f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/print/ghostscript/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/print/ghostscript/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -4,8 +4,8 @@ PortSystem          1.0
</span> PortGroup           muniversal 1.0
 
 name                ghostscript
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version             9.54.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-revision            1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             9.55.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            0
</span> categories          print
 license             AGPL-3 BSD
 maintainers         nomaintainer
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -33,24 +33,13 @@ distfiles           ${distname}.tar.gz:source \
</span>                     ${mappingresources_commit}.zip:misc
 
 patchfiles          patch-base_unix-dll.mak.diff \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    patch-base_unixinst.mak.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-base_unixinst.mak.diff \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-ghostscript-gsicc_lcms2.diff
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Fix newline issue in configure.ac
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://bugs.ghostscript.com/show_bug.cgi?id=703880
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles-append   patch-configure.ac.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Fix issue with GCC pragmas inside function bodies
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://trac.macports.org/ticket/63105
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles-append   patch-base_scommon.h.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Fix for CVE-2021-3781
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=a9bd3dec9fde
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-patchfiles-append   patch-cve-2021-3781.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums           ghostpdl-9.54.0.tar.gz \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    rmd160  a48ecd441c761a9401a5e4a34ea90afd6936d419 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  63e54cddcdf48ea296b6315353f86b8a622d4e46959b10d536297e006b85687b \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    78771565 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           ghostpdl-9.55.0.tar.gz \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    rmd160  ad4d642da9d42f50d7cacdd3deb38548e666653f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  b73cdfcb7b1c2a305748d23b00a765bcba48310564940b1eff1457f19f898172 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    90933732 \
</span>                     ghostscript-fonts-other-6.0.tar.gz \
                     rmd160  ab60dbf71e7d91283a106c3df381cadfe173082f \
                     sha256  4fa051e341167008d37fe34c19d241060cd17b13909932cd7ca7fe759243c2de \
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/print/ghostscript/files/patch-base_scommon.h.diff b/print/ghostscript/files/patch-base_scommon.h.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 15fe307a401..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/print/ghostscript/files/patch-base_scommon.h.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,36 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- base/scommon.h.orig
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ base/scommon.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -118,14 +118,14 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static inline void
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- stream_cursor_read_init(stream_cursor_read *r, const byte *buf, size_t length)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#ifdef __GNUC__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) || defined(__clang__))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #  pragma GCC diagnostic push
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #  pragma GCC diagnostic ignored "-Warray-bounds"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     /* starting pos for pointer is always one position back */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     r->ptr = buf - 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     r->limit = r->ptr + length;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#ifdef __GNUC__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) || defined(__clang__))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #  pragma GCC diagnostic pop
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -133,14 +133,14 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- static inline void
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- stream_cursor_write_init(stream_cursor_write *w, const byte *buf, size_t length)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#ifdef __GNUC__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) || defined(__clang__))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #  pragma GCC diagnostic push
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #  pragma GCC diagnostic ignored "-Warray-bounds"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     /* starting pos for pointer is always one position back */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     w->ptr = (byte *)buf - 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     w->limit = (byte *)w->ptr + length;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#ifdef __GNUC__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6) || defined(__clang__))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #  pragma GCC diagnostic pop
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/print/ghostscript/files/patch-configure.ac.diff b/print/ghostscript/files/patch-configure.ac.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index bca935a2c11..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/print/ghostscript/files/patch-configure.ac.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,11 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- configure.ac.orig      2021-03-22 14:57:46.000000000 +0000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ configure.ac   2021-05-25 07:33:07.000000000 +0000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -3241,7 +3241,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dnl --------------------------------------------------
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ALIGN_TEXT_PROG_INCS="\
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <stdio.h> \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <stdio.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <stdlib.h>"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/print/ghostscript/files/patch-cve-2021-3781.diff b/print/ghostscript/files/patch-cve-2021-3781.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index a61d8e6f4c6..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/print/ghostscript/files/patch-cve-2021-3781.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,232 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From a9bd3dec9fde03327a4a2c69dad1036bf9632e20 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Chris Liddell <chris.liddell@artifex.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Tue, 7 Sep 2021 20:36:12 +0100
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] Bug 704342: Include device specifier strings in access
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- validation
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-for the "%pipe%", %handle%" and %printer% io devices.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-We previously validated only the part after the "%pipe%" Postscript device
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-specifier, but this proved insufficient.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-This rebuilds the original file name string, and validates it complete. The
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-slight complication for "%pipe%" is it can be reached implicitly using
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-"|" so we have to check both prefixes.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Addresses CVE-2021-3781
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- base/gdevpipe.c | 22 +++++++++++++++-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- base/gp_mshdl.c | 11 +++++++-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- base/gp_msprn.c | 10 ++++++-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- base/gp_os2pr.c | 13 +++++++++-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- base/gslibctx.c | 69 ++++++++++---------------------------------------
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 5 files changed, 65 insertions(+), 60 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/base/gdevpipe.c b/base/gdevpipe.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 96d71f5d8..5bdc485be 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./base/gdevpipe.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./base/gdevpipe.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -72,8 +72,28 @@ pipe_fopen(gx_io_device * iodev, const char *fname, const char *access,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     gs_lib_ctx_t *ctx = mem->gs_lib_ctx;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     gs_fs_list_t *fs = ctx->core->fs;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    /* The pipe device can be reached in two ways, explicltly with %pipe%
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+       or implicitly with "|", so we have to check for both
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    char f[gp_file_name_sizeof];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const char *pipestr = "|";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const size_t pipestrlen = strlen(pipestr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const size_t preflen = strlen(iodev->dname);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const size_t nlen = strlen(fname);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    int code1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (preflen + nlen >= gp_file_name_sizeof)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return_error(gs_error_invalidaccess);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    memcpy(f, iodev->dname, preflen);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    memcpy(f + preflen, fname, nlen + 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    code1 = gp_validate_path(mem, f, access);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    memcpy(f, pipestr, pipestrlen);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    memcpy(f + pipestrlen, fname, nlen + 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if (gp_validate_path(mem, fname, access) != 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (code1 != 0 && gp_validate_path(mem, f, access) != 0 )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return gs_error_invalidfileaccess;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     /*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/base/gp_mshdl.c b/base/gp_mshdl.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 2b964ed74..8d87ceadc 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./base/gp_mshdl.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./base/gp_mshdl.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -95,8 +95,17 @@ mswin_handle_fopen(gx_io_device * iodev, const char *fname, const char *access,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     long hfile;   /* Correct for Win32, may be wrong for Win64 */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     gs_lib_ctx_t *ctx = mem->gs_lib_ctx;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     gs_fs_list_t *fs = ctx->core->fs;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    char f[gp_file_name_sizeof];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const size_t preflen = strlen(iodev->dname);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const size_t nlen = strlen(fname);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if (gp_validate_path(mem, fname, access) != 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (preflen + nlen >= gp_file_name_sizeof)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return_error(gs_error_invalidaccess);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    memcpy(f, iodev->dname, preflen);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    memcpy(f + preflen, fname, nlen + 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (gp_validate_path(mem, f, access) != 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return gs_error_invalidfileaccess;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     /* First we try the open_handle method. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/base/gp_msprn.c b/base/gp_msprn.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index ed4827968..746a974f7 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./base/gp_msprn.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./base/gp_msprn.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -168,8 +168,16 @@ mswin_printer_fopen(gx_io_device * iodev, const char *fname, const char *access,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     uintptr_t *ptid = &((tid_t *)(iodev->state))->tid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     gs_lib_ctx_t *ctx = mem->gs_lib_ctx;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     gs_fs_list_t *fs = ctx->core->fs;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const size_t preflen = strlen(iodev->dname);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const size_t nlen = strlen(fname);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if (gp_validate_path(mem, fname, access) != 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (preflen + nlen >= gp_file_name_sizeof)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return_error(gs_error_invalidaccess);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    memcpy(pname, iodev->dname, preflen);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    memcpy(pname + preflen, fname, nlen + 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (gp_validate_path(mem, pname, access) != 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return gs_error_invalidfileaccess;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     /* First we try the open_printer method. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/base/gp_os2pr.c b/base/gp_os2pr.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index f852c71fc..ba54cde66 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./base/gp_os2pr.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./base/gp_os2pr.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -107,9 +107,20 @@ os2_printer_fopen(gx_io_device * iodev, const char *fname, const char *access,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            FILE ** pfile, char *rfname, uint rnamelen)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     os2_printer_t *pr = (os2_printer_t *)iodev->state;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    char driver_name[256];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    char driver_name[gp_file_name_sizeof];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     gs_lib_ctx_t *ctx = mem->gs_lib_ctx;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     gs_fs_list_t *fs = ctx->core->fs;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const size_t preflen = strlen(iodev->dname);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    const int size_t = strlen(fname);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (preflen + nlen >= gp_file_name_sizeof)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return_error(gs_error_invalidaccess);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    memcpy(driver_name, iodev->dname, preflen);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    memcpy(driver_name + preflen, fname, nlen + 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (gp_validate_path(mem, driver_name, access) != 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        return gs_error_invalidfileaccess;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     /* First we try the open_printer method. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     /* Note that the loop condition here ensures we don't
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git a/base/gslibctx.c b/base/gslibctx.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 6dfed6cd5..318039fad 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./base/gslibctx.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./base/gslibctx.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -655,82 +655,39 @@ rewrite_percent_specifiers(char *s)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- gs_add_outputfile_control_path(gs_memory_t *mem, const char *fname)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    char *fp, f[gp_file_name_sizeof];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    const int pipe = 124; /* ASCII code for '|' */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    const int len = strlen(fname);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    int i, code;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    char f[gp_file_name_sizeof];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    int code;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     /* Be sure the string copy will fit */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if (len >= gp_file_name_sizeof)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (strlen(fname) >= gp_file_name_sizeof)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return gs_error_rangecheck;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     strcpy(f, fname);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    fp = f;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     /* Try to rewrite any %d (or similar) in the string */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     rewrite_percent_specifiers(f);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    for (i = 0; i < len; i++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        if (f[i] == pipe) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--           fp = &f[i + 1];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--           /* Because we potentially have to check file permissions at two levels
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--              for the output file (gx_device_open_output_file and the low level
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--              fopen API, if we're using a pipe, we have to add both the full string,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--              (including the '|', and just the command to which we pipe - since at
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--              the pipe_fopen(), the leading '|' has been stripped.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--           code = gs_add_control_path(mem, gs_permit_file_writing, f);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--           if (code < 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--               return code;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--           code = gs_add_control_path(mem, gs_permit_file_control, f);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--           if (code < 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--               return code;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--           break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        if (!IS_WHITESPACE(f[i]))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    code = gs_add_control_path(mem, gs_permit_file_control, fp);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    code = gs_add_control_path(mem, gs_permit_file_control, f);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (code < 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return code;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    return gs_add_control_path(mem, gs_permit_file_writing, fp);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return gs_add_control_path(mem, gs_permit_file_writing, f);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- gs_remove_outputfile_control_path(gs_memory_t *mem, const char *fname)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    char *fp, f[gp_file_name_sizeof];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    const int pipe = 124; /* ASCII code for '|' */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    const int len = strlen(fname);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    int i, code;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    char f[gp_file_name_sizeof];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    int code;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     /* Be sure the string copy will fit */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if (len >= gp_file_name_sizeof)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (strlen(fname) >= gp_file_name_sizeof)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return gs_error_rangecheck;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     strcpy(f, fname);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    fp = f;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     /* Try to rewrite any %d (or similar) in the string */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    for (i = 0; i < len; i++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        if (f[i] == pipe) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--           fp = &f[i + 1];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--           /* Because we potentially have to check file permissions at two levels
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--              for the output file (gx_device_open_output_file and the low level
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--              fopen API, if we're using a pipe, we have to add both the full string,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--              (including the '|', and just the command to which we pipe - since at
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--              the pipe_fopen(), the leading '|' has been stripped.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--           code = gs_remove_control_path(mem, gs_permit_file_writing, f);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--           if (code < 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--               return code;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--           code = gs_remove_control_path(mem, gs_permit_file_control, f);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--           if (code < 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--               return code;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--           break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        if (!IS_WHITESPACE(f[i]))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--            break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    code = gs_remove_control_path(mem, gs_permit_file_control, fp);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    rewrite_percent_specifiers(f);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    code = gs_remove_control_path(mem, gs_permit_file_control, f);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (code < 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         return code;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    return gs_remove_control_path(mem, gs_permit_file_writing, fp);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return gs_remove_control_path(mem, gs_permit_file_writing, f);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- int
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-2.17.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/print/ghostscript/files/patch-ghostscript-gsicc_lcms2.diff b/print/ghostscript/files/patch-ghostscript-gsicc_lcms2.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..d2badef76bd
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/print/ghostscript/files/patch-ghostscript-gsicc_lcms2.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,15 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Undefined symbols for architecture x86_64: 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  "_gscms_transformm_color_const", referenced from:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     _gscms_transform_color in gsicc_lcms2.o
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- base/gsicc_lcms2.c.orig        2022-01-21 15:53:42.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ base/gsicc_lcms2.c     2022-01-21 15:54:00.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -462,7 +462,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ gscms_transform_color(gx_device *dev, gsicc_link_t *icclink, void *inputcolor,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                              void *outputcolor, int num_bytes)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    return gscms_transformm_color_const(dev, icclink, inputcolor, outputcolor, num_bytes);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return gscms_transform_color_const(dev, icclink, inputcolor, outputcolor, num_bytes);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int
</span></pre><pre style='margin:0'>

</pre>