Sophie

Sophie

distrib > Mageia > 6 > armv7hl > media > core-updates-src > by-pkgid > bc219369320b6b5781eed48254462cef > files > 13

ghostscript-9.25-1.2.mga6.src.rpm

From 52a37b63bb49e221c3f1b5d1ee11b63ce69da1f0 Mon Sep 17 00:00:00 2001
From: Shailesh Mistry <shailesh.mistry@hotmail.co.uk>
Date: Tue, 25 Sep 2018 22:25:26 +0100
Subject: [PATCH] Bug 697545 : Prevent SEGV in gs_setdevice_no_erase.

Prevent SEGV if gsicc_init_iccmanager fails.

Error created using :-
MEMENTO_FAILAT=350 ./membin/gpcl6 -sDEVICE=pbmraw -dMaxBitmap=2000 -o /dev/null ./tests_private/pcl/pcl5cfts/fts.0070
---
 base/gsdevice.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/base/gsdevice.c b/base/gsdevice.c
index e38086d..a99ff25 100644
--- a/base/gsdevice.c
+++ b/base/gsdevice.c
@@ -498,7 +498,9 @@ gs_setdevice_no_erase(gs_gstate * pgs, gx_device * dev)
     if (libctx->io_device_table != NULL) {
         cmm_dev_profile_t *dev_profile;
         if (pgs->icc_manager->lab_profile == NULL) {  /* pick one not set externally */
-            gsicc_init_iccmanager(pgs);
+            code = gsicc_init_iccmanager(pgs);
+            if (code < 0)
+                return(code);
         }
         /* Also, if the device profile is not yet set then take care of that
            before we start filling pages, if we can */
@@ -720,7 +722,8 @@ gs_nulldevice(gs_gstate * pgs)
 
         if ((code = gs_setdevice_no_erase(pgs, ndev)) < 0)
             gs_free_object(pgs->memory, ndev, "gs_copydevice(device)");
-        gs_currentdevice_inline(pgs)->LockSafetyParams = saveLockSafety;
+        if (pgs->device != NULL)
+            pgs->device->LockSafetyParams = saveLockSafety;
     }
     return code;
 }
-- 
2.9.1