Skip to content

Commit

Permalink
[libpng16] Issue a png_benign_error instead of a png_error on ADLER32…
Browse files Browse the repository at this point in the history
… mismatch

while decoding compressed data chunks.
  • Loading branch information
Glenn Randers-Pehrson committed Sep 12, 2016
1 parent bc2bb96 commit 1842d7c
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 4 deletions.
4 changes: 3 additions & 1 deletion ANNOUNCE
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,9 @@ Version 1.6.26beta01 [September 12, 2016]
bugfix by John Bowler).
Do not issue a png_error() on read in png_set_pCAL() because png_handle_pCAL
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
(subscription required; visit
Expand Down
4 changes: 3 additions & 1 deletion CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -5708,7 +5708,9 @@ Version 1.6.26beta01 [September 12, 2016]
bugfix by John Bowler).
Do not issue a png_error() on read in png_set_pCAL() because png_handle_pCAL
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
(subscription required; visit
Expand Down
7 changes: 6 additions & 1 deletion pngpread.c
Original file line number Diff line number Diff line change
Expand Up @@ -684,7 +684,12 @@ png_process_IDAT_data(png_structrp png_ptr, png_bytep buffer,
png_warning(png_ptr, "Truncated compressed data in IDAT");

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 */
return;
Expand Down
7 changes: 6 additions & 1 deletion pngrutil.c
Original file line number Diff line number Diff line change
Expand Up @@ -4101,7 +4101,12 @@ png_read_IDAT_data(png_structrp png_ptr, png_bytep output,
png_zstream_error(png_ptr, ret);

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 */
{
Expand Down

0 comments on commit 1842d7c

Please sign in to comment.