summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorJulian Smith <jules@op59.net>2020-01-08 12:13:35 +0000
committerJulian Smith <jules@op59.net>2020-01-08 16:10:17 +0000
commitaf1fe01f44f528fb1322cfcf1b48aa5e1aa76059 (patch)
treecc658899d72970a5a827606136199574a241bcc3 /contrib
parente0a0c0ca0e16e8b598a7839011df4c3374ab561d (diff)
downloadghostpdl-af1fe01f44f528fb1322cfcf1b48aa5e1aa76059.tar.gz
Coverity 95007: propogate error from eprn_check_colour_info().
Diffstat (limited to 'contrib')
-rw-r--r--contrib/pcl3/eprn/gdeveprn.c11
-rw-r--r--contrib/pcl3/eprn/gdeveprn.h2
-rw-r--r--contrib/pcl3/src/gdevpcl3.c6
3 files changed, 13 insertions, 6 deletions
diff --git a/contrib/pcl3/eprn/gdeveprn.c b/contrib/pcl3/eprn/gdeveprn.c
index e7b1cb5b7..d99895fdb 100644
--- a/contrib/pcl3/eprn/gdeveprn.c
+++ b/contrib/pcl3/eprn/gdeveprn.c
@@ -836,11 +836,12 @@ int eprn_set_page_layout(eprn_Device *dev)
******************************************************************************/
-void eprn_init_device(eprn_Device *dev, const eprn_PrinterDescription *desc)
+int eprn_init_device(eprn_Device *dev, const eprn_PrinterDescription *desc)
{
eprn_Eprn *eprn = &dev->eprn;
int j;
float hres, vres;
+ int code;
if (dev->is_open) gs_closedevice((gx_device *)dev);
@@ -867,9 +868,11 @@ void eprn_init_device(eprn_Device *dev, const eprn_PrinterDescription *desc)
eprn->intensity_rendering = eprn_IR_halftones;
hres = dev->HWResolution[0];
vres = dev->HWResolution[1];
- eprn_check_colour_info(desc->colour_info, &eprn->colour_model,
+ code = eprn_check_colour_info(desc->colour_info, &eprn->colour_model,
&hres, &vres, &eprn->black_levels, &eprn->non_black_levels);
-
+ if (code) {
+ return code;
+ }
if (eprn->pagecount_file != NULL) {
gs_free(dev->memory->non_gc_memory, eprn->pagecount_file, strlen(eprn->pagecount_file) + 1,
sizeof(char), "eprn_init_device");
@@ -878,7 +881,7 @@ void eprn_init_device(eprn_Device *dev, const eprn_PrinterDescription *desc)
eprn->media_position_set = false;
- return;
+ return 0;
}
/******************************************************************************
diff --git a/contrib/pcl3/eprn/gdeveprn.h b/contrib/pcl3/eprn/gdeveprn.h
index e0c089271..e71799bd8 100644
--- a/contrib/pcl3/eprn/gdeveprn.h
+++ b/contrib/pcl3/eprn/gdeveprn.h
@@ -632,7 +632,7 @@ typedef struct {
preceding each function's implementation. */
/* Initialize the eprn device for another printer model */
-extern void eprn_init_device(eprn_Device *dev,
+extern int eprn_init_device(eprn_Device *dev,
const eprn_PrinterDescription *desc);
/* Modify the information on supported media sizes and associated hardware
diff --git a/contrib/pcl3/src/gdevpcl3.c b/contrib/pcl3/src/gdevpcl3.c
index 178246478..6b6468e02 100644
--- a/contrib/pcl3/src/gdevpcl3.c
+++ b/contrib/pcl3/src/gdevpcl3.c
@@ -897,7 +897,11 @@ static int pcl3_put_params(gx_device *device, gs_param_list *plist)
if (dev->is_open) gs_closedevice(device);
dev->printer = subdevice_list[j].value;
dev->initialized = false;
- eprn_init_device((eprn_Device *)dev, &pcl3_printers[dev->printer].desc);
+ rc = eprn_init_device((eprn_Device *)dev, &pcl3_printers[dev->printer].desc);
+ if (rc < 0) {
+ last_error = rc;
+ param_signal_error(plist, pname, last_error);
+ }
}
else {
eprintf1("%s" ERRPREF "Unknown subdevice name: `", epref);