diff --git a/ChangeLog b/ChangeLog index 42848727..870ff49b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,7 @@ - fix build with MSVC - fix a problem with shinkv tail processing [angelmixu] - fix a read one byte beyond buffer bug in jpegload +- make GIF parsing less strict 24/5/19 started 8.8.1 - improve realpath() use on older libc diff --git a/libvips/foreign/gifload.c b/libvips/foreign/gifload.c index 122e5f40..a76ba040 100644 --- a/libvips/foreign/gifload.c +++ b/libvips/foreign/gifload.c @@ -22,6 +22,8 @@ * - init pages to 0 before load * 14/2/19 * - rework as a sequential loader ... simpler, much lower mem use + * 23/8/18 + * - allow GIF read errors during header scan */ /* @@ -601,11 +603,12 @@ vips_foreign_load_gif_header( VipsForeignLoad *load ) gif->n_pages = 0; - do { - if( DGifGetRecordType( gif->file, &record ) == GIF_ERROR ) { - vips_foreign_load_gif_error( gif ); - return( -1 ); - } + do { + /* Don't flag errors during header scan. Some corrupt GIFs + * will fail. + */ + if( DGifGetRecordType( gif->file, &record ) == GIF_ERROR ) + continue; switch( record ) { case IMAGE_DESC_RECORD_TYPE: