small cleanups from "unlimited" option

This commit is contained in:
John Cupitt 2021-08-29 19:08:51 +01:00
parent bb88490a17
commit 451cfcd282
4 changed files with 21 additions and 7 deletions

View File

@ -1,5 +1,6 @@
16/8/21 started 8.11.4
- fix off-by-one error in new rank fast path
- add "unlimited" flag to png load [joshuamsager]
14/7/21 started 8.11.3
- build threadpool later [kleisauke]

View File

@ -2,6 +2,8 @@
*
* 5/12/11
* - from tiffload.c
* 29/8/21 joshuamsager
* - add "unlimited" flag to png load
*/
/*
@ -133,7 +135,8 @@ vips_foreign_load_png_load( VipsForeignLoad *load )
{
VipsForeignLoadPng *png = (VipsForeignLoadPng *) load;
if( vips__png_read_source( png->source, load->real, load->fail, png->unlimited ) )
if( vips__png_read_source( png->source, load->real,
load->fail, png->unlimited ) )
return( -1 );
return( 0 );

View File

@ -4,6 +4,8 @@
* - from pngload.c
* 19/2/21 781545872
* - read out background, if we can
* 29/8/21 joshuamsager
* - add "unlimited" flag to png load
*/
/*
@ -354,8 +356,10 @@ vips_foreign_load_png_header( VipsForeignLoad *load )
* they wish.
*/
if ( !png->unlimited ) {
spng_set_image_limits( png->ctx, VIPS_MAX_COORD, VIPS_MAX_COORD );
spng_set_chunk_limits( png->ctx, 60 * 1024 * 1024, 60 * 1024 * 1024 );
spng_set_image_limits( png->ctx,
VIPS_MAX_COORD, VIPS_MAX_COORD );
spng_set_chunk_limits( png->ctx,
60 * 1024 * 1024, 60 * 1024 * 1024 );
}
if( vips_source_rewind( png->source ) )

View File

@ -81,6 +81,8 @@
* - only warn for saving bad profiles, don't fail
* 19/2/21 781545872
* - read out background, if we can
* 29/8/21 joshuamsager
* - add "unlimited" flag to png load
*/
/*
@ -256,7 +258,8 @@ vips_png_read_source( png_structp pPng, png_bytep data, png_size_t length )
}
static Read *
read_new( VipsSource *source, VipsImage *out, gboolean fail, gboolean unlimited )
read_new( VipsSource *source, VipsImage *out,
gboolean fail, gboolean unlimited )
{
Read *read;
@ -564,7 +567,8 @@ png2vips_header( Read *read, VipsImage *out )
/* Very large numbers of text chunks are used in DoS
* attacks.
*/
if( !read->unlimited && num_text > MAX_PNG_TEXT_CHUNKS ) {
if( !read->unlimited &&
num_text > MAX_PNG_TEXT_CHUNKS ) {
vips_error( "vipspng",
"%s", _( "too many text chunks" ) );
return( -1 );
@ -778,7 +782,8 @@ vips__png_ispng_source( VipsSource *source )
}
int
vips__png_header_source( VipsSource *source, VipsImage *out, gboolean unlimited )
vips__png_header_source( VipsSource *source, VipsImage *out,
gboolean unlimited )
{
Read *read;
@ -795,7 +800,8 @@ vips__png_header_source( VipsSource *source, VipsImage *out, gboolean unlimited
}
int
vips__png_read_source( VipsSource *source, VipsImage *out, gboolean fail, gboolean unlimited )
vips__png_read_source( VipsSource *source, VipsImage *out,
gboolean fail, gboolean unlimited )
{
Read *read;