diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2016-11-24 03:41:17 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2016-11-24 03:41:18 +0000 |
commit | 03e96d17ed6ae930d6bcf22f73af0298b22f5f5e (patch) | |
tree | 279665cc5cf5ea9960d2b45981e62ed52146a581 | |
parent | 51e126759e208d6e85eaddac482fda10b652e728 (diff) | |
parent | 991be70ee26a9a3933ae99cea52a51f1ef455dd5 (diff) | |
download | libpng-03e96d17ed6ae930d6bcf22f73af0298b22f5f5e.tar.gz |
Merge "Revert "[libpng16] Revert ADLER32 error handling in pngrutil.c and pngpread.c.""
-rw-r--r-- | README.android | 4 | ||||
-rw-r--r-- | pngpread.c | 7 | ||||
-rw-r--r-- | pngrutil.c | 10 |
3 files changed, 15 insertions, 6 deletions
diff --git a/README.android b/README.android index 32fb665f9..f6062c609 100644 --- a/README.android +++ b/README.android @@ -21,7 +21,3 @@ be listed here: in contrib/intel/intel_sse.patch. The patch was applied using the following command: 'patch -i contrib/intel/intel_sse.patch -p1' - -(5) Revert ADLER32 error handling to fix the infinite loop -Cherry picked from upstream: -https://github.com/glennrp/libpng/commit/d65a92b951079d315e17e20ba9e7b8423d19397e diff --git a/pngpread.c b/pngpread.c index 794352f42..650ba1e23 100644 --- a/pngpread.c +++ b/pngpread.c @@ -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, "IDAT: ADLER32 checksum mismatch"); + else + png_error(png_ptr, "Decompression error in IDAT"); + } /* Skip the check on unprocessed input */ return; diff --git a/pngrutil.c b/pngrutil.c index 3eaa635ad..ed09ddd13 100644 --- a/pngrutil.c +++ b/pngrutil.c @@ -4101,7 +4101,15 @@ 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, "ADLER32 checksum mismatch"); + continue; + } + else + png_chunk_error(png_ptr, png_ptr->zstream.msg); + } else /* checking */ { |