diff --git a/gdk-pixbuf/ChangeLog b/gdk-pixbuf/ChangeLog index 3c507d472c..d8e689776c 100644 --- a/gdk-pixbuf/ChangeLog +++ b/gdk-pixbuf/ChangeLog @@ -1,3 +1,9 @@ +2008-03-11 Claudio Saavedra + + * io-bmp.c: (gdk_pixbuf__bmp_image_stop_load): Set a + GDK_ERROR_CORRUPT_IMAGE error if the loader is closed while + still reading the headers. (#505085) + 2008-03-11 Claudio Saavedra * io-bmp.c: (DecodeHeader): Check for the BMP header magic numbers diff --git a/gdk-pixbuf/io-bmp.c b/gdk-pixbuf/io-bmp.c index 099a16d96a..278c1ba993 100644 --- a/gdk-pixbuf/io-bmp.c +++ b/gdk-pixbuf/io-bmp.c @@ -693,6 +693,8 @@ gdk_pixbuf__bmp_image_begin_load(GdkPixbufModuleSizeFunc size_func, */ static gboolean gdk_pixbuf__bmp_image_stop_load(gpointer data, GError **error) { + gboolean retval = TRUE; + struct bmp_progressive_state *context = (struct bmp_progressive_state *) data; @@ -707,10 +709,20 @@ static gboolean gdk_pixbuf__bmp_image_stop_load(gpointer data, GError **error) if (context->pixbuf) g_object_unref(context->pixbuf); + if (context->read_state == READ_STATE_HEADERS) { + if (error && *error == NULL) { + g_set_error (error, + GDK_PIXBUF_ERROR, + GDK_PIXBUF_ERROR_CORRUPT_IMAGE, + _("Premature end-of-file encountered")); + } + retval = FALSE; + } + g_free(context->buff); g_free(context); - return TRUE; + return retval; }