diff options
author | Julian Smith <jules@op59.net> | 2020-01-08 12:13:35 +0000 |
---|---|---|
committer | Julian Smith <jules@op59.net> | 2020-01-08 16:10:17 +0000 |
commit | af1fe01f44f528fb1322cfcf1b48aa5e1aa76059 (patch) | |
tree | cc658899d72970a5a827606136199574a241bcc3 /contrib | |
parent | e0a0c0ca0e16e8b598a7839011df4c3374ab561d (diff) | |
download | ghostpdl-af1fe01f44f528fb1322cfcf1b48aa5e1aa76059.tar.gz |
Coverity 95007: propogate error from eprn_check_colour_info().
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/pcl3/eprn/gdeveprn.c | 11 | ||||
-rw-r--r-- | contrib/pcl3/eprn/gdeveprn.h | 2 | ||||
-rw-r--r-- | contrib/pcl3/src/gdevpcl3.c | 6 |
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); |