better handling of truncated PNG files

improve fail support, and bail out sooner

see https://github.com/jcupitt/libvips/issues/646
This commit is contained in:
John Cupitt 2017-04-26 10:25:52 +01:00
parent f6ad8465b6
commit cc38097560
2 changed files with 10 additions and 2 deletions

View File

@ -1,5 +1,6 @@
23/4/17 started 8.5.5 23/4/17 started 8.5.5
- doc polishing - doc polishing
- more improvements for tuncated PNG files, thanks juyunsang
23/4/17 started 8.5.4 23/4/17 started 8.5.4
- don't depend on image width when setting n_lines, thanks kleisauke - don't depend on image width when setting n_lines, thanks kleisauke

View File

@ -63,6 +63,8 @@
* - use dbuf for buffer output * - use dbuf for buffer output
* 30/3/17 * 30/3/17
* - better behaviour for truncated png files, thanks Yury * - better behaviour for truncated png files, thanks Yury
* 26/4/17
* - better @fail handling with truncated PNGs
*/ */
/* /*
@ -127,8 +129,8 @@ user_error_function( png_structp png_ptr, png_const_charp error_msg )
/* This function must not return or the default error handler will be /* This function must not return or the default error handler will be
* invoked. * invoked.
longjmp( png_jmpbuf( png_ptr ), -1 );
*/ */
longjmp( png_jmpbuf( png_ptr ), -1 );
} }
static void static void
@ -409,7 +411,7 @@ png2vips_header( Read *read, VipsImage *out )
void *profile_copy; void *profile_copy;
#ifdef DEBUG #ifdef DEBUG
printf( "png2vips_header: attaching %zd bytes of ICC profile\n", printf( "png2vips_header: attaching %d bytes of ICC profile\n",
proflen ); proflen );
printf( "png2vips_header: name = \"%s\"\n", name ); printf( "png2vips_header: name = \"%s\"\n", name );
#endif /*DEBUG*/ #endif /*DEBUG*/
@ -538,6 +540,11 @@ png2vips_generate( VipsRegion *or,
printf( "png2vips_generate: thread %p\n", printf( "png2vips_generate: thread %p\n",
g_thread_self() ); g_thread_self() );
#endif /*DEBUG*/ #endif /*DEBUG*/
/* ... except if fail is on, in which case we bail out.
*/
if( read->fail )
return( -1 );
} }
read->y_pos += 1; read->y_pos += 1;