Fix for 688005, Crash in jpeg error handling

Alex Cherepanov <[email protected]> Mon, 28 Mar 2005 07:48:23 -0500
Newsgroups gmane.comp.printing.ghostscript.patches
Organization Coscript Software
Message-ID <[email protected]>
Fix error reporting in the jpeg driver. Initialize report_error member
of jpeg encoding stream and propagate stream exceptions to the
interpreter level.
Bug 688005

_______________________________________________
gs-code-review mailing list
[email protected]
http://www.ghostscript.com/mailman/listinfo/gs-code-review
688005.diff (text/plain, 1 KB)
Index: gs/src/gdevjpeg.c
===================================================================
RCS file: /cvs/ghostscript/gs/src/gdevjpeg.c,v
retrieving revision 1.8
diff -u -r1.8 gdevjpeg.c
--- gs/src/gdevjpeg.c	7 Oct 2004 05:18:34 -0000	1.8
+++ gs/src/gdevjpeg.c	28 Mar 2005 12:40:42 -0000
@@ -175,10 +175,9 @@
 	code = gs_note_error(gs_error_VMerror);
 	goto fail;
     }
-    /* Create the DCT decoder state. */
+    /* Create the DCT encoder state. */
     jcdp->template = s_DCTE_template;
-    state.template = &jcdp->template;
-    state.memory = 0;
+    s_init_state((stream_state *)&state, &jcdp->template, 0);
     if (state.template->set_defaults)
 	(*state.template->set_defaults) ((stream_state *) & state);
     state.QFactor = 1.0;	/* disable quality adjustment in zfdcte.c */
@@ -258,6 +257,10 @@
 	byte *data;
 	uint ignore_used;
 
+        if (jstrm.end_status) {
+	    code = gs_note_error(gs_error_ioerror);
+            goto done;
+        }
 	gdev_prn_get_bits(pdev, lnum, in, &data);
 	sputs(&jstrm, data, state.scan_line_size, &ignore_used);
     }