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

[email protected] (Robin Watts) Mon, 25 Nov 2019 20:28:58 +0000 (UTC)
Newsgroups gmane.comp.printing.ghostscript.cvs
Message-ID <[email protected]>
The ghostpdl branch, master has been updated
       via  4513a4cd5aff5f09e54460bdaea862389067631a (commit)
       via  34fc5a7613eea288a8426d3be425c93647954668 (commit)
      from  a570a05622cb178c031db64711b412cf640038b2 (commit)

----------------------------------------------------------------------
commit 4513a4cd5aff5f09e54460bdaea862389067631a
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..1a36f03 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) {
+        code = px_begin_error_page(pxs, &y);
+        if (code < 0) {
+            return code;
+        }
+    }
     while ((N = px_error_message_line(message, N, subsystem,
                                       code, st, pxs)) >= 0) {
         if ((report & eBackChannel) || force_to_cout)

----------------------------------------------------------------------
commit 34fc5a7613eea288a8426d3be425c93647954668
Author: Julian Smith <[email protected]>
Date:   Mon Nov 25 14:42:05 2019 +0000

    Coverity 351086: Fix out-of-bounds access to score[2].

diff --git a/gpdl/psitop.c b/gpdl/psitop.c
index f7ca110..0ba3c01 100644
--- a/gpdl/psitop.c
+++ b/gpdl/psitop.c
@@ -108,7 +108,7 @@ check_token(int token_type, const char *s, const char *e, int *score)
     TOKEN_CHECK("translate")
     TOKEN_CHECK("systemdict")
 
-    if (score[0] > 1024 && score[2] >= 3)
+    if (score[0] > 1024 && score[1] >= 3)
         return 1;
     if (score[0] < -1024)
         return 1;


Summary of changes:
 gpdl/psitop.c      |  2 +-
 pcl/pxl/pxerrors.c | 14 ++++++++++----
 pcl/pxl/pxerrors.h |  4 ++--
 pcl/pxl/pxtop.c    |  8 ++++++--
 4 files changed, 19 insertions(+), 9 deletions(-)