[gthumb] jpeg loader: fixed possible crash when a jpeg image is broken



commit 82fa9d0007d8c34c62ce7177ec729c314df47ddb
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Fri Mar 1 21:07:53 2019 +0100

    jpeg loader: fixed possible crash when a jpeg image is broken

 extensions/cairo_io/cairo-image-surface-jpeg.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)
---
diff --git a/extensions/cairo_io/cairo-image-surface-jpeg.c b/extensions/cairo_io/cairo-image-surface-jpeg.c
index 92abc051..3453d5a1 100644
--- a/extensions/cairo_io/cairo-image-surface-jpeg.c
+++ b/extensions/cairo_io/cairo-image-surface-jpeg.c
@@ -180,6 +180,7 @@ _cairo_image_surface_create_from_jpeg (GInputStream  *istream,
        unsigned char                 *p_buffer;
        int                            x;
        gboolean                       read_all_scanlines = FALSE;
+       gboolean                       finished = FALSE;
 
        image = gth_image_new ();
        surface = NULL;
@@ -585,12 +586,15 @@ _cairo_image_surface_create_from_jpeg (GInputStream  *istream,
                surface = NULL; /* ignore other jpeg errors */
        }
 
-       if (read_all_scanlines)
-               jpeg_finish_decompress (&srcinfo);
-       else
-               jpeg_abort_decompress (&srcinfo);
-       jpeg_destroy_decompress (&srcinfo);
-       g_free (in_buffer);
+       if (! finished) {
+               finished = TRUE;
+               if (read_all_scanlines)
+                       jpeg_finish_decompress (&srcinfo);
+               else
+                       jpeg_abort_decompress (&srcinfo);
+               jpeg_destroy_decompress (&srcinfo);
+               g_free (in_buffer);
+       }
 
        return image;
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]