[libpng16] Issue a png_benign_error instead of a png_error on ADLER32 mismatch

while decoding compressed data chunks.
This commit is contained in:
Glenn Randers-Pehrson 2016-09-11 22:02:05 -05:00
parent bc2bb96cd7
commit 1842d7c865
4 changed files with 18 additions and 4 deletions

View File

@ -30,7 +30,9 @@ Version 1.6.26beta01 [September 12, 2016]
bugfix by John Bowler). bugfix by John Bowler).
Do not issue a png_error() on read in png_set_pCAL() because png_handle_pCAL Do not issue a png_error() on read in png_set_pCAL() because png_handle_pCAL
has allocated memory that libpng needs to free. has allocated memory that libpng needs to free.
Conditionally compile png_set_benign_errors() in pngread.c Conditionally compile png_set_benign_errors() in pngread.c and pngtest.c
Issue a png_benign_error instead of a png_error on ADLER32 mismatch
while decoding compressed data chunks.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit (subscription required; visit

View File

@ -5708,7 +5708,9 @@ Version 1.6.26beta01 [September 12, 2016]
bugfix by John Bowler). bugfix by John Bowler).
Do not issue a png_error() on read in png_set_pCAL() because png_handle_pCAL Do not issue a png_error() on read in png_set_pCAL() because png_handle_pCAL
has allocated memory that libpng needs to free. has allocated memory that libpng needs to free.
Conditionally compile png_set_benign_errors() in pngread.c Conditionally compile png_set_benign_errors() in pngread.c and pngtest.c
Issue a png_benign_error instead of a png_error on ADLER32 mismatch
while decoding compressed data chunks.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit (subscription required; visit

View File

@ -684,7 +684,12 @@ png_process_IDAT_data(png_structrp png_ptr, png_bytep buffer,
png_warning(png_ptr, "Truncated compressed data in IDAT"); png_warning(png_ptr, "Truncated compressed data in IDAT");
else else
png_error(png_ptr, "Decompression error in IDAT"); {
if (ret == Z_DATA_ERROR)
png_benign_error(png_ptr, "ADLER32 checksum mismatch in IDAT");
else
png_error(png_ptr, "Decompression error in IDAT");
}
/* Skip the check on unprocessed input */ /* Skip the check on unprocessed input */
return; return;

View File

@ -4101,7 +4101,12 @@ png_read_IDAT_data(png_structrp png_ptr, png_bytep output,
png_zstream_error(png_ptr, ret); png_zstream_error(png_ptr, ret);
if (output != NULL) if (output != NULL)
png_chunk_error(png_ptr, png_ptr->zstream.msg); {
if(!strncmp(png_ptr->zstream.msg,"incorrect data check",20))
png_chunk_benign_error(png_ptr, png_ptr->zstream.msg);
else
png_chunk_error(png_ptr, png_ptr->zstream.msg);
}
else /* checking */ else /* checking */
{ {