@ -2283,6 +2283,7 @@ static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64], stbi__
k + = ( r > > 4 ) & 15 ; // run
s = r & 15 ; // combined length
j - > code_buffer < < = s ;
if ( s > j - > code_bits ) return stbi__err ( " bad huffman code " , " Combined length longer than code bits available " ) ;
j - > code_bits - = s ;
zig = stbi__jpeg_dezigzag [ k + + ] ;
data [ zig ] = ( short ) ( ( r > > 8 ) * ( 1 < < shift ) ) ;
@ -5116,6 +5117,7 @@ static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp)
if ( first ) return stbi__err ( " first not IHDR " , " Corrupt PNG " ) ;
if ( pal_img_n & & ! pal_len ) return stbi__err ( " no PLTE " , " Corrupt PNG " ) ;
if ( scan = = STBI__SCAN_header ) { s - > img_n = pal_img_n ; return 1 ; }
if ( c . length > ( 1u < < 30 ) ) return stbi__err ( " IDAT size limit " , " IDAT section larger than 2^30 bytes " ) ;
if ( ( int ) ( ioff + c . length ) < ( int ) ioff ) return 0 ;
if ( ioff + c . length > idata_limit ) {
stbi__uint32 idata_limit_old = idata_limit ;
@ -7486,6 +7488,8 @@ static int stbi__pnm_getinteger(stbi__context *s, char *c)
while ( ! stbi__at_eof ( s ) & & stbi__pnm_isdigit ( * c ) ) {
value = value * 10 + ( * c - ' 0 ' ) ;
* c = ( char ) stbi__get8 ( s ) ;
if ( ( value > 214748364 ) | | ( value = = 214748364 & & * c > ' 7 ' ) )
return stbi__err ( " integer parse overflow " , " Parsing an integer in the PPM header overflowed a 32-bit int " ) ;
}
return value ;
@ -7516,9 +7520,13 @@ static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp)
stbi__pnm_skip_whitespace ( s , & c ) ;
* x = stbi__pnm_getinteger ( s , & c ) ; // read width
if ( * x = = 0 )
return stbi__err ( " invalid width " , " PPM image header had zero or overflowing width " ) ;
stbi__pnm_skip_whitespace ( s , & c ) ;
* y = stbi__pnm_getinteger ( s , & c ) ; // read height
if ( * y = = 0 )
return stbi__err ( " invalid width " , " PPM image header had zero or overflowing width " ) ;
stbi__pnm_skip_whitespace ( s , & c ) ;
maxv = stbi__pnm_getinteger ( s , & c ) ; // read max value