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