Looks ok to me if we are fine with making changes to libpng source. I thought this was usually not something we wanted to do with upstream sources.

/Erik

On 2018-11-28 15:11, Sergey Bylokhov wrote:
Hello.
Please review the fix for jdk 12.

Bug: https://bugs.openjdk.java.net/browse/JDK-8212680
Webrev: http://cr.openjdk.java.net/~serb/8212680/webrev.00

On Solaris we faced the bug which was fixed in macOS already:
  https://bugs.openjdk.java.net/browse/JDK-8196803

The problem is that there is a call to "inflateValidate" function in pngrutil.c[1], guarded by a preprocessor check of ZLIB_VERNUM being high enough and by the "PNG_IGNORE_ADLER32". If we compile this call in and link to the newer version of zlib, we will get link errors if the code is executed on an older Mac/Solaris/ with an older version of zlib.

The bug can be reproduced on "old" Solaris 11.3, which was not updated for a while(since 2015).

We can fix it by requiring some "OS Patches and Package Updates", but since it was reproduced on macOS, and potentially can occur on other platforms, I have decided to fix it in the code. The new property is introduced to the libpng "PNG_ADLER32_SUPPORTED", which control the usage of "PNG_IGNORE_ADLER32" and as a result control the call to "inflateValidate"[1]. This new property is set in the makefile when we build "bundled" versions of libpng+zlib only.

This was reported upstream, and the future version of libpng may have some similar solution.

[1] http://hg.openjdk.java.net/jdk/jdk/file/396dfb0e8ba5/src/java.desktop/share/native/libsplashscreen/libpng/pngrutil.c#l457


Reply via email to