[gs-commits] ghostpdl branch, master, updated. jbig2dec-0.14-1971-gaa13e1a

[email protected] (Julian Smith) Tue, 26 Nov 2019 12:03:06 +0000 (UTC)
Newsgroups gmane.comp.printing.ghostscript.cvs
Message-ID <[email protected]>
The ghostpdl branch, master has been updated
       via  aa13e1a3fac84ada2b676f9c5fcffb30f5df74dd (commit)
      from  34fc5a7613eea288a8426d3be425c93647954668 (commit)

----------------------------------------------------------------------
commit aa13e1a3fac84ada2b676f9c5fcffb30f5df74dd
Author: Julian Smith <[email protected]>
Date:   Mon Nov 25 15:14:51 2019 +0000

    Coverity 351088: check for errors in px_begin_error_page().
    
    Had to change px_begin_error_page()'s API to use out-parameter, so that return
    value is error code.

diff --git a/pcl/pxl/pxerrors.c b/pcl/pxl/pxerrors.c
index 19203a2..3697257 100644
--- a/pcl/pxl/pxerrors.c
+++ b/pcl/pxl/pxerrors.c
@@ -227,12 +227,17 @@ px_error_message_line(char message[px_max_error_line + 1], int N,
 
 /* Begin an error page.  Return the initial Y value. */
 int
-px_begin_error_page(px_state_t * pxs)
+px_begin_error_page(px_state_t * pxs, int* y)
 {
+    int code;
+
     gs_gstate *pgs = pxs->pgs;
 
-    gs_initgraphics(pgs);
-    gs_erasepage(pgs);
+    code = gs_initgraphics(pgs);
+    if (code < 0)   return code;
+
+    code = gs_erasepage(pgs);
+    if (code < 0)   return code;
     /* Don't call pxSetPageDefaultCTM -- we don't want rotation or */
     /* unusual Units of Measure -- but do invert the Y axis. */
     /*pxSetPageDefaultCTM(NULL, pxs); */
@@ -242,8 +247,9 @@ px_begin_error_page(px_state_t * pxs)
         px_get_default_media_size(pxs, &pt);
         gs_translate(pgs, 0.0, pt.y);
         gs_scale(pgs, 1.0, -1.0);
-        return 90;
+        *y = 90;
     }
+    return 0;
 }
 
 /* Print a message on an error page. */
diff --git a/pcl/pxl/pxerrors.h b/pcl/pxl/pxerrors.h
index 00568c2..d765e4e 100644
--- a/pcl/pxl/pxerrors.h
+++ b/pcl/pxl/pxerrors.h
@@ -46,8 +46,8 @@ int px_error_message_line(char message[px_max_error_line + 1], int N,
                           const px_parser_state_t * st,
                           const px_state_t * pxs);
 
-/* Begin an error page.  Return the initial Y value. */
-int px_begin_error_page(px_state_t * pxs);
+/* Begin an error page.  Returns the initial Y value in *y. */
+int px_begin_error_page(px_state_t * pxs, int * y);
 
 /* Print a message on an error page. */
 /* Return the updated Y value. */
diff --git a/pcl/pxl/pxtop.c b/pcl/pxl/pxtop.c
index bf9d346..b1d7e45 100644
--- a/pcl/pxl/pxtop.c
+++ b/pcl/pxl/pxtop.c
@@ -466,8 +466,12 @@ pxl_impl_report_errors(pl_interp_implementation_t * impl,
 
     if (code >= 0)
         return code;            /* not really an error */
-    if (report & eErrorPage)
-        y = px_begin_error_page(pxs);
+    if (report & eErrorPage) {
+        int ecode = px_begin_error_page(pxs, &y);
+        if (ecode < 0) {
+            return ecode;
+        }
+    }
     while ((N = px_error_message_line(message, N, subsystem,
                                       code, st, pxs)) >= 0) {
         if ((report & eBackChannel) || force_to_cout)


Summary of changes:
 pcl/pxl/pxerrors.c | 14 ++++++++++----
 pcl/pxl/pxerrors.h |  4 ++--
 pcl/pxl/pxtop.c    |  8 ++++++--
 3 files changed, 18 insertions(+), 8 deletions(-)