[gdk-pixbuf/wip/otte/tga] tga: Error on incomplete image
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gdk-pixbuf/wip/otte/tga] tga: Error on incomplete image
- Date: Mon, 12 Oct 2015 15:18:33 +0000 (UTC)
commit a2406409fec3480895b48962cd9d7e403aecd1c0
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 | 19 ++++++++++---------
1 files changed, 10 insertions(+), 9 deletions(-)
---
diff --git a/gdk-pixbuf/io-tga.c b/gdk-pixbuf/io-tga.c
index 7500359..5015cac 100644
--- a/gdk-pixbuf/io-tga.c
+++ b/gdk-pixbuf/io-tga.c
@@ -683,24 +683,25 @@ 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 retval = 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);
- }
+ retval = 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;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]