[gdk-pixbuf] tga: Error on incomplete image



commit aa4d63da62c4596eb6b810838c3d10b70289caaf
Author: Benjamin Otte <otte redhat com>
Date:   Mon Oct 12 15:57:36 2015 +0200

    tga: Error on incomplete image
    
    Previously, we would silently ignore the case where the image didn't
    have enough pixels.
    That is not a good idea, in particular when we haven't even read a
    header.

 gdk-pixbuf/io-tga.c |   22 ++++++++++++----------
 1 files changed, 12 insertions(+), 10 deletions(-)
---
diff --git a/gdk-pixbuf/io-tga.c b/gdk-pixbuf/io-tga.c
index 7500359..13f8d81 100644
--- a/gdk-pixbuf/io-tga.c
+++ b/gdk-pixbuf/io-tga.c
@@ -683,27 +683,29 @@ static gboolean gdk_pixbuf__tga_load_increment(gpointer data,
 static gboolean gdk_pixbuf__tga_stop_load(gpointer data, GError **err)
 {
        TGAContext *ctx = (TGAContext *) data;
-       g_return_val_if_fail(ctx != NULL, FALSE);
+        gboolean result = TRUE;
+
+       g_return_val_if_fail (ctx != NULL, FALSE);
 
-        if (ctx->pbuf)
+        if (ctx->pbuf == NULL || tga_pixels_remaining (ctx))
           {
-            TGAColor transparent_black = { 0, 0, 0, 0 };
-            gsize remaining;
+            g_set_error_literal (err,
+                                 GDK_PIXBUF_ERROR,
+                                 GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
+                                 _("TGA image was truncated or incomplete."));
 
-            for (remaining = tga_pixels_remaining (ctx); remaining; remaining--)
-              {
-                tga_write_pixel (ctx, &transparent_black);
-              }
+            result = FALSE;
           }
 
        g_free (ctx->hdr);
        if (ctx->cmap)
           colormap_free (ctx->cmap);
        if (ctx->pbuf)
-               g_object_unref (ctx->pbuf);
+          g_object_unref (ctx->pbuf);
        gdk_pixbuf_buffer_queue_unref (ctx->input);
        g_free (ctx);
-       return TRUE;
+
+       return result;
 }
 
 #ifndef INCLUDE_tga


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