Chromium is using libpng 1.6.22 (https://cs.chromium.org/chromium/src/third_party/libpng/README) while the latest release is 1.6.32 (http://www.libpng.org/pub/png/libpng.html). Besides possible security fixes, there is good potential for performance gains by ignoring some checksums. This is a blocker for experimenting with the idea.
I've already started this in https://chromium-review.googlesource.com/c/chromium/src/+/671029. 1.6.32 has a bug, but there is a newer version that fixes it.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/5602fef50f7d262cfe960dca7a5be946daa8e347 commit 5602fef50f7d262cfe960dca7a5be946daa8e347 Author: Leon Scroggins III <scroggo@google.com> Date: Thu Oct 05 16:17:57 2017 Update libpng to 1.6.34 Bug: 761608 Bug: 771075 Downloaded from http://libpng.download/src/libpng16 https://github.com/glennrp/libpng/commit/edef058e180be435afd8feebb742a22360a7fa3f (included in this revision) moved the SSE opts directly into the main libpng source, so contrib/intel/intel_sse.patch is no longer necessary, as its changes are already included. Other changes: - README.chromium: - Update version number. - Remove references to cherry-picks from upstream, as the fixes are now included without cherry-picks. - Remove reference to applying intel_sse.patch, which is no longer necessary. - BUILD.gn: - Build the intel code from its new location. - PNGImageDecoderTest.cpp: - Remove unnecessary tests. TestFailureDuringDecode attempted to modify a valid PNG file to have an error, and then verified that it actually had an error, while leaving the FrameCount unchanged. I do not see much value to the test, and the apparently more lenient newer libpng no longer considers this modified file to be broken. Change-Id: I2c7e517403609aed2051b91df47dd9f87f62e1ab Reviewed-on: https://chromium-review.googlesource.com/671029 Reviewed-by: Leon Scroggins <scroggo@chromium.org> Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Leon Scroggins <scroggo@chromium.org> Cr-Commit-Position: refs/heads/master@{#506749} [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/WebKit/Source/platform/image-decoders/png/PNGImageDecoderTest.cpp [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/BUILD.gn [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/LICENSE [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/README [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/README.chromium [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/arm/filter_neon.S [delete] https://crrev.com/fe862f371864cd02c95f57152c4d9e6d6745cd11/third_party/libpng/contrib/intel/INSTALL [delete] https://crrev.com/fe862f371864cd02c95f57152c4d9e6d6745cd11/third_party/libpng/contrib/intel/intel_sse.patch [rename] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/intel/filter_sse2_intrinsics.c [rename] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/intel/intel_init.c [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/png.c [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/png.h [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/pngconf.h [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/pngerror.c [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/pngget.c [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/pnginfo.h [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/pngmem.c [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/pngpread.c [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/pngpriv.h [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/pngread.c [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/pngrio.c [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/pngrtran.c [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/pngrutil.c [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/pngset.c [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/pngstruct.h [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/pngtest.c [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/pngtrans.c [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/pngwio.c [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/pngwrite.c [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/pngwtran.c [modify] https://crrev.com/5602fef50f7d262cfe960dca7a5be946daa8e347/third_party/libpng/pngwutil.c
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/0dc539884fd4df44c4255fbf1f70b1a9df60a984 commit 0dc539884fd4df44c4255fbf1f70b1a9df60a984 Author: Leon Scroggins <scroggo@chromium.org> Date: Fri Oct 06 13:15:04 2017 Revert "Update libpng to 1.6.34" This reverts commit 5602fef50f7d262cfe960dca7a5be946daa8e347. Reason for revert: Just to be extra cautious. Branch point is in one week; we can land afterwards to give it some more testing time. Will reland with the name mangling in https://chromium-review.googlesource.com/702694 Original change's description: > Update libpng to 1.6.34 > > Bug: 761608 > Bug: 771075 > > Downloaded from http://libpng.download/src/libpng16 > > https://github.com/glennrp/libpng/commit/edef058e180be435afd8feebb742a22360a7fa3f > (included in this revision) moved the SSE opts directly into the main > libpng source, so contrib/intel/intel_sse.patch is no longer necessary, > as its changes are already included. > > Other changes: > - README.chromium: > - Update version number. > - Remove references to cherry-picks from upstream, as the fixes are > now included without cherry-picks. > - Remove reference to applying intel_sse.patch, which is no longer > necessary. > - BUILD.gn: > - Build the intel code from its new location. > - PNGImageDecoderTest.cpp: > - Remove unnecessary tests. TestFailureDuringDecode attempted to > modify a valid PNG file to have an error, and then verified that it > actually had an error, while leaving the FrameCount unchanged. I do > not see much value to the test, and the apparently more lenient > newer libpng no longer considers this modified file to be broken. > > Change-Id: I2c7e517403609aed2051b91df47dd9f87f62e1ab > Reviewed-on: https://chromium-review.googlesource.com/671029 > Reviewed-by: Leon Scroggins <scroggo@chromium.org> > Reviewed-by: Mike Klein <mtklein@chromium.org> > Commit-Queue: Leon Scroggins <scroggo@chromium.org> > Cr-Commit-Position: refs/heads/master@{#506749} TBR=scroggo@chromium.org,noel@chromium.org,mtklein@chromium.org Change-Id: I75ef427e8dea83819d9dfdafa6bd714c9ab13539 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: 761608 , 771075 Reviewed-on: https://chromium-review.googlesource.com/704954 Reviewed-by: Leon Scroggins <scroggo@chromium.org> Commit-Queue: Leon Scroggins <scroggo@chromium.org> Cr-Commit-Position: refs/heads/master@{#507041} [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/WebKit/Source/platform/image-decoders/png/PNGImageDecoderTest.cpp [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/BUILD.gn [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/LICENSE [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/README [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/README.chromium [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/arm/filter_neon.S [add] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/contrib/intel/INSTALL [rename] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/contrib/intel/filter_sse2_intrinsics.c [rename] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/contrib/intel/intel_init.c [add] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/contrib/intel/intel_sse.patch [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/png.c [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/png.h [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/pngconf.h [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/pngerror.c [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/pngget.c [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/pnginfo.h [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/pngmem.c [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/pngpread.c [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/pngpriv.h [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/pngread.c [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/pngrio.c [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/pngrtran.c [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/pngrutil.c [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/pngset.c [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/pngstruct.h [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/pngtest.c [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/pngtrans.c [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/pngwio.c [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/pngwrite.c [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/pngwtran.c [modify] https://crrev.com/0dc539884fd4df44c4255fbf1f70b1a9df60a984/third_party/libpng/pngwutil.c
Issue 761608 has been merged into this issue.
Uploaded https://chromium-review.googlesource.com/c/chromium/src/+/704209 to reland after the branch, as recommended by noel@
We've now branched, so I'm planning to reland with https://chromium-review.googlesource.com/c/chromium/src/+/704209.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/f82653a473f8de5fc86d0f2ecc75f6237e61946b commit f82653a473f8de5fc86d0f2ecc75f6237e61946b Author: Leon Scroggins III <scroggo@google.com> Date: Fri Oct 20 15:13:09 2017 Reland "Update libpng to 1.6.34" This reverts commit 0dc539884fd4df44c4255fbf1f70b1a9df60a984. We reverted the update just to be cautious. Now that the branch has been cut, reland. Original message: ======================================================================= Bug: 761608 Bug: 771075 Downloaded from http://libpng.download/src/libpng16 https://github.com/glennrp/libpng/commit/edef058e180be435afd8feebb742a22360a7fa3f (included in this revision) moved the SSE opts directly into the main libpng source, so contrib/intel/intel_sse.patch is no longer necessary, as its changes are already included. Other changes: - README.chromium: - Update version number. - Remove references to cherry-picks from upstream, as the fixes are now included without cherry-picks. - Remove reference to applying intel_sse.patch, which is no longer necessary. - BUILD.gn: - Build the intel code from its new location. - PNGImageDecoderTest.cpp: - Remove unnecessary tests. TestFailureDuringDecode attempted to modify a valid PNG file to have an error, and then verified that it actually had an error, while leaving the FrameCount unchanged. I do not see much value to the test, and the apparently more lenient newer libpng no longer considers this modified file to be broken. ======================================================================= Also includes name mangling for png_(get/set)_eXIf(_1) from I11492d3e7cce34e7ba29b6399b45bec75b057948 Change-Id: Ie692badaf88403bc01b4bf52d95fe539f9079df5 Reviewed-on: https://chromium-review.googlesource.com/704209 Reviewed-by: Noel Gordon <noel@chromium.org> Commit-Queue: Leon Scroggins <scroggo@chromium.org> Cr-Commit-Position: refs/heads/master@{#510438} [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/WebKit/Source/platform/image-decoders/png/PNGImageDecoderTest.cpp [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/BUILD.gn [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/LICENSE [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/README [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/README.chromium [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/arm/filter_neon.S [delete] https://crrev.com/2767edcdb266aea34a5fb4354a36d84858244fad/third_party/libpng/contrib/intel/INSTALL [delete] https://crrev.com/2767edcdb266aea34a5fb4354a36d84858244fad/third_party/libpng/contrib/intel/intel_sse.patch [rename] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/intel/filter_sse2_intrinsics.c [rename] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/intel/intel_init.c [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/png.c [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/png.h [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/pngconf.h [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/pngerror.c [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/pngget.c [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/pnginfo.h [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/pngmem.c [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/pngpread.c [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/pngprefix.h [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/pngpriv.h [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/pngread.c [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/pngrio.c [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/pngrtran.c [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/pngrutil.c [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/pngset.c [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/pngstruct.h [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/pngtest.c [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/pngtrans.c [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/pngwio.c [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/pngwrite.c [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/pngwtran.c [modify] https://crrev.com/f82653a473f8de5fc86d0f2ecc75f6237e61946b/third_party/libpng/pngwutil.c
Comment 1 by cavalcantii@chromium.org
, Oct 3 2017