From 286bdae42707fb53908ef0eaf9b0c48986485537 Mon Sep 17 00:00:00 2001 From: Till Kamppeter Date: Fri, 19 Nov 2021 23:39:48 +0100 Subject: [PATCH] libcupsfilters: No exit() in mupdftoraster() and rastertopwg() An error in a single filter function should not kill the whole Printer Application. --- cupsfilters/mupdftoraster.c | 7 ++++--- cupsfilters/rastertopwg.c | 8 ++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/cupsfilters/mupdftoraster.c b/cupsfilters/mupdftoraster.c index 5e759bd01..a6504674c 100644 --- a/cupsfilters/mupdftoraster.c +++ b/cupsfilters/mupdftoraster.c @@ -80,7 +80,7 @@ parse_doc_type(FILE *fp, filter_logfunc_t log, void *ld) return 0; if(log) log(ld, FILTER_LOGLEVEL_DEBUG, "mupdftoraster: input file cannot be identified"); - exit(EXIT_FAILURE); + return -1; } static void @@ -339,8 +339,9 @@ mupdftoraster (int inputfd, /* I - File descriptor input stream */ /* If doc type is not PDF exit */ - if(parse_doc_type(fp, log, ld)) - empty = 1; + empty = parse_doc_type(fp, log, ld); + if (empty == -1) + goto out; /* Check status of color management in CUPS */ cm_calibrate = cmGetCupsColorCalibrateMode(data, options, num_options); diff --git a/cupsfilters/rastertopwg.c b/cupsfilters/rastertopwg.c index 912a7c2c6..8d93a7031 100644 --- a/cupsfilters/rastertopwg.c +++ b/cupsfilters/rastertopwg.c @@ -62,8 +62,6 @@ rastertopwg(int inputfd, /* I - File descriptor input stream */ filter_out_format_t output_format; - inras = cupsRasterOpen(inputfd, CUPS_RASTER_READ); - if (parameters) { output_format = *(filter_out_format_t *)parameters; @@ -74,10 +72,12 @@ rastertopwg(int inputfd, /* I - File descriptor input stream */ else { if (log) log(ld, FILTER_LOGLEVEL_ERROR, - " rastertopwg: Output format not specified."); - exit(1); + "rastertopwg: Output format not specified."); + return (1); } + inras = cupsRasterOpen(inputfd, CUPS_RASTER_READ); + if (data->ppd == NULL && data->ppdfile) data->ppd = ppdOpenFile(data->ppdfile); -- 2.47.3