summaryrefslogtreecommitdiff
path: root/gdk-pixbuf
diff options
context:
space:
mode:
Diffstat (limited to 'gdk-pixbuf')
-rw-r--r--gdk-pixbuf/ChangeLog4
-rw-r--r--gdk-pixbuf/io-gif.c11
2 files changed, 15 insertions, 0 deletions
diff --git a/gdk-pixbuf/ChangeLog b/gdk-pixbuf/ChangeLog
index 494890123..ebf30d087 100644
--- a/gdk-pixbuf/ChangeLog
+++ b/gdk-pixbuf/ChangeLog
@@ -1,3 +1,7 @@
+2002-03-15 Matthias Clasen <maclas@gmx.de>
+
+ * io-gif.c (gif_get_frame_info): Catch invalid frame dimensions.
+
2002-03-13 Matthias Clasen <maclas@gmx.de>
* test-images.h: Add valid_ras_test and invalid_bmp_1.
diff --git a/gdk-pixbuf/io-gif.c b/gdk-pixbuf/io-gif.c
index c01a58ff0..a5cab7a46 100644
--- a/gdk-pixbuf/io-gif.c
+++ b/gdk-pixbuf/io-gif.c
@@ -1135,6 +1135,17 @@ gif_get_frame_info (GifContext *context)
context->x_offset = LM_to_uint (buf[0], buf[1]);
context->y_offset = LM_to_uint (buf[2], buf[3]);
+ if ((context->frame_height == 0) || (context->frame_len == 0)) {
+ context->state = GIF_DONE;
+
+ g_set_error (context->error,
+ GDK_PIXBUF_ERROR,
+ GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
+ _("GIF image contained a frame with height or width 0."));
+
+ return -2;
+ }
+
if (((context->frame_height + context->y_offset) > context->height) ||
((context->frame_len + context->x_offset) > context->width)) {
/* All frames must fit in the image bounds */