From 2c374c3af314fdca96515623b85547fa35c5d328 Mon Sep 17 00:00:00 2001 From: eabdullin Date: Wed, 16 Oct 2024 20:28:33 +0000 Subject: [PATCH] import UBI java-1.8.0-openjdk-1.8.0.432.b06-2.el9 --- .gitignore | 2 +- .java-1.8.0-openjdk.metadata | 2 +- SOURCES/NEWS | 281 ++ SOURCES/java-1.8.0-openjdk-portable.specfile | 53 +- ...on_x86_linux_as_well_as_x86_mac_os_x.patch | 52 +- ...8-pr3836-pass_compiler_flags_to_adlc.patch | 67 - SOURCES/jdk8328999-update_giflib_5.2.2.patch | 2596 +++++++++++++++++ SPECS/java-1.8.0-openjdk.spec | 33 +- 8 files changed, 2972 insertions(+), 114 deletions(-) delete mode 100644 SOURCES/jdk8281098-pr3836-pass_compiler_flags_to_adlc.patch create mode 100644 SOURCES/jdk8328999-update_giflib_5.2.2.patch diff --git a/.gitignore b/.gitignore index 9da05e7..9b4b3ac 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -SOURCES/shenandoah8u422-b05.tar.xz +SOURCES/shenandoah8u432-b06.tar.xz SOURCES/tapsets-icedtea-3.15.0.tar.xz diff --git a/.java-1.8.0-openjdk.metadata b/.java-1.8.0-openjdk.metadata index 8422e56..0825d6a 100644 --- a/.java-1.8.0-openjdk.metadata +++ b/.java-1.8.0-openjdk.metadata @@ -1,2 +1,2 @@ -e2828a59a56b737f58f33dc21f654e92bdfc085e SOURCES/shenandoah8u422-b05.tar.xz +af2d3b85c48ecc8c22188ac687e6160658ef6aca SOURCES/shenandoah8u432-b06.tar.xz 7ae2cba67467825b2c2a5fec7aea041865023002 SOURCES/tapsets-icedtea-3.15.0.tar.xz diff --git a/SOURCES/NEWS b/SOURCES/NEWS index 80e7b13..65a62a5 100644 --- a/SOURCES/NEWS +++ b/SOURCES/NEWS @@ -3,6 +3,287 @@ Key: JDK-X - https://bugs.openjdk.java.net/browse/JDK-X CVE-XXXX-YYYY: https://cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY +New in release OpenJDK 8u432 (2024-10-15): +=========================================== +Live versions of these release notes can be found at: + * https://bit.ly/openjdk8u432 + +* CVEs + - CVE-2024-21208 + - CVE-2024-21210 + - CVE-2024-21217 + - CVE-2024-21235 +* Security fixes + - JDK-8290367, JDK-8332643: Update default value and extend the scope of com.sun.jndi.ldap.object.trustSerialData system property + - JDK-8313626, JDK-8307769: C2 crash due to unexpected exception control flow + - JDK-8328286: Enhance HTTP client + - JDK-8328544: Improve handling of vectorization + - JDK-8328726: Better Kerberos support + - JDK-8331446: Improve deserialization support + - JDK-8332644: Improve graph optimizations + - JDK-8335713: Enhance vectorization analysis +* Other changes + - JDK-4660158: TTY: NumberFormatException while trying to set values by 'set' command + - JDK-6544871: java/awt/event/KeyEvent/KeyTyped/CtrlASCII.html fails from jdk b09 on windows. + - JDK-7188098: TEST_BUG: closed/javax/sound/midi/Synthesizer/Receiver/bug6186488.java fails + - JDK-8021775: compiler/8009761/Test8009761.java "Failed: init recursive calls: 51. After deopt 50" + - JDK-8030204: com/sun/jdi/JdbExprTest.sh: Required output "Can\\'t convert 2147483648 to int" not found + - JDK-8030795: java/nio/file/Files/probeContentType/ForceLoad.java failing with ServiceConfigurationError without jtreg -agentvm option + - JDK-8035395: sun/management/jmxremote/startstop/JMXStartStopTest.java fails intermittently: Port already in use + - JDK-8075511: Enable -Woverloaded-virtual C++ warning for HotSpot build + - JDK-8137329: [windows] Build broken on VS2010 after "8046148: JEP 158: Unified JVM Logging" + - JDK-8145919: sun/management/jmxremote/bootstrap/RmiSslBootstrapTest failed with Connection failed for no credentials + - JDK-8152207: Perform array bound checks while getting a length of bytecode instructions + - JDK-8193682: Infinite loop in ZipOutputStream.close() + - JDK-8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java + - JDK-8221903: PIT: javax/swing/RepaintManager/IconifyTest/IconifyTest.java fails on ubuntu18.04 + - JDK-8233364: Fix undefined behavior in Canonicalizer::do_ShiftOp + - JDK-8238274: (sctp) JDK-7118373 is not fixed for SctpChannel + - JDK-8251188: Update LDAP tests not to use wildcard addresses + - JDK-8264328: Broken license in javax/swing/JComboBox/8072767/bug8072767.java + - JDK-8266248: Compilation failure in PLATFORM_API_MacOSX_MidiUtils.c with Xcode 12.5 + - JDK-8278794: Infinite loop in DeflaterOutputStream.finish() + - JDK-8279164: Disable TLS_ECDH_* cipher suites + - JDK-8281096: Flags introduced by configure script are not passed to ADLC build + - JDK-8284771: java/util/zip/CloseInflaterDeflaterTest.java failed with "AssertionError: Expected IOException to be thrown, but nothing was thrown" + - JDK-8298887: On the latest macOS+XCode the Robot API may report wrong colors + - JDK-8299677: Formatter.format might take a long time to format an integer or floating-point + - JDK-8305400: ISO 4217 Amendment 175 Update + - JDK-8305931: jdk/jfr/jcmd/TestJcmdDumpPathToGCRoots.java failed with "Expected chains but found none" + - JDK-8307779: Relax the java.awt.Robot specification + - JDK-8309138: Fix container tests for jdks with symlinked conf dir + - JDK-8311666: Disabled tests in test/jdk/sun/java2d/marlin + - JDK-8315117: Update Zlib Data Compression Library to Version 1.3 + - JDK-8315863: [GHA] Update checkout action to use v4 + - JDK-8316328: Test jdk/jfr/event/oldobject/TestSanityDefault.java times out for some heap sizes + - JDK-8318039: GHA: Bump macOS and Xcode versions + - JDK-8318951: Additional negative value check in JPEG decoding + - JDK-8320964: sun/tools/native2ascii/Native2AsciiTests.sh fails on Japanese + - JDK-8321480: ISO 4217 Amendment 176 Update + - JDK-8324632: Update Zlib Data Compression Library to Version 1.3.1 + - JDK-8324723: GHA: Upgrade some actions to avoid deprecated Node 16 + - JDK-8326351: Update the Zlib version in open/src/java.base/share/legal/zlib.md to 1.3.1 + - JDK-8326521: JFR: CompilerPhase event test fails on windows 32 bit + - JDK-8326529: JFR: Test for CompilerCompile events fails due to time out + - JDK-8327007: javax/swing/JSpinner/8008657/bug8008657.java fails + - JDK-8330415: Update system property for Java SE specification maintenance version + - JDK-8331730: [8u] GHA: update sysroot for cross builds to Debian bullseye + - JDK-8333126: Bump update version of OpenJDK: 8u432 + - JDK-8333669: [8u] GHA: Dead VS2010 download link + - JDK-8333724: Problem list security/infra/java/security/cert/CertPathValidator/certification/CAInterop.java#teliasonerarootcav1 + - JDK-8334653: ISO 4217 Amendment 177 Update + - JDK-8334905: [8u] The test java/awt/Mixing/AWT_Mixing/JButtonOverlapping.java started to fail after 8159690 + - JDK-8335851: [8u] Test JMXStartStopTest.java fails after JDK-8334415 + - JDK-8335894: [8u] Fix SupplementalJapaneseEraTest.java for jdks with symlinked conf dir + - JDK-8336928: GHA: Bundle artifacts removal broken + - JDK-8337110: [8u] TestNoEagerReclaimOfHumongousRegions.java should be in gc/g1 directory + - JDK-8337312: [8u] Windows x86 VS2010 build broken by JDK-8320097 + - JDK-8337664: Distrust TLS server certificates issued after Oct 2024 and anchored by Entrust Root CAs + - JDK-8338144: [8u] Remove duplicate license files + - JDK-8341057: Add 2 SSL.com TLS roots + - JDK-8341059: Change Entrust TLS distrust date to November 12, 2024 + +Notes on individual issues: +=========================== + +security-libs/javax.net.ssl: + +JDK-8279164: Disable TLS_ECDH_* cipher suites +============================================= +The TLS_ECDH cipher suites do not preserve forward secrecy and are +rarely used in practice. With this release, they are disabled by +adding "ECDH" to the `jdk.tls.disabledAlgorithms` security property in +the `java.security` configuration file. Attempts to use these suites +with this release will result in a `SSLHandshakeException` being +thrown. Note that ECDH cipher suites which use RC4 were already +disabled prior to this change. + +Users can, *at their own risk*, remove this restriction by modifying +the `java.security` configuration file (or override it by using the +`java.security.properties` system property) so "ECDH" is no longer +listed in the `jdk.tls.disabledAlgorithms` security property. + +This change has no effect on TLS_ECDHE cipher suites, which remain +enabled by default. + +JDK-8337664: Distrust TLS server certificates issued after Oct 2024 and anchored by Entrust Root CAs +JDK-8341059: Change Entrust TLS distrust date to November 12, 2024 +==================================================================================================== +In accordance with similar plans recently announced by Google and +Mozilla, the JDK will not trust Transport Layer Security (TLS) +certificates issued after the 11th of November 2024 which are anchored +by Entrust root certificates. This includes certificates branded as +AffirmTrust, which are managed by Entrust. + +Certificates issued on or before November 11th, 2024 will continue to +be trusted until they expire. + +If a server's certificate chain is anchored by an affected +certificate, attempts to negotiate a TLS session will fail with an +Exception that indicates the trust anchor is not trusted. For example, + +"TLS server certificate issued after 2024-11-11 and anchored by a +distrusted legacy Entrust root CA: CN=Entrust.net Certification +Authority (2048), OU=(c) 1999 Entrust.net Limited, +OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.), +O=Entrust.net" + +To check whether a certificate in a JDK keystore is affected by this +change, you can the `keytool` utility: + +keytool -v -list -alias -keystore + +If any of the certificates in the chain are affected by this change, +then you will need to update the certificate or contact the +organisation responsible for managing the certificate. + +These restrictions apply to the following Entrust root certificates +included in the JDK: + +Alias name: entrustevca [jdk] +CN=Entrust Root Certification Authority +OU=(c) 2006 Entrust, Inc. +OU=www.entrust.net/CPS is incorporated by reference +O=Entrust, Inc. +C=US +SHA256: 73:C1:76:43:4F:1B:C6:D5:AD:F4:5B:0E:76:E7:27:28:7C:8D:E5:76:16:C1:E6:E6:14:1A:2B:2C:BC:7D:8E:4C + +Alias name: entrustrootcaec1 [jdk] +CN=Entrust Root Certification Authority - EC1 +OU=(c) 2012 Entrust, Inc. - for authorized use only +OU=See www.entrust.net/legal-terms +O=Entrust, Inc. +C=US +SHA256: 02:ED:0E:B2:8C:14:DA:45:16:5C:56:67:91:70:0D:64:51:D7:FB:56:F0:B2:AB:1D:3B:8E:B0:70:E5:6E:DF:F5 + +Alias name: entrustrootcag2 [jdk] +CN=Entrust Root Certification Authority - G2 +OU=(c) 2009 Entrust, Inc. - for authorized use only +OU=See www.entrust.net/legal-terms +O=Entrust, Inc. +C=US +SHA256: 43:DF:57:74:B0:3E:7F:EF:5F:E4:0D:93:1A:7B:ED:F1:BB:2E:6B:42:73:8C:4E:6D:38:41:10:3D:3A:A7:F3:39 + +Alias name: entrustrootcag4 [jdk] +CN=Entrust Root Certification Authority - G4 +OU=(c) 2015 Entrust, Inc. - for authorized use only +OU=See www.entrust.net/legal-terms +O=Entrust, Inc. +C=US +SHA256: DB:35:17:D1:F6:73:2A:2D:5A:B9:7C:53:3E:C7:07:79:EE:32:70:A6:2F:B4:AC:42:38:37:24:60:E6:F0:1E:88 + +Alias name: entrust2048ca [jdk] +CN=Entrust.net Certification Authority (2048) +OU=(c) 1999 Entrust.net Limited +OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.) +O=Entrust.net +SHA256: 6D:C4:71:72:E0:1C:BC:B0:BF:62:58:0D:89:5F:E2:B8:AC:9A:D4:F8:73:80:1E:0C:10:B9:C8:37:D2:1E:B1:77 + +Alias name: affirmtrustcommercialca [jdk] +CN=AffirmTrust Commercial +O=AffirmTrust +C=US +SHA256: 03:76:AB:1D:54:C5:F9:80:3C:E4:B2:E2:01:A0:EE:7E:EF:7B:57:B6:36:E8:A9:3C:9B:8D:48:60:C9:6F:5F:A7 + +Alias name: affirmtrustnetworkingca [jdk] +CN=AffirmTrust Networking +O=AffirmTrust +C=US +SHA256: 0A:81:EC:5A:92:97:77:F1:45:90:4A:F3:8D:5D:50:9F:66:B5:E2:C5:8F:CD:B5:31:05:8B:0E:17:F3:F0B4:1B + +Alias name: affirmtrustpremiumca [jdk] +CN=AffirmTrust Premium +O=AffirmTrust +C=US +SHA256: 70:A7:3F:7F:37:6B:60:07:42:48:90:45:34:B1:14:82:D5:BF:0E:69:8E:CC:49:8D:F5:25:77:EB:F2:E9:3B:9A + +Alias name: affirmtrustpremiumeccca [jdk] +CN=AffirmTrust Premium ECC +O=AffirmTrust +C=US +SHA256: BD:71:FD:F6:DA:97:E4:CF:62:D1:64:7A:DD:25:81:B0:7D:79:AD:F8:39:7E:B4:EC:BA:9C:5E:84:88:82:14:23 + +Users can, *at their own risk*, remove this restriction by modifying +the `java.security` configuration file (or override it by using the +`java.security.properties` system property) so "ENTRUST_TLS" is no +longer listed in the `jdk.security.caDistrustPolicies` security +property. + +security-libs/java.security: + +JDK-8341057: Add 2 SSL.com TLS roots +==================================== +The following root certificates have been added to the cacerts +truststore: + +Name: SSL.com +Alias Name: ssltlsrootecc2022 +Distinguished Name: CN=SSL.com TLS ECC Root CA 2022, O=SSL Corporation, C=US + +Name: SSL.com +Alias Name: ssltlsrootrsa2022 +Distinguished Name: CN=SSL.com TLS RSA Root CA 2022, O=SSL Corporation, C=US + +client-libs: + +JDK-8307779: Relax the java.awt.Robot specification +=================================================== +This release of OpenJDK 8 updates to the latest maintenance release of +the Java 8 specification. This relaxes the specification of three +methods in the `java.awt.Robot` class - `mouseMove(int,int)`, +`getPixelColor(int,int)` and `createScreenCapture(Rectangle)` - to +allow these methods to fail when the desktop environment does not +permit moving the mouse pointer or capturing screen content. + +core-libs/javax.naming: + +JDK-8290367, JDK-8332643: Update default value and extend the scope of com.sun.jndi.ldap.object.trustSerialData system property +=============================================================================================================================== +With this OpenJDK release, the JDK implementation of the LDAP provider +no longer supports the deserialisation of Java objects by +default. This is achieved by the system property +`com.sun.jndi.ldap.object.trustSerialData` being set to `false` by +default. + +Note that this release also increases the scope of the +`com.sun.jndi.ldap.object.trustSerialData` to cover the reconstruction +of RMI remote objects from the `javaRemoteLocation` LDAP attribute. + +The result of this change is that transparent deserialisation of Java +objects will require an explicit opt-in. Applications that wish to +reconstruct Java objects and RMI stubs from LDAP attributes will need +to set the `com.sun.jndi.ldap.object.trustSerialData` to `true`. + +core-libs/java.net: + +JDK-8328286: Enhance HTTP client +================================ +This OpenJDK release limits the maximum header field size accepted by +the HTTP client within the JDK for all supported versions of the HTTP +protocol. The header field size is computed as the sum of the size of +the uncompressed header name, the size of the uncompressed header +value and a overhead of 32 bytes for each field section line. If a +peer sends a field section that exceeds this limit, a +`java.net.ProtocolException` will be raised. + +This release also introduces a new system property, +`jdk.http.maxHeaderSize`. This property can be used to alter the +maximum header field size (in bytes) or disable it by setting the +value to zero or a negative value. The default value is 393,216 bytes +or 384kB. + +core-libs/java.util.jar: + +JDK-8193682: Infinite loop in ZipOutputStream.close() +===================================================== +In previous releases, the `DeflaterOutputStream.close()`, +`GZIPOutputStream.finish()` and `ZipOutputStream.closeEntry()` methods +did not close the associated default JDK compressor when an exception +was thrown during closure. With this release, the default compressor +is closed before propogating the Throwable up the stack. In the case +of `ZipOutputStream`, this only happens when the exception is not a +`ZipException`. + New in release OpenJDK 8u422 (2024-07-16): =========================================== Live versions of these release notes can be found at: diff --git a/SOURCES/java-1.8.0-openjdk-portable.specfile b/SOURCES/java-1.8.0-openjdk-portable.specfile index 16b26be..18001ce 100644 --- a/SOURCES/java-1.8.0-openjdk-portable.specfile +++ b/SOURCES/java-1.8.0-openjdk-portable.specfile @@ -269,7 +269,7 @@ # Define version of OpenJDK 8 used %global project openjdk %global repo shenandoah-jdk8u -%global openjdk_revision 8u422-b05 +%global openjdk_revision 8u432-b06 %global shenandoah_revision shenandoah%{openjdk_revision} # Define IcedTea version used for SystemTap tapsets and desktop file %global icedteaver 3.15.0 @@ -547,8 +547,6 @@ Patch539: pr2888-rh2055274-support_system_cacerts-%{cacertsver}.patch Patch541: rh1684077-openjdk_should_depend_on_pcsc-lite-libs_instead_of_pcsc-lite-devel.patch # RH1750419: Enable build of speculative store bypass hardened alt-java (CVE-2018-3639) Patch600: rh1750419-redhat_alt_java.patch -# JDK-8281098, PR3836: Extra compiler flags not passed to adlc build -Patch112: jdk8281098-pr3836-pass_compiler_flags_to_adlc.patch ############################################# # @@ -595,6 +593,8 @@ Patch204: jdk8042159-allow_using_system_installed_lcms2-jdk.patch Patch581: jdk8257794-remove_broken_assert.patch # JDK-8186464, RH1433262: ZipFile cannot read some InfoZip ZIP64 zip files Patch12: jdk8186464-rh1433262-zip64_failure.patch +# JDK-8328999, RH2251025 - Update GIFlib to 5.2.2 (PR#571) +Patch13: jdk8328999-update_giflib_5.2.2.patch ############################################# # @@ -643,6 +643,8 @@ BuildRequires: autoconf BuildRequires: automake BuildRequires: alsa-lib-devel BuildRequires: binutils +# cacerts build requirement. +BuildRequires: ca-certificates BuildRequires: cups-devel BuildRequires: desktop-file-utils # elfutils only are OK for build without AOT @@ -650,8 +652,13 @@ BuildRequires: elfutils-devel BuildRequires: file BuildRequires: fontconfig-devel BuildRequires: freetype-devel +# Earlier versions have a bug in tree vectorization on PPC +BuildRequires: gcc >= 4.8.3-8 BuildRequires: gcc-c++ BuildRequires: gdb +BuildRequires: make +# Require a boot JDK which doesn't fail due to RH1482244 +BuildRequires: java-%{buildjdkver}-openjdk-devel >= 1.7.0.151-2.6.11.3 BuildRequires: libxslt BuildRequires: libX11-devel BuildRequires: libXext-devel @@ -662,25 +669,17 @@ BuildRequires: libXt-devel BuildRequires: libXtst-devel # Requirement for setting up nss.cfg and nss.fips.cfg BuildRequires: nss-devel -# Commented out for portable RHEL7 doesn't have this -# Requirement for system security property test -#BuildRequires: crypto-policies BuildRequires: pkgconfig BuildRequires: xorg-x11-proto-devel BuildRequires: tar BuildRequires: unzip BuildRequires: zip -# Require a boot JDK which doesn't fail due to RH1482244 -BuildRequires: java-%{buildjdkver}-openjdk-devel >= 1.7.0.151-2.6.11.3 + # Zero-assembler build requirement %ifarch %{zero_arches} BuildRequires: libffi-devel %endif -# Earlier versions have a bug in tree vectorization on PPC -BuildRequires: gcc >= 4.8.3-8 -# cacerts build requirement. -BuildRequires: ca-certificates %if %{with_systemtap} BuildRequires: systemtap-sdt-devel %endif @@ -693,7 +692,7 @@ BuildRequires: libpng-devel BuildRequires: zlib-devel %else # Version in jdk/src/share/native/sun/awt/giflib/gif_lib.h -Provides: bundled(giflib) = 5.2.1 +Provides: bundled(giflib) = 5.2.2 # Version in jdk/src/share/native/sun/java2d/cmm/lcms/lcms2.h Provides: bundled(lcms2) = 2.11.0 # Version in jdk/src/share/native/sun/awt/image/jpeg/jpeglib.h @@ -701,7 +700,7 @@ Provides: bundled(libjpeg) = 6b # Version in jdk/src/share/native/sun/awt/libpng/png.h Provides: bundled(libpng) = 1.6.39 # Version in jdk/src/share/native/java/util/zip/zlib/zlib.h -Provides: bundled(zlib) = 1.2.13 +Provides: bundled(zlib) = 1.3.1 # We link statically against libstdc++ to increase portability BuildRequires: libstdc++-static %endif @@ -860,7 +859,9 @@ sh %{SOURCE12} # AArch64 fixes # x86 fixes -%patch -P105 +pushd %{top_level_dir_name} +%patch -P105 -p1 +popd # Upstreamable fixes %patch -P512 @@ -868,12 +869,12 @@ sh %{SOURCE12} %patch -P528 %patch -P571 %patch -P574 -%patch -P112 %patch -P581 %patch -P541 %patch -P12 pushd %{top_level_dir_name} %patch -P502 -p1 +%patch -P13 -p1 popd pushd %{top_level_dir_name} @@ -1538,6 +1539,26 @@ done %endif %changelog +* Fri Oct 11 2024 Andrew Hughes - 1:1.8.0.432.b06-1 +- Update to shenandoah-jdk8u432-b06 (GA) +- Update release notes for shenandoah-8u432-b06. +- Switch to GA mode. +- ** This tarball is embargoed until 2024-10-15 @ 1pm PT. ** + +* Thu Oct 10 2024 Andrew Hughes - 1:1.8.0.432.b05-0.1.ea +- Update to shenandoah-jdk8u432-b05 (EA) +- Update release notes for shenandoah-8u432-b05. +- Switch to EA mode. +- Drop JDK-828109{6,7,8}/PR3836 patch following integration of upstream version +- Regenerate JDK-8199936/PR3533 patch following JDK-828109{6,7,8} integration +- Bump version of bundled zlib to 1.3.1 following JDK-8324632 +- Add build dependency on make +- Reorganise build dependencies to retain alphabetical order for unconditional deps +- Include backport of JDK-8328999 to update giflib to 5.2.2 +- Bump version of bundled giflib to 5.2.2 following JDK-8328999 +- Add build scripts to repository to ease remembering all CentOS & RHEL targets and options +- Resolves: OPENJDK-3348 + * Wed Jul 10 2024 Andrew Hughes - 1:1.8.0.422.b05-1.1 - Update to shenandoah-jdk8u422-b05 (GA) - Update release notes for shenandoah-8u422-b05. diff --git a/SOURCES/jdk8199936-pr3533-enable_mstackrealign_on_x86_linux_as_well_as_x86_mac_os_x.patch b/SOURCES/jdk8199936-pr3533-enable_mstackrealign_on_x86_linux_as_well_as_x86_mac_os_x.patch index 0af9d51..aeef65a 100644 --- a/SOURCES/jdk8199936-pr3533-enable_mstackrealign_on_x86_linux_as_well_as_x86_mac_os_x.patch +++ b/SOURCES/jdk8199936-pr3533-enable_mstackrealign_on_x86_linux_as_well_as_x86_mac_os_x.patch @@ -7,10 +7,11 @@ PR3533: HotSpot generates code with unaligned stack, crashes on SSE operations Summary: Enable -mstackrealign on x86 Linux as well as x86 Mac OS X -diff --git openjdk.orig///common/autoconf/flags.m4 openjdk///common/autoconf/flags.m4 ---- openjdk.orig///common/autoconf/flags.m4 -+++ openjdk///common/autoconf/flags.m4 -@@ -402,6 +402,21 @@ +diff --git a/common/autoconf/flags.m4 b/common/autoconf/flags.m4 +index 113bf367e2..bed030e8d1 100644 +--- a/common/autoconf/flags.m4 ++++ b/common/autoconf/flags.m4 +@@ -451,6 +451,21 @@ AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK], AC_SUBST($2CXXSTD_CXXFLAG) fi @@ -32,23 +33,32 @@ diff --git openjdk.orig///common/autoconf/flags.m4 openjdk///common/autoconf/fla if test "x$CFLAGS" != "x${ADDED_CFLAGS}"; then AC_MSG_WARN([Ignoring CFLAGS($CFLAGS) found in environment. Use --with-extra-cflags]) fi -diff --git openjdk.orig///common/autoconf/hotspot-spec.gmk.in openjdk///common/autoconf/hotspot-spec.gmk.in ---- openjdk.orig///common/autoconf/hotspot-spec.gmk.in -+++ openjdk///common/autoconf/hotspot-spec.gmk.in -@@ -112,7 +112,8 @@ - RC:=@HOTSPOT_RC@ - - EXTRA_CFLAGS=@LEGACY_EXTRA_CFLAGS@ $(NO_DELETE_NULL_POINTER_CHECKS_CFLAG) \ -- $(NO_LIFETIME_DSE_CFLAG) $(CXXSTD_CXXFLAG) -+ $(NO_LIFETIME_DSE_CFLAG) $(CXXSTD_CXXFLAG) \ -+ $(REALIGN_CFLAG) - EXTRA_CXXFLAGS=@LEGACY_EXTRA_CXXFLAGS@ - EXTRA_LDFLAGS=@LEGACY_EXTRA_LDFLAGS@ - EXTRA_ASFLAGS=@LEGACY_EXTRA_ASFLAGS@ -diff --git openjdk.orig///common/autoconf/spec.gmk.in openjdk///common/autoconf/spec.gmk.in ---- openjdk.orig///common/autoconf/spec.gmk.in -+++ openjdk///common/autoconf/spec.gmk.in -@@ -366,6 +366,7 @@ +diff --git a/common/autoconf/hotspot-spec.gmk.in b/common/autoconf/hotspot-spec.gmk.in +index 3f86751d2b..f8a271383f 100644 +--- a/common/autoconf/hotspot-spec.gmk.in ++++ b/common/autoconf/hotspot-spec.gmk.in +@@ -114,13 +114,14 @@ RC:=@HOTSPOT_RC@ + # Retain EXTRA_{CFLAGS,CXXFLAGS,LDFLAGS,ASFLAGS} for the target flags to + # maintain compatibility with the existing Makefiles + EXTRA_CFLAGS=@LEGACY_TARGET_CFLAGS@ $(NO_DELETE_NULL_POINTER_CHECKS_CFLAG) \ +- $(NO_LIFETIME_DSE_CFLAG) $(CXXSTD_CXXFLAG) ++ $(NO_LIFETIME_DSE_CFLAG) $(CXXSTD_CXXFLAG) \ ++ $(REALIGN_CFLAG) + EXTRA_CXXFLAGS=@LEGACY_TARGET_CXXFLAGS@ + EXTRA_LDFLAGS=@LEGACY_TARGET_LDFLAGS@ + EXTRA_ASFLAGS=@LEGACY_TARGET_ASFLAGS@ + # Define an equivalent set for the host flags (i.e. without sysroot options) + HOST_CFLAGS=@LEGACY_HOST_CFLAGS@ $(NO_DELETE_NULL_POINTER_CHECKS_CFLAG) \ +- $(NO_LIFETIME_DSE_CFLAG) $(CXXSTD_CXXFLAG) ++ $(NO_LIFETIME_DSE_CFLAG) $(CXXSTD_CXXFLAG) + HOST_CXXFLAGS=@LEGACY_HOST_CXXFLAGS@ + HOST_LDFLAGS=@LEGACY_HOST_LDFLAGS@ + HOST_ASFLAGS=@LEGACY_HOST_ASFLAGS@ +diff --git a/common/autoconf/spec.gmk.in b/common/autoconf/spec.gmk.in +index 9573bb2cbd..fe7efc130c 100644 +--- a/common/autoconf/spec.gmk.in ++++ b/common/autoconf/spec.gmk.in +@@ -366,6 +366,7 @@ CXXFLAGS_JDKEXE:=@CXXFLAGS_JDKEXE@ NO_DELETE_NULL_POINTER_CHECKS_CFLAG=@NO_DELETE_NULL_POINTER_CHECKS_CFLAG@ NO_LIFETIME_DSE_CFLAG=@NO_LIFETIME_DSE_CFLAG@ diff --git a/SOURCES/jdk8281098-pr3836-pass_compiler_flags_to_adlc.patch b/SOURCES/jdk8281098-pr3836-pass_compiler_flags_to_adlc.patch deleted file mode 100644 index 774a08e..0000000 --- a/SOURCES/jdk8281098-pr3836-pass_compiler_flags_to_adlc.patch +++ /dev/null @@ -1,67 +0,0 @@ -# HG changeset patch -# User Andrew John Hughes -# Date 1620365804 -3600 -# Fri May 07 06:36:44 2021 +0100 -# Node ID 39b62f35eca823b4c9a98bc1dc0cb9acb87360f8 -# Parent 723b59ed1afe878c5cd35f080399c8ceec4f776b -PR3836: Extra compiler flags not passed to adlc build - -diff --git openjdk.orig/hotspot/make/aix/makefiles/adlc.make openjdk/hotspot/make/aix/makefiles/adlc.make ---- openjdk.orig/hotspot/make/aix/makefiles/adlc.make -+++ openjdk/hotspot/make/aix/makefiles/adlc.make -@@ -69,6 +69,11 @@ - CFLAGS_WARN = -w - CFLAGS += $(CFLAGS_WARN) - -+# Extra flags from gnumake's invocation or environment -+CFLAGS += $(EXTRA_CFLAGS) -+LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS) -+ASFLAGS += $(EXTRA_ASFLAGS) -+ - OBJECTNAMES = \ - adlparse.o \ - archDesc.o \ -diff --git openjdk.orig/hotspot/make/bsd/makefiles/adlc.make openjdk/hotspot/make/bsd/makefiles/adlc.make ---- openjdk.orig/hotspot/make/bsd/makefiles/adlc.make -+++ openjdk/hotspot/make/bsd/makefiles/adlc.make -@@ -71,6 +71,11 @@ - endif - CFLAGS += $(CFLAGS_WARN) - -+# Extra flags from gnumake's invocation or environment -+CFLAGS += $(EXTRA_CFLAGS) -+LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS) -+ASFLAGS += $(EXTRA_ASFLAGS) -+ - OBJECTNAMES = \ - adlparse.o \ - archDesc.o \ -diff --git openjdk.orig/hotspot/make/linux/makefiles/adlc.make openjdk/hotspot/make/linux/makefiles/adlc.make ---- openjdk.orig/hotspot/make/linux/makefiles/adlc.make -+++ openjdk/hotspot/make/linux/makefiles/adlc.make -@@ -69,6 +69,11 @@ - CFLAGS_WARN = $(WARNINGS_ARE_ERRORS) - CFLAGS += $(CFLAGS_WARN) - -+# Extra flags from gnumake's invocation or environment -+CFLAGS += $(EXTRA_CFLAGS) -+LFLAGS += $(EXTRA_CFLAGS) $(EXTRA_LDFLAGS) -+ASFLAGS += $(EXTRA_ASFLAGS) -+ - OBJECTNAMES = \ - adlparse.o \ - archDesc.o \ -diff --git openjdk.orig/hotspot/make/solaris/makefiles/adlc.make openjdk/hotspot/make/solaris/makefiles/adlc.make ---- openjdk.orig/hotspot/make/solaris/makefiles/adlc.make -+++ openjdk/hotspot/make/solaris/makefiles/adlc.make -@@ -85,6 +85,10 @@ - endif - CFLAGS += $(CFLAGS_WARN) - -+# Extra flags from gnumake's invocation or environment -+CFLAGS += $(EXTRA_CFLAGS) -+ASFLAGS += $(EXTRA_ASFLAGS) -+ - ifeq ("${Platform_compiler}", "sparcWorks") - # Enable the following CFLAGS addition if you need to compare the - # built ELF objects. diff --git a/SOURCES/jdk8328999-update_giflib_5.2.2.patch b/SOURCES/jdk8328999-update_giflib_5.2.2.patch new file mode 100644 index 0000000..e9eb0de --- /dev/null +++ b/SOURCES/jdk8328999-update_giflib_5.2.2.patch @@ -0,0 +1,2596 @@ +diff --git a/THIRD_PARTY_README b/THIRD_PARTY_README +index f9aea78d64..605b36f100 100644 +--- a/THIRD_PARTY_README ++++ b/THIRD_PARTY_README +@@ -1696,7 +1696,7 @@ released under other open source licenses. + + ------------------------------------------------------------------------------- + +-%% This notice is provided with respect to GIFLIB 5.2.1 & libungif 4.1.3, ++%% This notice is provided with respect to GIFLIB 5.2.2 & libungif 4.1.3, + which may be included with JRE 8, JDK 8, and OpenJDK 8. + + --- begin of LICENSE --- +@@ -1721,6 +1721,29 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + ++tree/README ++ ++== Authors == ++ ++Gershon Elber ++original giflib code ++ ++Toshio Kuratomi ++uncompressed gif writing code ++former maintainer ++ ++Eric Raymond ++current as well as long time former maintainer of giflib code ++ ++There have been many other contributors; see the attributions in the ++version-control history to learn more. ++ ++ ++tree/openbsd-reallocarray.c ++ ++Copyright (C) 2008 Otto Moerbeek ++SPDX-License-Identifier: MIT ++ + --- end of LICENSE --- + + ------------------------------------------------------------------------------- +diff --git a/jdk/src/share/native/sun/awt/giflib/dgif_lib.c b/jdk/src/share/native/sun/awt/giflib/dgif_lib.c +index 6ddfb46060..0b2860b4b5 100644 +--- a/jdk/src/share/native/sun/awt/giflib/dgif_lib.c ++++ b/jdk/src/share/native/sun/awt/giflib/dgif_lib.c +@@ -34,11 +34,11 @@ SPDX-License-Identifier: MIT + + *****************************************************************************/ + +-#include ++#include + #include + #include +-#include + #include ++#include + #include + + #ifdef _WIN32 +@@ -55,18 +55,19 @@ SPDX-License-Identifier: MIT + + /* avoid extra function call in case we use fread (TVT) */ + static int InternalRead(GifFileType *gif, GifByteType *buf, int len) { +- //fprintf(stderr, "### Read: %d\n", len); +- return +- (((GifFilePrivateType*)gif->Private)->Read ? +- ((GifFilePrivateType*)gif->Private)->Read(gif,buf,len) : +- fread(buf,1,len,((GifFilePrivateType*)gif->Private)->File)); ++ // fprintf(stderr, "### Read: %d\n", len); ++ return (((GifFilePrivateType *)gif->Private)->Read ++ ? ((GifFilePrivateType *)gif->Private)->Read(gif, buf, len) ++ : fread(buf, 1, len, ++ ((GifFilePrivateType *)gif->Private)->File)); + } + + static int DGifGetWord(GifFileType *GifFile, GifWord *Word); + static int DGifSetupDecompress(GifFileType *GifFile); + static int DGifDecompressLine(GifFileType *GifFile, GifPixelType *Line, + int LineLen); +-static int DGifGetPrefixChar(GifPrefixType *Prefix, int Code, int ClearCode); ++static int DGifGetPrefixChar(const GifPrefixType *Prefix, int Code, ++ int ClearCode); + static int DGifDecompressInput(GifFileType *GifFile, int *Code); + static int DGifBufferedInput(GifFileType *GifFile, GifByteType *Buf, + GifByteType *NextByte); +@@ -76,15 +77,14 @@ static int DGifBufferedInput(GifFileType *GifFile, GifByteType *Buf, + Returns dynamically allocated GifFileType pointer which serves as the GIF + info record. + ******************************************************************************/ +-GifFileType * +-DGifOpenFileName(const char *FileName, int *Error) +-{ ++GifFileType *DGifOpenFileName(const char *FileName, int *Error) { + int FileHandle; + GifFileType *GifFile; + + if ((FileHandle = open(FileName, O_RDONLY)) == -1) { +- if (Error != NULL) ++ if (Error != NULL) { + *Error = D_GIF_ERR_OPEN_FAILED; ++ } + return NULL; + } + +@@ -97,9 +97,7 @@ DGifOpenFileName(const char *FileName, int *Error) + Returns dynamically allocated GifFileType pointer which serves as the GIF + info record. + ******************************************************************************/ +-GifFileType * +-DGifOpenFileHandle(int FileHandle, int *Error) +-{ ++GifFileType *DGifOpenFileHandle(int FileHandle, int *Error) { + char Buf[GIF_STAMP_LEN + 1]; + GifFileType *GifFile; + GifFilePrivateType *Private; +@@ -107,13 +105,14 @@ DGifOpenFileHandle(int FileHandle, int *Error) + + GifFile = (GifFileType *)malloc(sizeof(GifFileType)); + if (GifFile == NULL) { +- if (Error != NULL) ++ if (Error != NULL) { + *Error = D_GIF_ERR_NOT_ENOUGH_MEM; ++ } + (void)close(FileHandle); + return NULL; + } + +- /*@i1@*/memset(GifFile, '\0', sizeof(GifFileType)); ++ /*@i1@*/ memset(GifFile, '\0', sizeof(GifFileType)); + + /* Belt and suspenders, in case the null pointer isn't zero */ + GifFile->SavedImages = NULL; +@@ -121,35 +120,38 @@ DGifOpenFileHandle(int FileHandle, int *Error) + + Private = (GifFilePrivateType *)calloc(1, sizeof(GifFilePrivateType)); + if (Private == NULL) { +- if (Error != NULL) ++ if (Error != NULL) { + *Error = D_GIF_ERR_NOT_ENOUGH_MEM; ++ } + (void)close(FileHandle); + free((char *)GifFile); + return NULL; + } + +- /*@i1@*/memset(Private, '\0', sizeof(GifFilePrivateType)); ++ /*@i1@*/ memset(Private, '\0', sizeof(GifFilePrivateType)); + + #ifdef _WIN32 +- _setmode(FileHandle, O_BINARY); /* Make sure it is in binary mode. */ +-#endif /* _WIN32 */ ++ _setmode(FileHandle, O_BINARY); /* Make sure it is in binary mode. */ ++#endif /* _WIN32 */ + +- f = fdopen(FileHandle, "rb"); /* Make it into a stream: */ ++ f = fdopen(FileHandle, "rb"); /* Make it into a stream: */ + + /*@-mustfreeonly@*/ + GifFile->Private = (void *)Private; + Private->FileHandle = FileHandle; + Private->File = f; + Private->FileState = FILE_STATE_READ; +- Private->Read = NULL; /* don't use alternate input method (TVT) */ +- GifFile->UserData = NULL; /* TVT */ ++ Private->Read = NULL; /* don't use alternate input method (TVT) */ ++ GifFile->UserData = NULL; /* TVT */ + /*@=mustfreeonly@*/ + + /* Let's see if this is a GIF file: */ + /* coverity[check_return] */ +- if (InternalRead(GifFile, (unsigned char *)Buf, GIF_STAMP_LEN) != GIF_STAMP_LEN) { +- if (Error != NULL) ++ if (InternalRead(GifFile, (unsigned char *)Buf, GIF_STAMP_LEN) != ++ GIF_STAMP_LEN) { ++ if (Error != NULL) { + *Error = D_GIF_ERR_READ_FAILED; ++ } + (void)fclose(f); + free((char *)Private); + free((char *)GifFile); +@@ -159,8 +161,9 @@ DGifOpenFileHandle(int FileHandle, int *Error) + /* Check for GIF prefix at start of file */ + Buf[GIF_STAMP_LEN] = 0; + if (strncmp(GIF_STAMP, Buf, GIF_VERSION_POS) != 0) { +- if (Error != NULL) ++ if (Error != NULL) { + *Error = D_GIF_ERR_NOT_GIF_FILE; ++ } + (void)fclose(f); + free((char *)Private); + free((char *)GifFile); +@@ -177,7 +180,7 @@ DGifOpenFileHandle(int FileHandle, int *Error) + GifFile->Error = 0; + + /* What version of GIF? */ +- Private->gif89 = (Buf[GIF_VERSION_POS] == '9'); ++ Private->gif89 = (Buf[GIF_VERSION_POS + 1] == '9'); + + return GifFile; + } +@@ -185,17 +188,16 @@ DGifOpenFileHandle(int FileHandle, int *Error) + /****************************************************************************** + GifFileType constructor with user supplied input function (TVT) + ******************************************************************************/ +-GifFileType * +-DGifOpen(void *userData, InputFunc readFunc, int *Error) +-{ ++GifFileType *DGifOpen(void *userData, InputFunc readFunc, int *Error) { + char Buf[GIF_STAMP_LEN + 1]; + GifFileType *GifFile; + GifFilePrivateType *Private; + + GifFile = (GifFileType *)malloc(sizeof(GifFileType)); + if (GifFile == NULL) { +- if (Error != NULL) ++ if (Error != NULL) { + *Error = D_GIF_ERR_NOT_ENOUGH_MEM; ++ } + return NULL; + } + +@@ -207,26 +209,29 @@ DGifOpen(void *userData, InputFunc readFunc, int *Error) + + Private = (GifFilePrivateType *)calloc(1, sizeof(GifFilePrivateType)); + if (!Private) { +- if (Error != NULL) ++ if (Error != NULL) { + *Error = D_GIF_ERR_NOT_ENOUGH_MEM; ++ } + free((char *)GifFile); + return NULL; + } +- /*@i1@*/memset(Private, '\0', sizeof(GifFilePrivateType)); ++ /*@i1@*/ memset(Private, '\0', sizeof(GifFilePrivateType)); + + GifFile->Private = (void *)Private; + Private->FileHandle = 0; + Private->File = NULL; + Private->FileState = FILE_STATE_READ; + +- Private->Read = readFunc; /* TVT */ +- GifFile->UserData = userData; /* TVT */ ++ Private->Read = readFunc; /* TVT */ ++ GifFile->UserData = userData; /* TVT */ + + /* Lets see if this is a GIF file: */ + /* coverity[check_return] */ +- if (InternalRead(GifFile, (unsigned char *)Buf, GIF_STAMP_LEN) != GIF_STAMP_LEN) { +- if (Error != NULL) ++ if (InternalRead(GifFile, (unsigned char *)Buf, GIF_STAMP_LEN) != ++ GIF_STAMP_LEN) { ++ if (Error != NULL) { + *Error = D_GIF_ERR_READ_FAILED; ++ } + free((char *)Private); + free((char *)GifFile); + return NULL; +@@ -235,8 +240,9 @@ DGifOpen(void *userData, InputFunc readFunc, int *Error) + /* Check for GIF prefix at start of file */ + Buf[GIF_STAMP_LEN] = '\0'; + if (strncmp(GIF_STAMP, Buf, GIF_VERSION_POS) != 0) { +- if (Error != NULL) ++ if (Error != NULL) { + *Error = D_GIF_ERR_NOT_GIF_FILE; ++ } + free((char *)Private); + free((char *)GifFile); + return NULL; +@@ -245,15 +251,16 @@ DGifOpen(void *userData, InputFunc readFunc, int *Error) + if (DGifGetScreenDesc(GifFile) == GIF_ERROR) { + free((char *)Private); + free((char *)GifFile); +- if (Error != NULL) ++ if (Error != NULL) { + *Error = D_GIF_ERR_NO_SCRN_DSCR; ++ } + return NULL; + } + + GifFile->Error = 0; + + /* What version of GIF? */ +- Private->gif89 = (Buf[GIF_VERSION_POS] == '9'); ++ Private->gif89 = (Buf[GIF_VERSION_POS + 1] == '9'); + + return GifFile; + } +@@ -262,9 +269,7 @@ DGifOpen(void *userData, InputFunc readFunc, int *Error) + This routine should be called before any other DGif calls. Note that + this routine is called automatically from DGif file open routines. + ******************************************************************************/ +-int +-DGifGetScreenDesc(GifFileType *GifFile) +-{ ++int DGifGetScreenDesc(GifFileType *GifFile) { + int BitsPerPixel; + bool SortFlag; + GifByteType Buf[3]; +@@ -278,8 +283,9 @@ DGifGetScreenDesc(GifFileType *GifFile) + + /* Put the screen descriptor into the file: */ + if (DGifGetWord(GifFile, &GifFile->SWidth) == GIF_ERROR || +- DGifGetWord(GifFile, &GifFile->SHeight) == GIF_ERROR) ++ DGifGetWord(GifFile, &GifFile->SHeight) == GIF_ERROR) { + return GIF_ERROR; ++ } + + if (InternalRead(GifFile, Buf, 3) != 3) { + GifFile->Error = D_GIF_ERR_READ_FAILED; +@@ -292,7 +298,7 @@ DGifGetScreenDesc(GifFileType *GifFile) + BitsPerPixel = (Buf[0] & 0x07) + 1; + GifFile->SBackGroundColor = Buf[1]; + GifFile->AspectByte = Buf[2]; +- if (Buf[0] & 0x80) { /* Do we have global color map? */ ++ if (Buf[0] & 0x80) { /* Do we have global color map? */ + int i; + + GifFile->SColorMap = GifMakeMapObject(1 << BitsPerPixel, NULL); +@@ -327,23 +333,20 @@ DGifGetScreenDesc(GifFileType *GifFile) + return GIF_OK; + } + +-const char * +-DGifGetGifVersion(GifFileType *GifFile) +-{ +- GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; ++const char *DGifGetGifVersion(GifFileType *GifFile) { ++ GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + +- if (Private->gif89) ++ if (Private->gif89) { + return GIF89_STAMP; +- else ++ } else { + return GIF87_STAMP; ++ } + } + + /****************************************************************************** + This routine should be called before any attempt to read an image. + ******************************************************************************/ +-int +-DGifGetRecordType(GifFileType *GifFile, GifRecordType* Type) +-{ ++int DGifGetRecordType(GifFileType *GifFile, GifRecordType *Type) { + GifByteType Buf; + GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + +@@ -359,29 +362,27 @@ DGifGetRecordType(GifFileType *GifFile, GifRecordType* Type) + return GIF_ERROR; + } + +- //fprintf(stderr, "### DGifGetRecordType: %02x\n", Buf); ++ // fprintf(stderr, "### DGifGetRecordType: %02x\n", Buf); + switch (Buf) { +- case DESCRIPTOR_INTRODUCER: +- *Type = IMAGE_DESC_RECORD_TYPE; +- break; +- case EXTENSION_INTRODUCER: +- *Type = EXTENSION_RECORD_TYPE; +- break; +- case TERMINATOR_INTRODUCER: +- *Type = TERMINATE_RECORD_TYPE; +- break; +- default: +- *Type = UNDEFINED_RECORD_TYPE; +- GifFile->Error = D_GIF_ERR_WRONG_RECORD; +- return GIF_ERROR; ++ case DESCRIPTOR_INTRODUCER: ++ *Type = IMAGE_DESC_RECORD_TYPE; ++ break; ++ case EXTENSION_INTRODUCER: ++ *Type = EXTENSION_RECORD_TYPE; ++ break; ++ case TERMINATOR_INTRODUCER: ++ *Type = TERMINATE_RECORD_TYPE; ++ break; ++ default: ++ *Type = UNDEFINED_RECORD_TYPE; ++ GifFile->Error = D_GIF_ERR_WRONG_RECORD; ++ return GIF_ERROR; + } + + return GIF_OK; + } + +-int +-DGifGetImageHeader(GifFileType *GifFile) +-{ ++int DGifGetImageHeader(GifFileType *GifFile) { + unsigned int BitsPerPixel; + GifByteType Buf[3]; + GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; +@@ -395,8 +396,9 @@ DGifGetImageHeader(GifFileType *GifFile) + if (DGifGetWord(GifFile, &GifFile->Image.Left) == GIF_ERROR || + DGifGetWord(GifFile, &GifFile->Image.Top) == GIF_ERROR || + DGifGetWord(GifFile, &GifFile->Image.Width) == GIF_ERROR || +- DGifGetWord(GifFile, &GifFile->Image.Height) == GIF_ERROR) ++ DGifGetWord(GifFile, &GifFile->Image.Height) == GIF_ERROR) { + return GIF_ERROR; ++ } + if (InternalRead(GifFile, Buf, 1) != 1) { + GifFile->Error = D_GIF_ERR_READ_FAILED; + GifFreeMapObject(GifFile->Image.ColorMap); +@@ -415,7 +417,8 @@ DGifGetImageHeader(GifFileType *GifFile) + if (Buf[0] & 0x80) { + unsigned int i; + +- GifFile->Image.ColorMap = GifMakeMapObject(1 << BitsPerPixel, NULL); ++ GifFile->Image.ColorMap = ++ GifMakeMapObject(1 << BitsPerPixel, NULL); + if (GifFile->Image.ColorMap == NULL) { + GifFile->Error = D_GIF_ERR_NOT_ENOUGH_MEM; + return GIF_ERROR; +@@ -436,8 +439,8 @@ DGifGetImageHeader(GifFileType *GifFile) + } + } + +- Private->PixelCount = (long)GifFile->Image.Width * +- (long)GifFile->Image.Height; ++ Private->PixelCount = ++ (long)GifFile->Image.Width * (long)GifFile->Image.Height; + + /* Reset decompress algorithm parameters. */ + return DGifSetupDecompress(GifFile); +@@ -447,9 +450,7 @@ DGifGetImageHeader(GifFileType *GifFile) + This routine should be called before any attempt to read an image. + Note it is assumed the Image desc. header has been read. + ******************************************************************************/ +-int +-DGifGetImageDesc(GifFileType *GifFile) +-{ ++int DGifGetImageDesc(GifFileType *GifFile) { + GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + SavedImage *sp; + +@@ -464,9 +465,9 @@ DGifGetImageDesc(GifFileType *GifFile) + } + + if (GifFile->SavedImages) { +- SavedImage* new_saved_images = +- (SavedImage *)reallocarray(GifFile->SavedImages, +- (GifFile->ImageCount + 1), sizeof(SavedImage)); ++ SavedImage *new_saved_images = (SavedImage *)reallocarray( ++ GifFile->SavedImages, (GifFile->ImageCount + 1), ++ sizeof(SavedImage)); + if (new_saved_images == NULL) { + GifFile->Error = D_GIF_ERR_NOT_ENOUGH_MEM; + return GIF_ERROR; +@@ -474,7 +475,7 @@ DGifGetImageDesc(GifFileType *GifFile) + GifFile->SavedImages = new_saved_images; + } else { + if ((GifFile->SavedImages = +- (SavedImage *) malloc(sizeof(SavedImage))) == NULL) { ++ (SavedImage *)malloc(sizeof(SavedImage))) == NULL) { + GifFile->Error = D_GIF_ERR_NOT_ENOUGH_MEM; + return GIF_ERROR; + } +@@ -483,9 +484,9 @@ DGifGetImageDesc(GifFileType *GifFile) + sp = &GifFile->SavedImages[GifFile->ImageCount]; + memcpy(&sp->ImageDesc, &GifFile->Image, sizeof(GifImageDesc)); + if (GifFile->Image.ColorMap != NULL) { +- sp->ImageDesc.ColorMap = GifMakeMapObject( +- GifFile->Image.ColorMap->ColorCount, +- GifFile->Image.ColorMap->Colors); ++ sp->ImageDesc.ColorMap = ++ GifMakeMapObject(GifFile->Image.ColorMap->ColorCount, ++ GifFile->Image.ColorMap->Colors); + if (sp->ImageDesc.ColorMap == NULL) { + GifFile->Error = D_GIF_ERR_NOT_ENOUGH_MEM; + return GIF_ERROR; +@@ -493,7 +494,7 @@ DGifGetImageDesc(GifFileType *GifFile) + } + sp->RasterBits = (unsigned char *)NULL; + sp->ExtensionBlockCount = 0; +- sp->ExtensionBlocks = (ExtensionBlock *) NULL; ++ sp->ExtensionBlocks = (ExtensionBlock *)NULL; + + GifFile->ImageCount++; + +@@ -503,11 +504,9 @@ DGifGetImageDesc(GifFileType *GifFile) + /****************************************************************************** + Get one full scanned line (Line) of length LineLen from GIF file. + ******************************************************************************/ +-int +-DGifGetLine(GifFileType *GifFile, GifPixelType *Line, int LineLen) +-{ ++int DGifGetLine(GifFileType *GifFile, GifPixelType *Line, int LineLen) { + GifByteType *Dummy; +- GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; ++ GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + + if (!IS_READABLE(Private)) { + /* This file was NOT open for reading: */ +@@ -515,8 +514,9 @@ DGifGetLine(GifFileType *GifFile, GifPixelType *Line, int LineLen) + return GIF_ERROR; + } + +- if (!LineLen) ++ if (!LineLen) { + LineLen = GifFile->Image.Width; ++ } + + if ((Private->PixelCount -= LineLen) > 0xffff0000UL) { + GifFile->Error = D_GIF_ERR_DATA_TOO_BIG; +@@ -525,56 +525,59 @@ DGifGetLine(GifFileType *GifFile, GifPixelType *Line, int LineLen) + + if (DGifDecompressLine(GifFile, Line, LineLen) == GIF_OK) { + if (Private->PixelCount == 0) { +- /* We probably won't be called any more, so let's clean up +- * everything before we return: need to flush out all the +- * rest of image until an empty block (size 0) ++ /* We probably won't be called any more, so let's clean ++ * up everything before we return: need to flush out all ++ * the rest of image until an empty block (size 0) + * detected. We use GetCodeNext. + */ +- do +- if (DGifGetCodeNext(GifFile, &Dummy) == GIF_ERROR) ++ do { ++ if (DGifGetCodeNext(GifFile, &Dummy) == ++ GIF_ERROR) { + return GIF_ERROR; +- while (Dummy != NULL) ; ++ } ++ } while (Dummy != NULL); + } + return GIF_OK; +- } else ++ } else { + return GIF_ERROR; ++ } + } + + /****************************************************************************** + Put one pixel (Pixel) into GIF file. + ******************************************************************************/ +-int +-DGifGetPixel(GifFileType *GifFile, GifPixelType Pixel) +-{ ++int DGifGetPixel(GifFileType *GifFile, GifPixelType Pixel) { + GifByteType *Dummy; +- GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; ++ GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + + if (!IS_READABLE(Private)) { + /* This file was NOT open for reading: */ + GifFile->Error = D_GIF_ERR_NOT_READABLE; + return GIF_ERROR; + } +- if (--Private->PixelCount > 0xffff0000UL) +- { ++ if (--Private->PixelCount > 0xffff0000UL) { + GifFile->Error = D_GIF_ERR_DATA_TOO_BIG; + return GIF_ERROR; + } + + if (DGifDecompressLine(GifFile, &Pixel, 1) == GIF_OK) { + if (Private->PixelCount == 0) { +- /* We probably won't be called any more, so let's clean up +- * everything before we return: need to flush out all the +- * rest of image until an empty block (size 0) ++ /* We probably won't be called any more, so let's clean ++ * up everything before we return: need to flush out all ++ * the rest of image until an empty block (size 0) + * detected. We use GetCodeNext. + */ +- do +- if (DGifGetCodeNext(GifFile, &Dummy) == GIF_ERROR) ++ do { ++ if (DGifGetCodeNext(GifFile, &Dummy) == ++ GIF_ERROR) { + return GIF_ERROR; +- while (Dummy != NULL) ; ++ } ++ } while (Dummy != NULL); + } + return GIF_OK; +- } else ++ } else { + return GIF_ERROR; ++ } + } + + /****************************************************************************** +@@ -584,13 +587,12 @@ DGifGetPixel(GifFileType *GifFile, GifPixelType Pixel) + The Extension should NOT be freed by the user (not dynamically allocated). + Note it is assumed the Extension description header has been read. + ******************************************************************************/ +-int +-DGifGetExtension(GifFileType *GifFile, int *ExtCode, GifByteType **Extension) +-{ ++int DGifGetExtension(GifFileType *GifFile, int *ExtCode, ++ GifByteType **Extension) { + GifByteType Buf; + GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + +- //fprintf(stderr, "### -> DGifGetExtension:\n"); ++ // fprintf(stderr, "### -> DGifGetExtension:\n"); + if (!IS_READABLE(Private)) { + /* This file was NOT open for reading: */ + GifFile->Error = D_GIF_ERR_NOT_READABLE; +@@ -603,7 +605,8 @@ DGifGetExtension(GifFileType *GifFile, int *ExtCode, GifByteType **Extension) + return GIF_ERROR; + } + *ExtCode = Buf; +- //fprintf(stderr, "### <- DGifGetExtension: %02x, about to call next\n", Buf); ++ // fprintf(stderr, "### <- DGifGetExtension: %02x, about to call ++ // next\n", Buf); + + return DGifGetExtensionNext(GifFile, Extension); + } +@@ -613,30 +616,30 @@ DGifGetExtension(GifFileType *GifFile, int *ExtCode, GifByteType **Extension) + routine should be called until NULL Extension is returned. + The Extension should NOT be freed by the user (not dynamically allocated). + ******************************************************************************/ +-int +-DGifGetExtensionNext(GifFileType *GifFile, GifByteType ** Extension) +-{ ++int DGifGetExtensionNext(GifFileType *GifFile, GifByteType **Extension) { + GifByteType Buf; + GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + +- //fprintf(stderr, "### -> DGifGetExtensionNext\n"); ++ // fprintf(stderr, "### -> DGifGetExtensionNext\n"); + if (InternalRead(GifFile, &Buf, 1) != 1) { + GifFile->Error = D_GIF_ERR_READ_FAILED; + return GIF_ERROR; + } +- //fprintf(stderr, "### DGifGetExtensionNext sees %d\n", Buf); ++ // fprintf(stderr, "### DGifGetExtensionNext sees %d\n", Buf); + + if (Buf > 0) { +- *Extension = Private->Buf; /* Use private unused buffer. */ +- (*Extension)[0] = Buf; /* Pascal strings notation (pos. 0 is len.). */ +- /* coverity[tainted_data,check_return] */ ++ *Extension = Private->Buf; /* Use private unused buffer. */ ++ (*Extension)[0] = ++ Buf; /* Pascal strings notation (pos. 0 is len.). */ ++ /* coverity[tainted_data,check_return] */ + if (InternalRead(GifFile, &((*Extension)[1]), Buf) != Buf) { + GifFile->Error = D_GIF_ERR_READ_FAILED; + return GIF_ERROR; + } +- } else ++ } else { + *Extension = NULL; +- //fprintf(stderr, "### <- DGifGetExtensionNext: %p\n", Extension); ++ } ++ // fprintf(stderr, "### <- DGifGetExtensionNext: %p\n", Extension); + + return GIF_OK; + } +@@ -647,19 +650,20 @@ DGifGetExtensionNext(GifFileType *GifFile, GifByteType ** Extension) + + int DGifExtensionToGCB(const size_t GifExtensionLength, + const GifByteType *GifExtension, +- GraphicsControlBlock *GCB) +-{ ++ GraphicsControlBlock *GCB) { + if (GifExtensionLength != 4) { + return GIF_ERROR; + } + + GCB->DisposalMode = (GifExtension[0] >> 2) & 0x07; + GCB->UserInputFlag = (GifExtension[0] & 0x02) != 0; +- GCB->DelayTime = UNSIGNED_LITTLE_ENDIAN(GifExtension[1], GifExtension[2]); +- if (GifExtension[0] & 0x01) ++ GCB->DelayTime = ++ UNSIGNED_LITTLE_ENDIAN(GifExtension[1], GifExtension[2]); ++ if (GifExtension[0] & 0x01) { + GCB->TransparentColor = (int)GifExtension[3]; +- else ++ } else { + GCB->TransparentColor = NO_TRANSPARENT_COLOR; ++ } + + return GIF_OK; + } +@@ -668,23 +672,27 @@ int DGifExtensionToGCB(const size_t GifExtensionLength, + Extract the Graphics Control Block for a saved image, if it exists. + ******************************************************************************/ + +-int DGifSavedExtensionToGCB(GifFileType *GifFile, +- int ImageIndex, GraphicsControlBlock *GCB) +-{ ++int DGifSavedExtensionToGCB(GifFileType *GifFile, int ImageIndex, ++ GraphicsControlBlock *GCB) { + int i; + +- if (ImageIndex < 0 || ImageIndex > GifFile->ImageCount - 1) ++ if (ImageIndex < 0 || ImageIndex > GifFile->ImageCount - 1) { + return GIF_ERROR; ++ } + + GCB->DisposalMode = DISPOSAL_UNSPECIFIED; + GCB->UserInputFlag = false; + GCB->DelayTime = 0; + GCB->TransparentColor = NO_TRANSPARENT_COLOR; + +- for (i = 0; i < GifFile->SavedImages[ImageIndex].ExtensionBlockCount; i++) { +- ExtensionBlock *ep = &GifFile->SavedImages[ImageIndex].ExtensionBlocks[i]; +- if (ep->Function == GRAPHICS_EXT_FUNC_CODE) +- return DGifExtensionToGCB(ep->ByteCount, ep->Bytes, GCB); ++ for (i = 0; i < GifFile->SavedImages[ImageIndex].ExtensionBlockCount; ++ i++) { ++ ExtensionBlock *ep = ++ &GifFile->SavedImages[ImageIndex].ExtensionBlocks[i]; ++ if (ep->Function == GRAPHICS_EXT_FUNC_CODE) { ++ return DGifExtensionToGCB(ep->ByteCount, ep->Bytes, ++ GCB); ++ } + } + + return GIF_ERROR; +@@ -693,13 +701,12 @@ int DGifSavedExtensionToGCB(GifFileType *GifFile, + /****************************************************************************** + This routine should be called last, to close the GIF file. + ******************************************************************************/ +-int +-DGifCloseFile(GifFileType *GifFile, int *ErrorCode) +-{ ++int DGifCloseFile(GifFileType *GifFile, int *ErrorCode) { + GifFilePrivateType *Private; + +- if (GifFile == NULL || GifFile->Private == NULL) ++ if (GifFile == NULL || GifFile->Private == NULL) { + return GIF_ERROR; ++ } + + if (GifFile->Image.ColorMap) { + GifFreeMapObject(GifFile->Image.ColorMap); +@@ -716,22 +723,25 @@ DGifCloseFile(GifFileType *GifFile, int *ErrorCode) + GifFile->SavedImages = NULL; + } + +- GifFreeExtensions(&GifFile->ExtensionBlockCount, &GifFile->ExtensionBlocks); ++ GifFreeExtensions(&GifFile->ExtensionBlockCount, ++ &GifFile->ExtensionBlocks); + +- Private = (GifFilePrivateType *) GifFile->Private; ++ Private = (GifFilePrivateType *)GifFile->Private; + + if (!IS_READABLE(Private)) { + /* This file was NOT open for reading: */ +- if (ErrorCode != NULL) ++ if (ErrorCode != NULL) { + *ErrorCode = D_GIF_ERR_NOT_READABLE; ++ } + free((char *)GifFile->Private); + free(GifFile); + return GIF_ERROR; + } + + if (Private->File && (fclose(Private->File) != 0)) { +- if (ErrorCode != NULL) ++ if (ErrorCode != NULL) { + *ErrorCode = D_GIF_ERR_CLOSE_FAILED; ++ } + free((char *)GifFile->Private); + free(GifFile); + return GIF_ERROR; +@@ -739,17 +749,16 @@ DGifCloseFile(GifFileType *GifFile, int *ErrorCode) + + free((char *)GifFile->Private); + free(GifFile); +- if (ErrorCode != NULL) ++ if (ErrorCode != NULL) { + *ErrorCode = D_GIF_SUCCEEDED; ++ } + return GIF_OK; + } + + /****************************************************************************** + Get 2 bytes (word) from the given file: + ******************************************************************************/ +-static int +-DGifGetWord(GifFileType *GifFile, GifWord *Word) +-{ ++static int DGifGetWord(GifFileType *GifFile, GifWord *Word) { + unsigned char c[2]; + + /* coverity[check_return] */ +@@ -769,9 +778,7 @@ DGifGetWord(GifFileType *GifFile, GifWord *Word) + to DGifGetCodeNext, until NULL block is returned. + The block should NOT be freed by the user (not dynamically allocated). + ******************************************************************************/ +-int +-DGifGetCode(GifFileType *GifFile, int *CodeSize, GifByteType **CodeBlock) +-{ ++int DGifGetCode(GifFileType *GifFile, int *CodeSize, GifByteType **CodeBlock) { + GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + + if (!IS_READABLE(Private)) { +@@ -790,9 +797,7 @@ DGifGetCode(GifFileType *GifFile, int *CodeSize, GifByteType **CodeBlock) + called until NULL block is returned. + The block should NOT be freed by the user (not dynamically allocated). + ******************************************************************************/ +-int +-DGifGetCodeNext(GifFileType *GifFile, GifByteType **CodeBlock) +-{ ++int DGifGetCodeNext(GifFileType *GifFile, GifByteType **CodeBlock) { + GifByteType Buf; + GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + +@@ -805,17 +810,19 @@ DGifGetCodeNext(GifFileType *GifFile, GifByteType **CodeBlock) + + /* coverity[lower_bounds] */ + if (Buf > 0) { +- *CodeBlock = Private->Buf; /* Use private unused buffer. */ +- (*CodeBlock)[0] = Buf; /* Pascal strings notation (pos. 0 is len.). */ +- /* coverity[tainted_data] */ ++ *CodeBlock = Private->Buf; /* Use private unused buffer. */ ++ (*CodeBlock)[0] = ++ Buf; /* Pascal strings notation (pos. 0 is len.). */ ++ /* coverity[tainted_data] */ + if (InternalRead(GifFile, &((*CodeBlock)[1]), Buf) != Buf) { + GifFile->Error = D_GIF_ERR_READ_FAILED; + return GIF_ERROR; + } + } else { + *CodeBlock = NULL; +- Private->Buf[0] = 0; /* Make sure the buffer is empty! */ +- Private->PixelCount = 0; /* And local info. indicate image read. */ ++ Private->Buf[0] = 0; /* Make sure the buffer is empty! */ ++ Private->PixelCount = ++ 0; /* And local info. indicate image read. */ + } + + return GIF_OK; +@@ -824,41 +831,43 @@ DGifGetCodeNext(GifFileType *GifFile, GifByteType **CodeBlock) + /****************************************************************************** + Setup the LZ decompression for this image: + ******************************************************************************/ +-static int +-DGifSetupDecompress(GifFileType *GifFile) +-{ ++static int DGifSetupDecompress(GifFileType *GifFile) { + int i, BitsPerPixel; + GifByteType CodeSize; + GifPrefixType *Prefix; + GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + + /* coverity[check_return] */ +- if (InternalRead(GifFile, &CodeSize, 1) < 1) { /* Read Code size from file. */ +- return GIF_ERROR; /* Failed to read Code size. */ ++ if (InternalRead(GifFile, &CodeSize, 1) < ++ 1) { /* Read Code size from file. */ ++ GifFile->Error = D_GIF_ERR_READ_FAILED; ++ return GIF_ERROR; /* Failed to read Code size. */ + } + BitsPerPixel = CodeSize; + + /* this can only happen on a severely malformed GIF */ + if (BitsPerPixel > 8) { +- GifFile->Error = D_GIF_ERR_READ_FAILED; /* somewhat bogus error code */ +- return GIF_ERROR; /* Failed to read Code size. */ ++ GifFile->Error = ++ D_GIF_ERR_READ_FAILED; /* somewhat bogus error code */ ++ return GIF_ERROR; /* Failed to read Code size. */ + } + +- Private->Buf[0] = 0; /* Input Buffer empty. */ ++ Private->Buf[0] = 0; /* Input Buffer empty. */ + Private->BitsPerPixel = BitsPerPixel; + Private->ClearCode = (1 << BitsPerPixel); + Private->EOFCode = Private->ClearCode + 1; + Private->RunningCode = Private->EOFCode + 1; +- Private->RunningBits = BitsPerPixel + 1; /* Number of bits per code. */ +- Private->MaxCode1 = 1 << Private->RunningBits; /* Max. code + 1. */ +- Private->StackPtr = 0; /* No pixels on the pixel stack. */ ++ Private->RunningBits = BitsPerPixel + 1; /* Number of bits per code. */ ++ Private->MaxCode1 = 1 << Private->RunningBits; /* Max. code + 1. */ ++ Private->StackPtr = 0; /* No pixels on the pixel stack. */ + Private->LastCode = NO_SUCH_CODE; +- Private->CrntShiftState = 0; /* No information in CrntShiftDWord. */ ++ Private->CrntShiftState = 0; /* No information in CrntShiftDWord. */ + Private->CrntShiftDWord = 0; + + Prefix = Private->Prefix; +- for (i = 0; i <= LZ_MAX_CODE; i++) ++ for (i = 0; i <= LZ_MAX_CODE; i++) { + Prefix[i] = NO_SUCH_CODE; ++ } + + return GIF_OK; + } +@@ -869,14 +878,13 @@ DGifSetupDecompress(GifFileType *GifFile) + This routine can be called few times (one per scan line, for example), in + order the complete the whole image. + ******************************************************************************/ +-static int +-DGifDecompressLine(GifFileType *GifFile, GifPixelType *Line, int LineLen) +-{ ++static int DGifDecompressLine(GifFileType *GifFile, GifPixelType *Line, ++ int LineLen) { + int i = 0; + int j, CrntCode, EOFCode, ClearCode, CrntPrefix, LastCode, StackPtr; + GifByteType *Stack, *Suffix; + GifPrefixType *Prefix; +- GifFilePrivateType *Private = (GifFilePrivateType *) GifFile->Private; ++ GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + + StackPtr = Private->StackPtr; + Prefix = Private->Prefix; +@@ -891,72 +899,88 @@ DGifDecompressLine(GifFileType *GifFile, GifPixelType *Line, int LineLen) + } + + if (StackPtr != 0) { +- /* Let pop the stack off before continueing to read the GIF file: */ +- while (StackPtr != 0 && i < LineLen) ++ /* Let pop the stack off before continueing to read the GIF ++ * file: */ ++ while (StackPtr != 0 && i < LineLen) { + Line[i++] = Stack[--StackPtr]; ++ } + } + +- while (i < LineLen) { /* Decode LineLen items. */ +- if (DGifDecompressInput(GifFile, &CrntCode) == GIF_ERROR) ++ while (i < LineLen) { /* Decode LineLen items. */ ++ if (DGifDecompressInput(GifFile, &CrntCode) == GIF_ERROR) { + return GIF_ERROR; ++ } + + if (CrntCode == EOFCode) { +- /* Note however that usually we will not be here as we will stop +- * decoding as soon as we got all the pixel, or EOF code will +- * not be read at all, and DGifGetLine/Pixel clean everything. */ ++ /* Note however that usually we will not be here as we ++ * will stop decoding as soon as we got all the pixel, ++ * or EOF code will not be read at all, and ++ * DGifGetLine/Pixel clean everything. */ + GifFile->Error = D_GIF_ERR_EOF_TOO_SOON; + return GIF_ERROR; + } else if (CrntCode == ClearCode) { + /* We need to start over again: */ +- for (j = 0; j <= LZ_MAX_CODE; j++) ++ for (j = 0; j <= LZ_MAX_CODE; j++) { + Prefix[j] = NO_SUCH_CODE; ++ } + Private->RunningCode = Private->EOFCode + 1; + Private->RunningBits = Private->BitsPerPixel + 1; + Private->MaxCode1 = 1 << Private->RunningBits; + LastCode = Private->LastCode = NO_SUCH_CODE; + } else { +- /* Its regular code - if in pixel range simply add it to output +- * stream, otherwise trace to codes linked list until the prefix +- * is in pixel range: */ ++ /* Its regular code - if in pixel range simply add it to ++ * output stream, otherwise trace to codes linked list ++ * until the prefix is in pixel range: */ + if (CrntCode < ClearCode) { +- /* This is simple - its pixel scalar, so add it to output: */ ++ /* This is simple - its pixel scalar, so add it ++ * to output: */ + Line[i++] = CrntCode; + } else { +- /* Its a code to needed to be traced: trace the linked list +- * until the prefix is a pixel, while pushing the suffix +- * pixels on our stack. If we done, pop the stack in reverse +- * (thats what stack is good for!) order to output. */ ++ /* Its a code to needed to be traced: trace the ++ * linked list until the prefix is a pixel, ++ * while pushing the suffix pixels on our stack. ++ * If we done, pop the stack in reverse (thats ++ * what stack is good for!) order to output. */ + if (Prefix[CrntCode] == NO_SUCH_CODE) { + CrntPrefix = LastCode; + +- /* Only allowed if CrntCode is exactly the running code: +- * In that case CrntCode = XXXCode, CrntCode or the +- * prefix code is last code and the suffix char is +- * exactly the prefix of last code! */ +- if (CrntCode == Private->RunningCode - 2) { +- Suffix[Private->RunningCode - 2] = +- Stack[StackPtr++] = DGifGetPrefixChar(Prefix, +- LastCode, +- ClearCode); ++ /* Only allowed if CrntCode is exactly ++ * the running code: In that case ++ * CrntCode = XXXCode, CrntCode or the ++ * prefix code is last code and the ++ * suffix char is exactly the prefix of ++ * last code! */ ++ if (CrntCode == ++ Private->RunningCode - 2) { ++ Suffix[Private->RunningCode - ++ 2] = Stack[StackPtr++] = ++ DGifGetPrefixChar( ++ Prefix, LastCode, ++ ClearCode); + } else { +- Suffix[Private->RunningCode - 2] = +- Stack[StackPtr++] = DGifGetPrefixChar(Prefix, +- CrntCode, +- ClearCode); ++ Suffix[Private->RunningCode - ++ 2] = Stack[StackPtr++] = ++ DGifGetPrefixChar( ++ Prefix, CrntCode, ++ ClearCode); + } +- } else ++ } else { + CrntPrefix = CrntCode; ++ } + +- /* Now (if image is O.K.) we should not get a NO_SUCH_CODE +- * during the trace. As we might loop forever, in case of +- * defective image, we use StackPtr as loop counter and stop +- * before overflowing Stack[]. */ ++ /* Now (if image is O.K.) we should not get a ++ * NO_SUCH_CODE during the trace. As we might ++ * loop forever, in case of defective image, we ++ * use StackPtr as loop counter and stop before ++ * overflowing Stack[]. */ + while (StackPtr < LZ_MAX_CODE && +- CrntPrefix > ClearCode && CrntPrefix <= LZ_MAX_CODE) { ++ CrntPrefix > ClearCode && ++ CrntPrefix <= LZ_MAX_CODE) { + Stack[StackPtr++] = Suffix[CrntPrefix]; + CrntPrefix = Prefix[CrntPrefix]; + } +- if (StackPtr >= LZ_MAX_CODE || CrntPrefix > LZ_MAX_CODE) { ++ if (StackPtr >= LZ_MAX_CODE || ++ CrntPrefix > LZ_MAX_CODE) { + GifFile->Error = D_GIF_ERR_IMAGE_DEFECT; + return GIF_ERROR; + } +@@ -964,22 +988,29 @@ DGifDecompressLine(GifFileType *GifFile, GifPixelType *Line, int LineLen) + Stack[StackPtr++] = CrntPrefix; + + /* Now lets pop all the stack into output: */ +- while (StackPtr != 0 && i < LineLen) ++ while (StackPtr != 0 && i < LineLen) { + Line[i++] = Stack[--StackPtr]; ++ } + } +- if (LastCode != NO_SUCH_CODE && Private->RunningCode - 2 < (LZ_MAX_CODE+1) && Prefix[Private->RunningCode - 2] == NO_SUCH_CODE) { ++ if (LastCode != NO_SUCH_CODE && ++ Private->RunningCode - 2 < (LZ_MAX_CODE + 1) && ++ Prefix[Private->RunningCode - 2] == NO_SUCH_CODE) { + Prefix[Private->RunningCode - 2] = LastCode; + + if (CrntCode == Private->RunningCode - 2) { +- /* Only allowed if CrntCode is exactly the running code: +- * In that case CrntCode = XXXCode, CrntCode or the +- * prefix code is last code and the suffix char is +- * exactly the prefix of last code! */ ++ /* Only allowed if CrntCode is exactly ++ * the running code: In that case ++ * CrntCode = XXXCode, CrntCode or the ++ * prefix code is last code and the ++ * suffix char is exactly the prefix of ++ * last code! */ + Suffix[Private->RunningCode - 2] = +- DGifGetPrefixChar(Prefix, LastCode, ClearCode); ++ DGifGetPrefixChar(Prefix, LastCode, ++ ClearCode); + } else { + Suffix[Private->RunningCode - 2] = +- DGifGetPrefixChar(Prefix, CrntCode, ClearCode); ++ DGifGetPrefixChar(Prefix, CrntCode, ++ ClearCode); + } + } + LastCode = CrntCode; +@@ -998,9 +1029,8 @@ DGifDecompressLine(GifFileType *GifFile, GifPixelType *Line, int LineLen) + If image is defective, we might loop here forever, so we limit the loops to + the maximum possible if image O.k. - LZ_MAX_CODE times. + ******************************************************************************/ +-static int +-DGifGetPrefixChar(GifPrefixType *Prefix, int Code, int ClearCode) +-{ ++static int DGifGetPrefixChar(const GifPrefixType *Prefix, int Code, ++ int ClearCode) { + int i = 0; + + while (Code > ClearCode && i++ <= LZ_MAX_CODE) { +@@ -1016,9 +1046,7 @@ DGifGetPrefixChar(GifPrefixType *Prefix, int Code, int ClearCode) + Interface for accessing the LZ codes directly. Set Code to the real code + (12bits), or to -1 if EOF code is returned. + ******************************************************************************/ +-int +-DGifGetLZCodes(GifFileType *GifFile, int *Code) +-{ ++int DGifGetLZCodes(GifFileType *GifFile, int *Code) { + GifByteType *CodeBlock; + GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + +@@ -1028,15 +1056,18 @@ DGifGetLZCodes(GifFileType *GifFile, int *Code) + return GIF_ERROR; + } + +- if (DGifDecompressInput(GifFile, Code) == GIF_ERROR) ++ if (DGifDecompressInput(GifFile, Code) == GIF_ERROR) { + return GIF_ERROR; ++ } + + if (*Code == Private->EOFCode) { +- /* Skip rest of codes (hopefully only NULL terminating block): */ ++ /* Skip rest of codes (hopefully only NULL terminating block): ++ */ + do { +- if (DGifGetCodeNext(GifFile, &CodeBlock) == GIF_ERROR) ++ if (DGifGetCodeNext(GifFile, &CodeBlock) == GIF_ERROR) { + return GIF_ERROR; +- } while (CodeBlock != NULL) ; ++ } ++ } while (CodeBlock != NULL); + + *Code = -1; + } else if (*Code == Private->ClearCode) { +@@ -1055,15 +1086,10 @@ DGifGetLZCodes(GifFileType *GifFile, int *Code) + 8 bits (bytes) packets, into the real codes. + Returns GIF_OK if read successfully. + ******************************************************************************/ +-static int +-DGifDecompressInput(GifFileType *GifFile, int *Code) +-{ ++static int DGifDecompressInput(GifFileType *GifFile, int *Code) { + static const unsigned short CodeMasks[] = { +- 0x0000, 0x0001, 0x0003, 0x0007, +- 0x000f, 0x001f, 0x003f, 0x007f, +- 0x00ff, 0x01ff, 0x03ff, 0x07ff, +- 0x0fff +- }; ++ 0x0000, 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, ++ 0x007f, 0x00ff, 0x01ff, 0x03ff, 0x07ff, 0x0fff}; + + GifFilePrivateType *Private = (GifFilePrivateType *)GifFile->Private; + +@@ -1077,11 +1103,12 @@ DGifDecompressInput(GifFileType *GifFile, int *Code) + + while (Private->CrntShiftState < Private->RunningBits) { + /* Needs to get more bytes from input stream for next code: */ +- if (DGifBufferedInput(GifFile, Private->Buf, &NextByte) == GIF_ERROR) { ++ if (DGifBufferedInput(GifFile, Private->Buf, &NextByte) == ++ GIF_ERROR) { + return GIF_ERROR; + } +- Private->CrntShiftDWord |= +- ((unsigned long)NextByte) << Private->CrntShiftState; ++ Private->CrntShiftDWord |= ((unsigned long)NextByte) ++ << Private->CrntShiftState; + Private->CrntShiftState += 8; + } + *Code = Private->CrntShiftDWord & CodeMasks[Private->RunningBits]; +@@ -1109,9 +1136,8 @@ DGifDecompressInput(GifFileType *GifFile, int *Code) + The routine returns the next byte from its internal buffer (or read next + block in if buffer empty) and returns GIF_OK if succesful. + ******************************************************************************/ +-static int +-DGifBufferedInput(GifFileType *GifFile, GifByteType *Buf, GifByteType *NextByte) +-{ ++static int DGifBufferedInput(GifFileType *GifFile, GifByteType *Buf, ++ GifByteType *NextByte) { + if (Buf[0] == 0) { + /* Needs to read the next buffer - this one is empty: */ + /* coverity[check_return] */ +@@ -1120,8 +1146,8 @@ DGifBufferedInput(GifFileType *GifFile, GifByteType *Buf, GifByteType *NextByte) + return GIF_ERROR; + } + /* There shouldn't be any empty data blocks here as the LZW spec +- * says the LZW termination code should come first. Therefore we +- * shouldn't be inside this routine at that point. ++ * says the LZW termination code should come first. Therefore ++ * we shouldn't be inside this routine at that point. + */ + if (Buf[0] == 0) { + GifFile->Error = D_GIF_ERR_IMAGE_DEFECT; +@@ -1132,7 +1158,7 @@ DGifBufferedInput(GifFileType *GifFile, GifByteType *Buf, GifByteType *NextByte) + return GIF_ERROR; + } + *NextByte = Buf[1]; +- Buf[1] = 2; /* We use now the second place as last char read! */ ++ Buf[1] = 2; /* We use now the second place as last char read! */ + Buf[0]--; + } else { + *NextByte = Buf[Buf[1]++]; +@@ -1142,14 +1168,32 @@ DGifBufferedInput(GifFileType *GifFile, GifByteType *Buf, GifByteType *NextByte) + return GIF_OK; + } + ++/****************************************************************************** ++ This routine is called in case of error during parsing image. We need to ++ decrease image counter and reallocate memory for saved images. Not decreasing ++ ImageCount may lead to null pointer dereference, because the last element in ++ SavedImages may point to the spoilt image and null pointer buffers. ++*******************************************************************************/ ++void DGifDecreaseImageCounter(GifFileType *GifFile) { ++ GifFile->ImageCount--; ++ if (GifFile->SavedImages[GifFile->ImageCount].RasterBits != NULL) { ++ free(GifFile->SavedImages[GifFile->ImageCount].RasterBits); ++ } ++ ++ // Realloc array according to the new image counter. ++ SavedImage *correct_saved_images = (SavedImage *)reallocarray( ++ GifFile->SavedImages, GifFile->ImageCount, sizeof(SavedImage)); ++ if (correct_saved_images != NULL) { ++ GifFile->SavedImages = correct_saved_images; ++ } ++} ++ + /****************************************************************************** + This routine reads an entire GIF into core, hanging all its state info off + the GifFileType pointer. Call DGifOpenFileName() or DGifOpenFileHandle() + first to initialize I/O. Its inverse is EGifSpew(). + *******************************************************************************/ +-int +-DGifSlurp(GifFileType *GifFile) +-{ ++int DGifSlurp(GifFileType *GifFile) { + size_t ImageSize; + GifRecordType RecordType; + SavedImage *sp; +@@ -1160,103 +1204,130 @@ DGifSlurp(GifFileType *GifFile) + GifFile->ExtensionBlockCount = 0; + + do { +- if (DGifGetRecordType(GifFile, &RecordType) == GIF_ERROR) ++ if (DGifGetRecordType(GifFile, &RecordType) == GIF_ERROR) { + return (GIF_ERROR); ++ } + + switch (RecordType) { +- case IMAGE_DESC_RECORD_TYPE: +- if (DGifGetImageDesc(GifFile) == GIF_ERROR) +- return (GIF_ERROR); +- +- sp = &GifFile->SavedImages[GifFile->ImageCount - 1]; +- /* Allocate memory for the image */ +- if (sp->ImageDesc.Width <= 0 || sp->ImageDesc.Height <= 0 || +- sp->ImageDesc.Width > (INT_MAX / sp->ImageDesc.Height)) { +- return GIF_ERROR; +- } +- ImageSize = sp->ImageDesc.Width * sp->ImageDesc.Height; +- +- if (ImageSize > (SIZE_MAX / sizeof(GifPixelType))) { +- return GIF_ERROR; +- } +- sp->RasterBits = (unsigned char *)reallocarray(NULL, ImageSize, +- sizeof(GifPixelType)); +- +- if (sp->RasterBits == NULL) { +- return GIF_ERROR; +- } +- +- if (sp->ImageDesc.Interlace) { +- int i, j; +- /* +- * The way an interlaced image should be read - +- * offsets and jumps... +- */ +- int InterlacedOffset[] = { 0, 4, 2, 1 }; +- int InterlacedJumps[] = { 8, 8, 4, 2 }; +- /* Need to perform 4 passes on the image */ +- for (i = 0; i < 4; i++) +- for (j = InterlacedOffset[i]; +- j < sp->ImageDesc.Height; +- j += InterlacedJumps[i]) { +- if (DGifGetLine(GifFile, +- sp->RasterBits+j*sp->ImageDesc.Width, +- sp->ImageDesc.Width) == GIF_ERROR) +- return GIF_ERROR; +- } +- } +- else { +- if (DGifGetLine(GifFile,sp->RasterBits,ImageSize)==GIF_ERROR) +- return (GIF_ERROR); +- } +- +- if (GifFile->ExtensionBlocks) { +- sp->ExtensionBlocks = GifFile->ExtensionBlocks; +- sp->ExtensionBlockCount = GifFile->ExtensionBlockCount; +- +- GifFile->ExtensionBlocks = NULL; +- GifFile->ExtensionBlockCount = 0; +- } +- break; +- +- case EXTENSION_RECORD_TYPE: +- if (DGifGetExtension(GifFile,&ExtFunction,&ExtData) == GIF_ERROR) +- return (GIF_ERROR); +- /* Create an extension block with our data */ +- if (ExtData != NULL) { +- if (GifAddExtensionBlock(&GifFile->ExtensionBlockCount, +- &GifFile->ExtensionBlocks, +- ExtFunction, ExtData[0], &ExtData[1]) +- == GIF_ERROR) +- return (GIF_ERROR); +- } +- for (;;) { +- if (DGifGetExtensionNext(GifFile, &ExtData) == GIF_ERROR) +- return (GIF_ERROR); +- if (ExtData == NULL) +- break; +- /* Continue the extension block */ +- if (ExtData != NULL) +- if (GifAddExtensionBlock(&GifFile->ExtensionBlockCount, +- &GifFile->ExtensionBlocks, +- CONTINUE_EXT_FUNC_CODE, +- ExtData[0], &ExtData[1]) == GIF_ERROR) +- return (GIF_ERROR); +- } +- break; +- +- case TERMINATE_RECORD_TYPE: +- break; +- +- default: /* Should be trapped by DGifGetRecordType */ +- break; ++ case IMAGE_DESC_RECORD_TYPE: ++ if (DGifGetImageDesc(GifFile) == GIF_ERROR) { ++ return (GIF_ERROR); ++ } ++ ++ sp = &GifFile->SavedImages[GifFile->ImageCount - 1]; ++ /* Allocate memory for the image */ ++ if (sp->ImageDesc.Width <= 0 || ++ sp->ImageDesc.Height <= 0 || ++ sp->ImageDesc.Width > ++ (INT_MAX / sp->ImageDesc.Height)) { ++ DGifDecreaseImageCounter(GifFile); ++ return GIF_ERROR; ++ } ++ ImageSize = sp->ImageDesc.Width * sp->ImageDesc.Height; ++ ++ if (ImageSize > (SIZE_MAX / sizeof(GifPixelType))) { ++ DGifDecreaseImageCounter(GifFile); ++ return GIF_ERROR; ++ } ++ sp->RasterBits = (unsigned char *)reallocarray( ++ NULL, ImageSize, sizeof(GifPixelType)); ++ ++ if (sp->RasterBits == NULL) { ++ DGifDecreaseImageCounter(GifFile); ++ return GIF_ERROR; ++ } ++ ++ if (sp->ImageDesc.Interlace) { ++ int i, j; ++ /* ++ * The way an interlaced image should be read - ++ * offsets and jumps... ++ */ ++ static const int InterlacedOffset[] = {0, 4, 2, ++ 1}; ++ static const int InterlacedJumps[] = {8, 8, 4, ++ 2}; ++ /* Need to perform 4 passes on the image */ ++ for (i = 0; i < 4; i++) { ++ for (j = InterlacedOffset[i]; ++ j < sp->ImageDesc.Height; ++ j += InterlacedJumps[i]) { ++ if (DGifGetLine( ++ GifFile, ++ sp->RasterBits + ++ j * sp->ImageDesc ++ .Width, ++ sp->ImageDesc.Width) == ++ GIF_ERROR) { ++ DGifDecreaseImageCounter( ++ GifFile); ++ return GIF_ERROR; ++ } ++ } ++ } ++ } else { ++ if (DGifGetLine(GifFile, sp->RasterBits, ++ ImageSize) == GIF_ERROR) { ++ DGifDecreaseImageCounter(GifFile); ++ return GIF_ERROR; ++ } ++ } ++ ++ if (GifFile->ExtensionBlocks) { ++ sp->ExtensionBlocks = GifFile->ExtensionBlocks; ++ sp->ExtensionBlockCount = ++ GifFile->ExtensionBlockCount; ++ ++ GifFile->ExtensionBlocks = NULL; ++ GifFile->ExtensionBlockCount = 0; ++ } ++ break; ++ ++ case EXTENSION_RECORD_TYPE: ++ if (DGifGetExtension(GifFile, &ExtFunction, &ExtData) == ++ GIF_ERROR) { ++ return (GIF_ERROR); ++ } ++ /* Create an extension block with our data */ ++ if (ExtData != NULL) { ++ if (GifAddExtensionBlock( ++ &GifFile->ExtensionBlockCount, ++ &GifFile->ExtensionBlocks, ExtFunction, ++ ExtData[0], &ExtData[1]) == GIF_ERROR) { ++ return (GIF_ERROR); ++ } ++ } ++ for (;;) { ++ if (DGifGetExtensionNext(GifFile, &ExtData) == ++ GIF_ERROR) { ++ return (GIF_ERROR); ++ } ++ if (ExtData == NULL) { ++ break; ++ } ++ /* Continue the extension block */ ++ if (GifAddExtensionBlock( ++ &GifFile->ExtensionBlockCount, ++ &GifFile->ExtensionBlocks, ++ CONTINUE_EXT_FUNC_CODE, ExtData[0], ++ &ExtData[1]) == GIF_ERROR) { ++ return (GIF_ERROR); ++ } ++ } ++ break; ++ ++ case TERMINATE_RECORD_TYPE: ++ break; ++ ++ default: /* Should be trapped by DGifGetRecordType */ ++ break; + } + } while (RecordType != TERMINATE_RECORD_TYPE); + + /* Sanity check for corrupted file */ + if (GifFile->ImageCount == 0) { + GifFile->Error = D_GIF_ERR_NO_IMAG_DSCR; +- return(GIF_ERROR); ++ return (GIF_ERROR); + } + + return (GIF_OK); +diff --git a/jdk/src/share/native/sun/awt/giflib/gif_err.c b/jdk/src/share/native/sun/awt/giflib/gif_err.c +index db08838eff..3b6785f7c6 100644 +--- a/jdk/src/share/native/sun/awt/giflib/gif_err.c ++++ b/jdk/src/share/native/sun/awt/giflib/gif_err.c +@@ -38,82 +38,80 @@ SPDX-License-Identifier: MIT + /***************************************************************************** + Return a string description of the last GIF error + *****************************************************************************/ +-const char * +-GifErrorString(int ErrorCode) +-{ ++const char *GifErrorString(int ErrorCode) { + const char *Err; + + switch (ErrorCode) { +- case E_GIF_ERR_OPEN_FAILED: ++ case E_GIF_ERR_OPEN_FAILED: + Err = "Failed to open given file"; + break; +- case E_GIF_ERR_WRITE_FAILED: ++ case E_GIF_ERR_WRITE_FAILED: + Err = "Failed to write to given file"; + break; +- case E_GIF_ERR_HAS_SCRN_DSCR: ++ case E_GIF_ERR_HAS_SCRN_DSCR: + Err = "Screen descriptor has already been set"; + break; +- case E_GIF_ERR_HAS_IMAG_DSCR: ++ case E_GIF_ERR_HAS_IMAG_DSCR: + Err = "Image descriptor is still active"; + break; +- case E_GIF_ERR_NO_COLOR_MAP: ++ case E_GIF_ERR_NO_COLOR_MAP: + Err = "Neither global nor local color map"; + break; +- case E_GIF_ERR_DATA_TOO_BIG: ++ case E_GIF_ERR_DATA_TOO_BIG: + Err = "Number of pixels bigger than width * height"; + break; +- case E_GIF_ERR_NOT_ENOUGH_MEM: ++ case E_GIF_ERR_NOT_ENOUGH_MEM: + Err = "Failed to allocate required memory"; + break; +- case E_GIF_ERR_DISK_IS_FULL: ++ case E_GIF_ERR_DISK_IS_FULL: + Err = "Write failed (disk full?)"; + break; +- case E_GIF_ERR_CLOSE_FAILED: ++ case E_GIF_ERR_CLOSE_FAILED: + Err = "Failed to close given file"; + break; +- case E_GIF_ERR_NOT_WRITEABLE: ++ case E_GIF_ERR_NOT_WRITEABLE: + Err = "Given file was not opened for write"; + break; +- case D_GIF_ERR_OPEN_FAILED: ++ case D_GIF_ERR_OPEN_FAILED: + Err = "Failed to open given file"; + break; +- case D_GIF_ERR_READ_FAILED: ++ case D_GIF_ERR_READ_FAILED: + Err = "Failed to read from given file"; + break; +- case D_GIF_ERR_NOT_GIF_FILE: ++ case D_GIF_ERR_NOT_GIF_FILE: + Err = "Data is not in GIF format"; + break; +- case D_GIF_ERR_NO_SCRN_DSCR: ++ case D_GIF_ERR_NO_SCRN_DSCR: + Err = "No screen descriptor detected"; + break; +- case D_GIF_ERR_NO_IMAG_DSCR: ++ case D_GIF_ERR_NO_IMAG_DSCR: + Err = "No Image Descriptor detected"; + break; +- case D_GIF_ERR_NO_COLOR_MAP: ++ case D_GIF_ERR_NO_COLOR_MAP: + Err = "Neither global nor local color map"; + break; +- case D_GIF_ERR_WRONG_RECORD: ++ case D_GIF_ERR_WRONG_RECORD: + Err = "Wrong record type detected"; + break; +- case D_GIF_ERR_DATA_TOO_BIG: ++ case D_GIF_ERR_DATA_TOO_BIG: + Err = "Number of pixels bigger than width * height"; + break; +- case D_GIF_ERR_NOT_ENOUGH_MEM: ++ case D_GIF_ERR_NOT_ENOUGH_MEM: + Err = "Failed to allocate required memory"; + break; +- case D_GIF_ERR_CLOSE_FAILED: ++ case D_GIF_ERR_CLOSE_FAILED: + Err = "Failed to close given file"; + break; +- case D_GIF_ERR_NOT_READABLE: ++ case D_GIF_ERR_NOT_READABLE: + Err = "Given file was not opened for read"; + break; +- case D_GIF_ERR_IMAGE_DEFECT: ++ case D_GIF_ERR_IMAGE_DEFECT: + Err = "Image is defective, decoding aborted"; + break; +- case D_GIF_ERR_EOF_TOO_SOON: ++ case D_GIF_ERR_EOF_TOO_SOON: + Err = "Image EOF detected before image complete"; + break; +- default: ++ default: + Err = NULL; + break; + } +diff --git a/jdk/src/share/native/sun/awt/giflib/gif_hash.h b/jdk/src/share/native/sun/awt/giflib/gif_hash.h +index 6cabd0866e..bd00af6416 100644 +--- a/jdk/src/share/native/sun/awt/giflib/gif_hash.h ++++ b/jdk/src/share/native/sun/awt/giflib/gif_hash.h +@@ -33,27 +33,25 @@ SPDX-License-Identifier: MIT + #ifndef _GIF_HASH_H_ + #define _GIF_HASH_H_ + +-/** Begin JDK modifications to support building on Windows **/ + #ifndef _WIN32 + #include +-#endif +-/** End JDK modifications to support building on Windows **/ ++#endif /* _WIN32 */ + #include + +-#define HT_SIZE 8192 /* 12bits = 4096 or twice as big! */ +-#define HT_KEY_MASK 0x1FFF /* 13bits keys */ +-#define HT_KEY_NUM_BITS 13 /* 13bits keys */ +-#define HT_MAX_KEY 8191 /* 13bits - 1, maximal code possible */ +-#define HT_MAX_CODE 4095 /* Biggest code possible in 12 bits. */ ++#define HT_SIZE 8192 /* 12bits = 4096 or twice as big! */ ++#define HT_KEY_MASK 0x1FFF /* 13bits keys */ ++#define HT_KEY_NUM_BITS 13 /* 13bits keys */ ++#define HT_MAX_KEY 8191 /* 13bits - 1, maximal code possible */ ++#define HT_MAX_CODE 4095 /* Biggest code possible in 12 bits. */ + + /* The 32 bits of the long are divided into two parts for the key & code: */ + /* 1. The code is 12 bits as our compression algorithm is limited to 12bits */ +-/* 2. The key is 12 bits Prefix code + 8 bit new char or 20 bits. */ ++/* 2. The key is 12 bits Prefix code + 8 bit new char or 20 bits. */ + /* The key is the upper 20 bits. The code is the lower 12. */ +-#define HT_GET_KEY(l) (l >> 12) +-#define HT_GET_CODE(l) (l & 0x0FFF) +-#define HT_PUT_KEY(l) (l << 12) +-#define HT_PUT_CODE(l) (l & 0x0FFF) ++#define HT_GET_KEY(l) (l >> 12) ++#define HT_GET_CODE(l) (l & 0x0FFF) ++#define HT_PUT_KEY(l) (l << 12) ++#define HT_PUT_CODE(l) (l & 0x0FFF) + + typedef struct GifHashTableType { + uint32_t HTable[HT_SIZE]; +diff --git a/jdk/src/share/native/sun/awt/giflib/gif_lib.h b/jdk/src/share/native/sun/awt/giflib/gif_lib.h +index f739b36adf..716dc7e8ba 100644 +--- a/jdk/src/share/native/sun/awt/giflib/gif_lib.h ++++ b/jdk/src/share/native/sun/awt/giflib/gif_lib.h +@@ -39,27 +39,30 @@ extern "C" { + + #define GIFLIB_MAJOR 5 + #define GIFLIB_MINOR 2 +-#define GIFLIB_RELEASE 1 ++#define GIFLIB_RELEASE 2 + +-#define GIF_ERROR 0 +-#define GIF_OK 1 ++#define GIF_ERROR 0 ++#define GIF_OK 1 + + #include + /** Begin JDK modifications to support building using old compilers**/ +-//#include ++#ifndef _WIN32 ++#include ++#else + #ifdef bool + #undef bool + #endif + typedef int bool; + #define false 0 + #define true 1 ++#endif + /** End JDK modifications to support building using old compilers**/ + +-#define GIF_STAMP "GIFVER" /* First chars in file - GIF stamp. */ ++#define GIF_STAMP "GIFVER" /* First chars in file - GIF stamp. */ + #define GIF_STAMP_LEN sizeof(GIF_STAMP) - 1 +-#define GIF_VERSION_POS 3 /* Version first character in stamp. */ +-#define GIF87_STAMP "GIF87a" /* First chars in file - GIF stamp. */ +-#define GIF89_STAMP "GIF89a" /* First chars in file - GIF stamp. */ ++#define GIF_VERSION_POS 3 /* Version first character in stamp. */ ++#define GIF87_STAMP "GIF87a" /* First chars in file - GIF stamp. */ ++#define GIF89_STAMP "GIF89a" /* First chars in file - GIF stamp. */ + + typedef unsigned char GifPixelType; + typedef unsigned char *GifRowType; +@@ -75,24 +78,24 @@ typedef struct ColorMapObject { + int ColorCount; + int BitsPerPixel; + bool SortFlag; +- GifColorType *Colors; /* on malloc(3) heap */ ++ GifColorType *Colors; /* on malloc(3) heap */ + } ColorMapObject; + + typedef struct GifImageDesc { +- GifWord Left, Top, Width, Height; /* Current image dimensions. */ +- bool Interlace; /* Sequential/Interlaced lines. */ +- ColorMapObject *ColorMap; /* The local color map */ ++ GifWord Left, Top, Width, Height; /* Current image dimensions. */ ++ bool Interlace; /* Sequential/Interlaced lines. */ ++ ColorMapObject *ColorMap; /* The local color map */ + } GifImageDesc; + + typedef struct ExtensionBlock { + int ByteCount; +- GifByteType *Bytes; /* on malloc(3) heap */ +- int Function; /* The block function code */ +-#define CONTINUE_EXT_FUNC_CODE 0x00 /* continuation subblock */ +-#define COMMENT_EXT_FUNC_CODE 0xfe /* comment */ +-#define GRAPHICS_EXT_FUNC_CODE 0xf9 /* graphics control (GIF89) */ +-#define PLAINTEXT_EXT_FUNC_CODE 0x01 /* plaintext */ +-#define APPLICATION_EXT_FUNC_CODE 0xff /* application block (GIF89) */ ++ GifByteType *Bytes; /* on malloc(3) heap */ ++ int Function; /* The block function code */ ++#define CONTINUE_EXT_FUNC_CODE 0x00 /* continuation subblock */ ++#define COMMENT_EXT_FUNC_CODE 0xfe /* comment */ ++#define GRAPHICS_EXT_FUNC_CODE 0xf9 /* graphics control (GIF89) */ ++#define PLAINTEXT_EXT_FUNC_CODE 0x01 /* plaintext */ ++#define APPLICATION_EXT_FUNC_CODE 0xff /* application block (GIF89) */ + } ExtensionBlock; + + typedef struct SavedImage { +@@ -103,22 +106,22 @@ typedef struct SavedImage { + } SavedImage; + + typedef struct GifFileType { +- GifWord SWidth, SHeight; /* Size of virtual canvas */ +- GifWord SColorResolution; /* How many colors can we generate? */ +- GifWord SBackGroundColor; /* Background color for virtual canvas */ +- GifByteType AspectByte; /* Used to compute pixel aspect ratio */ +- ColorMapObject *SColorMap; /* Global colormap, NULL if nonexistent. */ +- int ImageCount; /* Number of current image (both APIs) */ +- GifImageDesc Image; /* Current image (low-level API) */ +- SavedImage *SavedImages; /* Image sequence (high-level API) */ +- int ExtensionBlockCount; /* Count extensions past last image */ ++ GifWord SWidth, SHeight; /* Size of virtual canvas */ ++ GifWord SColorResolution; /* How many colors can we generate? */ ++ GifWord SBackGroundColor; /* Background color for virtual canvas */ ++ GifByteType AspectByte; /* Used to compute pixel aspect ratio */ ++ ColorMapObject *SColorMap; /* Global colormap, NULL if nonexistent. */ ++ int ImageCount; /* Number of current image (both APIs) */ ++ GifImageDesc Image; /* Current image (low-level API) */ ++ SavedImage *SavedImages; /* Image sequence (high-level API) */ ++ int ExtensionBlockCount; /* Count extensions past last image */ + ExtensionBlock *ExtensionBlocks; /* Extensions past last image */ + int Error; /* Last error condition reported */ + void *UserData; /* hook to attach user data (TVT) */ + void *Private; /* Don't mess with this! */ + } GifFileType; + +-#define GIF_ASPECT_RATIO(n) ((n)+15.0/64.0) ++#define GIF_ASPECT_RATIO(n) ((n) + 15.0 / 64.0) + + typedef enum { + UNDEFINED_RECORD_TYPE, +@@ -129,12 +132,12 @@ typedef enum { + } GifRecordType; + + /* func type to read gif data from arbitrary sources (TVT) */ +-typedef int (*InputFunc) (GifFileType *, GifByteType *, int); ++typedef int (*InputFunc)(GifFileType *, GifByteType *, int); + + /* func type to write gif data to arbitrary targets. + * Returns count of bytes written. (MRB) + */ +-typedef int (*OutputFunc) (GifFileType *, const GifByteType *, int); ++typedef int (*OutputFunc)(GifFileType *, const GifByteType *, int); + + /****************************************************************************** + GIF89 structures +@@ -142,14 +145,14 @@ typedef int (*OutputFunc) (GifFileType *, const GifByteType *, int); + + typedef struct GraphicsControlBlock { + int DisposalMode; +-#define DISPOSAL_UNSPECIFIED 0 /* No disposal specified. */ +-#define DISPOSE_DO_NOT 1 /* Leave image in place */ +-#define DISPOSE_BACKGROUND 2 /* Set area too background color */ +-#define DISPOSE_PREVIOUS 3 /* Restore to previous content */ +- bool UserInputFlag; /* User confirmation required before disposal */ +- int DelayTime; /* pre-display delay in 0.01sec units */ +- int TransparentColor; /* Palette index for transparency, -1 if none */ +-#define NO_TRANSPARENT_COLOR -1 ++#define DISPOSAL_UNSPECIFIED 0 /* No disposal specified. */ ++#define DISPOSE_DO_NOT 1 /* Leave image in place */ ++#define DISPOSE_BACKGROUND 2 /* Set area too background color */ ++#define DISPOSE_PREVIOUS 3 /* Restore to previous content */ ++ bool UserInputFlag; /* User confirmation required before disposal */ ++ int DelayTime; /* pre-display delay in 0.01sec units */ ++ int TransparentColor; /* Palette index for transparency, -1 if none */ ++#define NO_TRANSPARENT_COLOR -1 + } GraphicsControlBlock; + + /****************************************************************************** +@@ -161,49 +164,44 @@ GifFileType *EGifOpenFileName(const char *GifFileName, + const bool GifTestExistence, int *Error); + GifFileType *EGifOpenFileHandle(const int GifFileHandle, int *Error); + GifFileType *EGifOpen(void *userPtr, OutputFunc writeFunc, int *Error); +-int EGifSpew(GifFileType * GifFile); ++int EGifSpew(GifFileType *GifFile); + const char *EGifGetGifVersion(GifFileType *GifFile); /* new in 5.x */ + int EGifCloseFile(GifFileType *GifFile, int *ErrorCode); + +-#define E_GIF_SUCCEEDED 0 +-#define E_GIF_ERR_OPEN_FAILED 1 /* And EGif possible errors. */ +-#define E_GIF_ERR_WRITE_FAILED 2 +-#define E_GIF_ERR_HAS_SCRN_DSCR 3 +-#define E_GIF_ERR_HAS_IMAG_DSCR 4 +-#define E_GIF_ERR_NO_COLOR_MAP 5 +-#define E_GIF_ERR_DATA_TOO_BIG 6 ++#define E_GIF_SUCCEEDED 0 ++#define E_GIF_ERR_OPEN_FAILED 1 /* And EGif possible errors. */ ++#define E_GIF_ERR_WRITE_FAILED 2 ++#define E_GIF_ERR_HAS_SCRN_DSCR 3 ++#define E_GIF_ERR_HAS_IMAG_DSCR 4 ++#define E_GIF_ERR_NO_COLOR_MAP 5 ++#define E_GIF_ERR_DATA_TOO_BIG 6 + #define E_GIF_ERR_NOT_ENOUGH_MEM 7 +-#define E_GIF_ERR_DISK_IS_FULL 8 +-#define E_GIF_ERR_CLOSE_FAILED 9 +-#define E_GIF_ERR_NOT_WRITEABLE 10 ++#define E_GIF_ERR_DISK_IS_FULL 8 ++#define E_GIF_ERR_CLOSE_FAILED 9 ++#define E_GIF_ERR_NOT_WRITEABLE 10 + + /* These are legacy. You probably do not want to call them directly */ +-int EGifPutScreenDesc(GifFileType *GifFile, +- const int GifWidth, const int GifHeight, +- const int GifColorRes, ++int EGifPutScreenDesc(GifFileType *GifFile, const int GifWidth, ++ const int GifHeight, const int GifColorRes, + const int GifBackGround, + const ColorMapObject *GifColorMap); +-int EGifPutImageDesc(GifFileType *GifFile, +- const int GifLeft, const int GifTop, ++int EGifPutImageDesc(GifFileType *GifFile, const int GifLeft, const int GifTop, + const int GifWidth, const int GifHeight, + const bool GifInterlace, + const ColorMapObject *GifColorMap); + void EGifSetGifVersion(GifFileType *GifFile, const bool gif89); +-int EGifPutLine(GifFileType *GifFile, GifPixelType *GifLine, +- int GifLineLen); ++int EGifPutLine(GifFileType *GifFile, GifPixelType *GifLine, int GifLineLen); + int EGifPutPixel(GifFileType *GifFile, const GifPixelType GifPixel); + int EGifPutComment(GifFileType *GifFile, const char *GifComment); + int EGifPutExtensionLeader(GifFileType *GifFile, const int GifExtCode); +-int EGifPutExtensionBlock(GifFileType *GifFile, +- const int GifExtLen, const void *GifExtension); ++int EGifPutExtensionBlock(GifFileType *GifFile, const int GifExtLen, ++ const void *GifExtension); + int EGifPutExtensionTrailer(GifFileType *GifFile); + int EGifPutExtension(GifFileType *GifFile, const int GifExtCode, +- const int GifExtLen, +- const void *GifExtension); ++ const int GifExtLen, const void *GifExtension); + int EGifPutCode(GifFileType *GifFile, int GifCodeSize, + const GifByteType *GifCodeBlock); +-int EGifPutCodeNext(GifFileType *GifFile, +- const GifByteType *GifCodeBlock); ++int EGifPutCodeNext(GifFileType *GifFile, const GifByteType *GifCodeBlock); + + /****************************************************************************** + GIF decoding routines +@@ -212,24 +210,25 @@ int EGifPutCodeNext(GifFileType *GifFile, + /* Main entry points */ + GifFileType *DGifOpenFileName(const char *GifFileName, int *Error); + GifFileType *DGifOpenFileHandle(int GifFileHandle, int *Error); +-int DGifSlurp(GifFileType * GifFile); +-GifFileType *DGifOpen(void *userPtr, InputFunc readFunc, int *Error); /* new one (TVT) */ +- int DGifCloseFile(GifFileType * GifFile, int *ErrorCode); +- +-#define D_GIF_SUCCEEDED 0 +-#define D_GIF_ERR_OPEN_FAILED 101 /* And DGif possible errors. */ +-#define D_GIF_ERR_READ_FAILED 102 +-#define D_GIF_ERR_NOT_GIF_FILE 103 +-#define D_GIF_ERR_NO_SCRN_DSCR 104 +-#define D_GIF_ERR_NO_IMAG_DSCR 105 +-#define D_GIF_ERR_NO_COLOR_MAP 106 +-#define D_GIF_ERR_WRONG_RECORD 107 +-#define D_GIF_ERR_DATA_TOO_BIG 108 ++int DGifSlurp(GifFileType *GifFile); ++GifFileType *DGifOpen(void *userPtr, InputFunc readFunc, ++ int *Error); /* new one (TVT) */ ++int DGifCloseFile(GifFileType *GifFile, int *ErrorCode); ++ ++#define D_GIF_SUCCEEDED 0 ++#define D_GIF_ERR_OPEN_FAILED 101 /* And DGif possible errors. */ ++#define D_GIF_ERR_READ_FAILED 102 ++#define D_GIF_ERR_NOT_GIF_FILE 103 ++#define D_GIF_ERR_NO_SCRN_DSCR 104 ++#define D_GIF_ERR_NO_IMAG_DSCR 105 ++#define D_GIF_ERR_NO_COLOR_MAP 106 ++#define D_GIF_ERR_WRONG_RECORD 107 ++#define D_GIF_ERR_DATA_TOO_BIG 108 + #define D_GIF_ERR_NOT_ENOUGH_MEM 109 +-#define D_GIF_ERR_CLOSE_FAILED 110 +-#define D_GIF_ERR_NOT_READABLE 111 +-#define D_GIF_ERR_IMAGE_DEFECT 112 +-#define D_GIF_ERR_EOF_TOO_SOON 113 ++#define D_GIF_ERR_CLOSE_FAILED 110 ++#define D_GIF_ERR_NOT_READABLE 111 ++#define D_GIF_ERR_IMAGE_DEFECT 112 ++#define D_GIF_ERR_EOF_TOO_SOON 113 + + /* These are legacy. You probably do not want to call them directly */ + int DGifGetScreenDesc(GifFileType *GifFile); +@@ -247,11 +246,10 @@ int DGifGetCodeNext(GifFileType *GifFile, GifByteType **GifCodeBlock); + int DGifGetLZCodes(GifFileType *GifFile, int *GifCode); + const char *DGifGetGifVersion(GifFileType *GifFile); + +- + /****************************************************************************** + Error handling and reporting. + ******************************************************************************/ +-extern const char *GifErrorString(int ErrorCode); /* new in 2012 - ESR */ ++extern const char *GifErrorString(int ErrorCode); /* new in 2012 - ESR */ + + /***************************************************************************** + Everything below this point is new after version 1.2, supporting `slurp +@@ -263,26 +261,26 @@ extern const char *GifErrorString(int ErrorCode); /* new in 2012 - ESR */ + ******************************************************************************/ + + extern ColorMapObject *GifMakeMapObject(int ColorCount, +- const GifColorType *ColorMap); ++ const GifColorType *ColorMap); + extern void GifFreeMapObject(ColorMapObject *Object); + extern ColorMapObject *GifUnionColorMap(const ColorMapObject *ColorIn1, +- const ColorMapObject *ColorIn2, +- GifPixelType ColorTransIn2[]); ++ const ColorMapObject *ColorIn2, ++ GifPixelType ColorTransIn2[]); + extern int GifBitSize(int n); + + /****************************************************************************** + Support for the in-core structures allocation (slurp mode). + ******************************************************************************/ + +-extern void GifApplyTranslation(SavedImage *Image, GifPixelType Translation[]); ++extern void GifApplyTranslation(SavedImage *Image, ++ const GifPixelType Translation[]); + extern int GifAddExtensionBlock(int *ExtensionBlock_Count, +- ExtensionBlock **ExtensionBlocks, +- int Function, ++ ExtensionBlock **ExtensionBlocks, int Function, + unsigned int Len, unsigned char ExtData[]); + extern void GifFreeExtensions(int *ExtensionBlock_Count, + ExtensionBlock **ExtensionBlocks); + extern SavedImage *GifMakeSavedImage(GifFileType *GifFile, +- const SavedImage *CopyFrom); ++ const SavedImage *CopyFrom); + extern void GifFreeSavedImages(GifFileType *GifFile); + + /****************************************************************************** +@@ -295,37 +293,31 @@ int DGifExtensionToGCB(const size_t GifExtensionLength, + size_t EGifGCBToExtension(const GraphicsControlBlock *GCB, + GifByteType *GifExtension); + +-int DGifSavedExtensionToGCB(GifFileType *GifFile, +- int ImageIndex, ++int DGifSavedExtensionToGCB(GifFileType *GifFile, int ImageIndex, + GraphicsControlBlock *GCB); + int EGifGCBToSavedExtension(const GraphicsControlBlock *GCB, +- GifFileType *GifFile, +- int ImageIndex); ++ GifFileType *GifFile, int ImageIndex); + + /****************************************************************************** + The library's internal utility font + ******************************************************************************/ + +-#define GIF_FONT_WIDTH 8 ++#define GIF_FONT_WIDTH 8 + #define GIF_FONT_HEIGHT 8 + extern const unsigned char GifAsciiTable8x8[][GIF_FONT_WIDTH]; + +-extern void GifDrawText8x8(SavedImage *Image, +- const int x, const int y, +- const char *legend, const int color); ++extern void GifDrawText8x8(SavedImage *Image, const int x, const int y, ++ const char *legend, const int color); + +-extern void GifDrawBox(SavedImage *Image, +- const int x, const int y, +- const int w, const int d, const int color); ++extern void GifDrawBox(SavedImage *Image, const int x, const int y, const int w, ++ const int d, const int color); + +-extern void GifDrawRectangle(SavedImage *Image, +- const int x, const int y, +- const int w, const int d, const int color); ++extern void GifDrawRectangle(SavedImage *Image, const int x, const int y, ++ const int w, const int d, const int color); + +-extern void GifDrawBoxedText8x8(SavedImage *Image, +- const int x, const int y, +- const char *legend, +- const int border, const int bg, const int fg); ++extern void GifDrawBoxedText8x8(SavedImage *Image, const int x, const int y, ++ const char *legend, const int border, ++ const int bg, const int fg); + + #ifdef __cplusplus + } +diff --git a/jdk/src/share/native/sun/awt/giflib/gif_lib_private.h b/jdk/src/share/native/sun/awt/giflib/gif_lib_private.h +index 4f832676ff..f905e0d7b4 100644 +--- a/jdk/src/share/native/sun/awt/giflib/gif_lib_private.h ++++ b/jdk/src/share/native/sun/awt/giflib/gif_lib_private.h +@@ -33,52 +33,54 @@ SPDX-License-Identifier: MIT + #ifndef _GIF_LIB_PRIVATE_H + #define _GIF_LIB_PRIVATE_H + +-#include "gif_lib.h" + #include "gif_hash.h" ++#include "gif_lib.h" + + #ifndef SIZE_MAX +- #define SIZE_MAX UINTPTR_MAX ++#define SIZE_MAX UINTPTR_MAX + #endif + +-#define EXTENSION_INTRODUCER 0x21 +-#define DESCRIPTOR_INTRODUCER 0x2c +-#define TERMINATOR_INTRODUCER 0x3b ++#define EXTENSION_INTRODUCER 0x21 ++#define DESCRIPTOR_INTRODUCER 0x2c ++#define TERMINATOR_INTRODUCER 0x3b + +-#define LZ_MAX_CODE 4095 /* Biggest code possible in 12 bits. */ +-#define LZ_BITS 12 ++#define LZ_MAX_CODE 4095 /* Biggest code possible in 12 bits. */ ++#define LZ_BITS 12 + +-#define FLUSH_OUTPUT 4096 /* Impossible code, to signal flush. */ +-#define FIRST_CODE 4097 /* Impossible code, to signal first. */ +-#define NO_SUCH_CODE 4098 /* Impossible code, to signal empty. */ ++#define FLUSH_OUTPUT 4096 /* Impossible code, to signal flush. */ ++#define FIRST_CODE 4097 /* Impossible code, to signal first. */ ++#define NO_SUCH_CODE 4098 /* Impossible code, to signal empty. */ + +-#define FILE_STATE_WRITE 0x01 +-#define FILE_STATE_SCREEN 0x02 +-#define FILE_STATE_IMAGE 0x04 +-#define FILE_STATE_READ 0x08 ++#define FILE_STATE_WRITE 0x01 ++#define FILE_STATE_SCREEN 0x02 ++#define FILE_STATE_IMAGE 0x04 ++#define FILE_STATE_READ 0x08 + +-#define IS_READABLE(Private) (Private->FileState & FILE_STATE_READ) +-#define IS_WRITEABLE(Private) (Private->FileState & FILE_STATE_WRITE) ++#define IS_READABLE(Private) (Private->FileState & FILE_STATE_READ) ++#define IS_WRITEABLE(Private) (Private->FileState & FILE_STATE_WRITE) + + typedef struct GifFilePrivateType { +- GifWord FileState, FileHandle, /* Where all this data goes to! */ +- BitsPerPixel, /* Bits per pixel (Codes uses at least this + 1). */ +- ClearCode, /* The CLEAR LZ code. */ +- EOFCode, /* The EOF LZ code. */ +- RunningCode, /* The next code algorithm can generate. */ +- RunningBits, /* The number of bits required to represent RunningCode. */ +- MaxCode1, /* 1 bigger than max. possible code, in RunningBits bits. */ +- LastCode, /* The code before the current code. */ +- CrntCode, /* Current algorithm code. */ +- StackPtr, /* For character stack (see below). */ +- CrntShiftState; /* Number of bits in CrntShiftDWord. */ +- unsigned long CrntShiftDWord; /* For bytes decomposition into codes. */ +- unsigned long PixelCount; /* Number of pixels in image. */ +- FILE *File; /* File as stream. */ +- InputFunc Read; /* function to read gif input (TVT) */ +- OutputFunc Write; /* function to write gif output (MRB) */ +- GifByteType Buf[256]; /* Compressed input is buffered here. */ ++ GifWord FileState, FileHandle, /* Where all this data goes to! */ ++ BitsPerPixel, /* Bits per pixel (Codes uses at least this + 1). */ ++ ClearCode, /* The CLEAR LZ code. */ ++ EOFCode, /* The EOF LZ code. */ ++ RunningCode, /* The next code algorithm can generate. */ ++ RunningBits, /* The number of bits required to represent ++ RunningCode. */ ++ MaxCode1, /* 1 bigger than max. possible code, in RunningBits bits. ++ */ ++ LastCode, /* The code before the current code. */ ++ CrntCode, /* Current algorithm code. */ ++ StackPtr, /* For character stack (see below). */ ++ CrntShiftState; /* Number of bits in CrntShiftDWord. */ ++ unsigned long CrntShiftDWord; /* For bytes decomposition into codes. */ ++ unsigned long PixelCount; /* Number of pixels in image. */ ++ FILE *File; /* File as stream. */ ++ InputFunc Read; /* function to read gif input (TVT) */ ++ OutputFunc Write; /* function to write gif output (MRB) */ ++ GifByteType Buf[256]; /* Compressed input is buffered here. */ + GifByteType Stack[LZ_MAX_CODE]; /* Decoded pixels are stacked here. */ +- GifByteType Suffix[LZ_MAX_CODE + 1]; /* So we can trace the codes. */ ++ GifByteType Suffix[LZ_MAX_CODE + 1]; /* So we can trace the codes. */ + GifPrefixType Prefix[LZ_MAX_CODE + 1]; + GifHashTableType *HashTable; + bool gif89; +diff --git a/jdk/src/share/native/sun/awt/giflib/gifalloc.c b/jdk/src/share/native/sun/awt/giflib/gifalloc.c +index 75b74b4fba..5aef304455 100644 +--- a/jdk/src/share/native/sun/awt/giflib/gifalloc.c ++++ b/jdk/src/share/native/sun/awt/giflib/gifalloc.c +@@ -30,59 +30,59 @@ SPDX-License-Identifier: MIT + + ****************************************************************************/ + +-#include + #include ++#include + #include + + #include "gif_lib.h" + #include "gif_lib_private.h" + +-#define MAX(x, y) (((x) > (y)) ? (x) : (y)) ++#define MAX(x, y) (((x) > (y)) ? (x) : (y)) + + /****************************************************************************** + Miscellaneous utility functions + ******************************************************************************/ + + /* return smallest bitfield size n will fit in */ +-int +-GifBitSize(int n) +-{ ++int GifBitSize(int n) { + register int i; + +- for (i = 1; i <= 8; i++) +- if ((1 << i) >= n) ++ for (i = 1; i <= 8; i++) { ++ if ((1 << i) >= n) { + break; ++ } ++ } + return (i); + } + + /****************************************************************************** +- Color map object functions ++ Color map object functions + ******************************************************************************/ + + /* + * Allocate a color map of given size; initialize with contents of + * ColorMap if that pointer is non-NULL. + */ +-ColorMapObject * +-GifMakeMapObject(int ColorCount, const GifColorType *ColorMap) +-{ ++ColorMapObject *GifMakeMapObject(int ColorCount, const GifColorType *ColorMap) { + ColorMapObject *Object; + + /*** FIXME: Our ColorCount has to be a power of two. Is it necessary to +- * make the user know that or should we automatically round up instead? */ ++ * make the user know that or should we automatically round up instead? ++ */ + if (ColorCount != (1 << GifBitSize(ColorCount))) { +- return ((ColorMapObject *) NULL); ++ return ((ColorMapObject *)NULL); + } + + Object = (ColorMapObject *)malloc(sizeof(ColorMapObject)); +- if (Object == (ColorMapObject *) NULL) { +- return ((ColorMapObject *) NULL); ++ if (Object == (ColorMapObject *)NULL) { ++ return ((ColorMapObject *)NULL); + } + +- Object->Colors = (GifColorType *)calloc(ColorCount, sizeof(GifColorType)); +- if (Object->Colors == (GifColorType *) NULL) { ++ Object->Colors = ++ (GifColorType *)calloc(ColorCount, sizeof(GifColorType)); ++ if (Object->Colors == (GifColorType *)NULL) { + free(Object); +- return ((ColorMapObject *) NULL); ++ return ((ColorMapObject *)NULL); + } + + Object->ColorCount = ColorCount; +@@ -90,19 +90,17 @@ GifMakeMapObject(int ColorCount, const GifColorType *ColorMap) + Object->SortFlag = false; + + if (ColorMap != NULL) { +- memcpy((char *)Object->Colors, +- (char *)ColorMap, ColorCount * sizeof(GifColorType)); ++ memcpy((char *)Object->Colors, (char *)ColorMap, ++ ColorCount * sizeof(GifColorType)); + } + + return (Object); + } + + /******************************************************************************* +-Free a color map object ++ Free a color map object + *******************************************************************************/ +-void +-GifFreeMapObject(ColorMapObject *Object) +-{ ++void GifFreeMapObject(ColorMapObject *Object) { + if (Object != NULL) { + (void)free(Object->Colors); + (void)free(Object); +@@ -110,17 +108,14 @@ GifFreeMapObject(ColorMapObject *Object) + } + + #ifdef DEBUG +-void +-DumpColorMap(ColorMapObject *Object, +- FILE * fp) +-{ ++void DumpColorMap(ColorMapObject *Object, FILE *fp) { + if (Object != NULL) { + int i, j, Len = Object->ColorCount; + + for (i = 0; i < Len; i += 4) { + for (j = 0; j < 4 && j < Len; j++) { +- (void)fprintf(fp, "%3d: %02x %02x %02x ", i + j, +- Object->Colors[i + j].Red, ++ (void)fprintf(fp, "%3d: %02x %02x %02x ", ++ i + j, Object->Colors[i + j].Red, + Object->Colors[i + j].Green, + Object->Colors[i + j].Blue); + } +@@ -137,11 +132,9 @@ DumpColorMap(ColorMapObject *Object, + copied iff they didn't exist before. ColorTransIn2 maps the old + ColorIn2 into the ColorUnion color map table./ + *******************************************************************************/ +-ColorMapObject * +-GifUnionColorMap(const ColorMapObject *ColorIn1, +- const ColorMapObject *ColorIn2, +- GifPixelType ColorTransIn2[]) +-{ ++ColorMapObject *GifUnionColorMap(const ColorMapObject *ColorIn1, ++ const ColorMapObject *ColorIn2, ++ GifPixelType ColorTransIn2[]) { + int i, j, CrntSlot, RoundUpTo, NewGifBitSize; + ColorMapObject *ColorUnion; + +@@ -152,17 +145,19 @@ GifUnionColorMap(const ColorMapObject *ColorIn1, + */ + + /* Allocate table which will hold the result for sure. */ +- ColorUnion = GifMakeMapObject(MAX(ColorIn1->ColorCount, +- ColorIn2->ColorCount) * 2, NULL); ++ ColorUnion = GifMakeMapObject( ++ MAX(ColorIn1->ColorCount, ColorIn2->ColorCount) * 2, NULL); + +- if (ColorUnion == NULL) ++ if (ColorUnion == NULL) { + return (NULL); ++ } + + /* + * Copy ColorIn1 to ColorUnion. + */ +- for (i = 0; i < ColorIn1->ColorCount; i++) ++ for (i = 0; i < ColorIn1->ColorCount; i++) { + ColorUnion->Colors[i] = ColorIn1->Colors[i]; ++ } + CrntSlot = ColorIn1->ColorCount; + + /* +@@ -172,22 +167,25 @@ GifUnionColorMap(const ColorMapObject *ColorIn1, + * of table 1. This is very useful if your display is limited to + * 16 colors. + */ +- while (ColorIn1->Colors[CrntSlot - 1].Red == 0 +- && ColorIn1->Colors[CrntSlot - 1].Green == 0 +- && ColorIn1->Colors[CrntSlot - 1].Blue == 0) ++ while (ColorIn1->Colors[CrntSlot - 1].Red == 0 && ++ ColorIn1->Colors[CrntSlot - 1].Green == 0 && ++ ColorIn1->Colors[CrntSlot - 1].Blue == 0) { + CrntSlot--; ++ } + + /* Copy ColorIn2 to ColorUnion (use old colors if they exist): */ + for (i = 0; i < ColorIn2->ColorCount && CrntSlot <= 256; i++) { + /* Let's see if this color already exists: */ +- for (j = 0; j < ColorIn1->ColorCount; j++) +- if (memcmp (&ColorIn1->Colors[j], &ColorIn2->Colors[i], +- sizeof(GifColorType)) == 0) ++ for (j = 0; j < ColorIn1->ColorCount; j++) { ++ if (memcmp(&ColorIn1->Colors[j], &ColorIn2->Colors[i], ++ sizeof(GifColorType)) == 0) { + break; ++ } ++ } + +- if (j < ColorIn1->ColorCount) +- ColorTransIn2[i] = j; /* color exists in Color1 */ +- else { ++ if (j < ColorIn1->ColorCount) { ++ ColorTransIn2[i] = j; /* color exists in Color1 */ ++ } else { + /* Color is new - copy it to a new slot: */ + ColorUnion->Colors[CrntSlot] = ColorIn2->Colors[i]; + ColorTransIn2[i] = CrntSlot++; +@@ -196,7 +194,7 @@ GifUnionColorMap(const ColorMapObject *ColorIn1, + + if (CrntSlot > 256) { + GifFreeMapObject(ColorUnion); +- return ((ColorMapObject *) NULL); ++ return ((ColorMapObject *)NULL); + } + + NewGifBitSize = GifBitSize(CrntSlot); +@@ -210,16 +208,17 @@ GifUnionColorMap(const ColorMapObject *ColorIn1, + * We know these slots exist because of the way ColorUnion's + * start dimension was computed. + */ +- for (j = CrntSlot; j < RoundUpTo; j++) ++ for (j = CrntSlot; j < RoundUpTo; j++) { + Map[j].Red = Map[j].Green = Map[j].Blue = 0; ++ } + + /* perhaps we can shrink the map? */ + if (RoundUpTo < ColorUnion->ColorCount) { +- GifColorType *new_map = (GifColorType *)reallocarray(Map, +- RoundUpTo, sizeof(GifColorType)); +- if( new_map == NULL ) { ++ GifColorType *new_map = (GifColorType *)reallocarray( ++ Map, RoundUpTo, sizeof(GifColorType)); ++ if (new_map == NULL) { + GifFreeMapObject(ColorUnion); +- return ((ColorMapObject *) NULL); ++ return ((ColorMapObject *)NULL); + } + ColorUnion->Colors = new_map; + } +@@ -234,49 +233,49 @@ GifUnionColorMap(const ColorMapObject *ColorIn1, + /******************************************************************************* + Apply a given color translation to the raster bits of an image + *******************************************************************************/ +-void +-GifApplyTranslation(SavedImage *Image, GifPixelType Translation[]) +-{ ++void GifApplyTranslation(SavedImage *Image, const GifPixelType Translation[]) { + register int i; +- register int RasterSize = Image->ImageDesc.Height * Image->ImageDesc.Width; ++ register int RasterSize = ++ Image->ImageDesc.Height * Image->ImageDesc.Width; + +- for (i = 0; i < RasterSize; i++) ++ for (i = 0; i < RasterSize; i++) { + Image->RasterBits[i] = Translation[Image->RasterBits[i]]; ++ } + } + + /****************************************************************************** + Extension record functions + ******************************************************************************/ +-int +-GifAddExtensionBlock(int *ExtensionBlockCount, +- ExtensionBlock **ExtensionBlocks, +- int Function, +- unsigned int Len, +- unsigned char ExtData[]) +-{ ++int GifAddExtensionBlock(int *ExtensionBlockCount, ++ ExtensionBlock **ExtensionBlocks, int Function, ++ unsigned int Len, unsigned char ExtData[]) { + ExtensionBlock *ep; + +- if (*ExtensionBlocks == NULL) +- *ExtensionBlocks=(ExtensionBlock *)malloc(sizeof(ExtensionBlock)); +- else { +- ExtensionBlock* ep_new = (ExtensionBlock *)reallocarray +- (*ExtensionBlocks, (*ExtensionBlockCount + 1), +- sizeof(ExtensionBlock)); +- if( ep_new == NULL ) ++ if (*ExtensionBlocks == NULL) { ++ *ExtensionBlocks = ++ (ExtensionBlock *)malloc(sizeof(ExtensionBlock)); ++ } else { ++ ExtensionBlock *ep_new = (ExtensionBlock *)reallocarray( ++ *ExtensionBlocks, (*ExtensionBlockCount + 1), ++ sizeof(ExtensionBlock)); ++ if (ep_new == NULL) { + return (GIF_ERROR); ++ } + *ExtensionBlocks = ep_new; + } + +- if (*ExtensionBlocks == NULL) ++ if (*ExtensionBlocks == NULL) { + return (GIF_ERROR); ++ } + + ep = &(*ExtensionBlocks)[(*ExtensionBlockCount)++]; + + ep->Function = Function; +- ep->ByteCount=Len; ++ ep->ByteCount = Len; + ep->Bytes = (GifByteType *)malloc(ep->ByteCount); +- if (ep->Bytes == NULL) ++ if (ep->Bytes == NULL) { + return (GIF_ERROR); ++ } + + if (ExtData != NULL) { + memcpy(ep->Bytes, ExtData, Len); +@@ -285,38 +284,36 @@ GifAddExtensionBlock(int *ExtensionBlockCount, + return (GIF_OK); + } + +-void +-GifFreeExtensions(int *ExtensionBlockCount, +- ExtensionBlock **ExtensionBlocks) +-{ ++void GifFreeExtensions(int *ExtensionBlockCount, ++ ExtensionBlock **ExtensionBlocks) { + ExtensionBlock *ep; + +- if (*ExtensionBlocks == NULL) ++ if (*ExtensionBlocks == NULL) { + return; ++ } + + for (ep = *ExtensionBlocks; +- ep < (*ExtensionBlocks + *ExtensionBlockCount); +- ep++) ++ ep < (*ExtensionBlocks + *ExtensionBlockCount); ep++) { + (void)free((char *)ep->Bytes); ++ } + (void)free((char *)*ExtensionBlocks); + *ExtensionBlocks = NULL; + *ExtensionBlockCount = 0; + } + + /****************************************************************************** +- Image block allocation functions ++ Image block allocation functions + ******************************************************************************/ + + /* Private Function: + * Frees the last image in the GifFile->SavedImages array + */ +-void +-FreeLastSavedImage(GifFileType *GifFile) +-{ ++void FreeLastSavedImage(GifFileType *GifFile) { + SavedImage *sp; + +- if ((GifFile == NULL) || (GifFile->SavedImages == NULL)) ++ if ((GifFile == NULL) || (GifFile->SavedImages == NULL)) { + return; ++ } + + /* Remove one SavedImage from the GifFile */ + GifFile->ImageCount--; +@@ -329,54 +326,58 @@ FreeLastSavedImage(GifFileType *GifFile) + } + + /* Deallocate the image data */ +- if (sp->RasterBits != NULL) ++ if (sp->RasterBits != NULL) { + free((char *)sp->RasterBits); ++ } + + /* Deallocate any extensions */ + GifFreeExtensions(&sp->ExtensionBlockCount, &sp->ExtensionBlocks); + + /*** FIXME: We could realloc the GifFile->SavedImages structure but is + * there a point to it? Saves some memory but we'd have to do it every +- * time. If this is used in GifFreeSavedImages then it would be inefficient +- * (The whole array is going to be deallocated.) If we just use it when +- * we want to free the last Image it's convenient to do it here. ++ * time. If this is used in GifFreeSavedImages then it would be ++ * inefficient (The whole array is going to be deallocated.) If we just ++ * use it when we want to free the last Image it's convenient to do it ++ * here. + */ + } + + /* + * Append an image block to the SavedImages array + */ +-SavedImage * +-GifMakeSavedImage(GifFileType *GifFile, const SavedImage *CopyFrom) +-{ +- if (GifFile->SavedImages == NULL) ++SavedImage *GifMakeSavedImage(GifFileType *GifFile, ++ const SavedImage *CopyFrom) { ++ // cppcheck-suppress ctunullpointer ++ if (GifFile->SavedImages == NULL) { + GifFile->SavedImages = (SavedImage *)malloc(sizeof(SavedImage)); +- else { +- SavedImage* newSavedImages = (SavedImage *)reallocarray(GifFile->SavedImages, +- (GifFile->ImageCount + 1), sizeof(SavedImage)); +- if( newSavedImages == NULL) ++ } else { ++ SavedImage *newSavedImages = (SavedImage *)reallocarray( ++ GifFile->SavedImages, (GifFile->ImageCount + 1), ++ sizeof(SavedImage)); ++ if (newSavedImages == NULL) { + return ((SavedImage *)NULL); ++ } + GifFile->SavedImages = newSavedImages; + } +- if (GifFile->SavedImages == NULL) ++ if (GifFile->SavedImages == NULL) { + return ((SavedImage *)NULL); +- else { ++ } else { + SavedImage *sp = &GifFile->SavedImages[GifFile->ImageCount++]; + + if (CopyFrom != NULL) { + memcpy((char *)sp, CopyFrom, sizeof(SavedImage)); + + /* +- * Make our own allocated copies of the heap fields in the +- * copied record. This guards against potential aliasing +- * problems. ++ * Make our own allocated copies of the heap fields in ++ * the copied record. This guards against potential ++ * aliasing problems. + */ + + /* first, the local color map */ + if (CopyFrom->ImageDesc.ColorMap != NULL) { + sp->ImageDesc.ColorMap = GifMakeMapObject( +- CopyFrom->ImageDesc.ColorMap->ColorCount, +- CopyFrom->ImageDesc.ColorMap->Colors); ++ CopyFrom->ImageDesc.ColorMap->ColorCount, ++ CopyFrom->ImageDesc.ColorMap->Colors); + if (sp->ImageDesc.ColorMap == NULL) { + FreeLastSavedImage(GifFile); + return (SavedImage *)(NULL); +@@ -384,32 +385,36 @@ GifMakeSavedImage(GifFileType *GifFile, const SavedImage *CopyFrom) + } + + /* next, the raster */ +- sp->RasterBits = (unsigned char *)reallocarray(NULL, +- (CopyFrom->ImageDesc.Height * +- CopyFrom->ImageDesc.Width), +- sizeof(GifPixelType)); ++ sp->RasterBits = (unsigned char *)reallocarray( ++ NULL, ++ (CopyFrom->ImageDesc.Height * ++ CopyFrom->ImageDesc.Width), ++ sizeof(GifPixelType)); + if (sp->RasterBits == NULL) { + FreeLastSavedImage(GifFile); + return (SavedImage *)(NULL); + } + memcpy(sp->RasterBits, CopyFrom->RasterBits, +- sizeof(GifPixelType) * CopyFrom->ImageDesc.Height * +- CopyFrom->ImageDesc.Width); ++ sizeof(GifPixelType) * ++ CopyFrom->ImageDesc.Height * ++ CopyFrom->ImageDesc.Width); + + /* finally, the extension blocks */ + if (CopyFrom->ExtensionBlocks != NULL) { +- sp->ExtensionBlocks = (ExtensionBlock *)reallocarray(NULL, +- CopyFrom->ExtensionBlockCount, +- sizeof(ExtensionBlock)); ++ sp->ExtensionBlocks = ++ (ExtensionBlock *)reallocarray( ++ NULL, CopyFrom->ExtensionBlockCount, ++ sizeof(ExtensionBlock)); + if (sp->ExtensionBlocks == NULL) { + FreeLastSavedImage(GifFile); + return (SavedImage *)(NULL); + } +- memcpy(sp->ExtensionBlocks, CopyFrom->ExtensionBlocks, +- sizeof(ExtensionBlock) * CopyFrom->ExtensionBlockCount); ++ memcpy(sp->ExtensionBlocks, ++ CopyFrom->ExtensionBlocks, ++ sizeof(ExtensionBlock) * ++ CopyFrom->ExtensionBlockCount); + } +- } +- else { ++ } else { + memset((char *)sp, '\0', sizeof(SavedImage)); + } + +@@ -417,9 +422,7 @@ GifMakeSavedImage(GifFileType *GifFile, const SavedImage *CopyFrom) + } + } + +-void +-GifFreeSavedImages(GifFileType *GifFile) +-{ ++void GifFreeSavedImages(GifFileType *GifFile) { + SavedImage *sp; + + if ((GifFile == NULL) || (GifFile->SavedImages == NULL)) { +@@ -432,10 +435,12 @@ GifFreeSavedImages(GifFileType *GifFile) + sp->ImageDesc.ColorMap = NULL; + } + +- if (sp->RasterBits != NULL) ++ if (sp->RasterBits != NULL) { + free((char *)sp->RasterBits); ++ } + +- GifFreeExtensions(&sp->ExtensionBlockCount, &sp->ExtensionBlocks); ++ GifFreeExtensions(&sp->ExtensionBlockCount, ++ &sp->ExtensionBlocks); + } + free((char *)GifFile->SavedImages); + GifFile->SavedImages = NULL; +diff --git a/jdk/src/share/native/sun/awt/giflib/openbsd-reallocarray.c b/jdk/src/share/native/sun/awt/giflib/openbsd-reallocarray.c +index 452df69d7c..7420af674c 100644 +--- a/jdk/src/share/native/sun/awt/giflib/openbsd-reallocarray.c ++++ b/jdk/src/share/native/sun/awt/giflib/openbsd-reallocarray.c +@@ -28,24 +28,22 @@ + * SPDX-License-Identifier: MIT + */ + +-#include + #include + #include + #include ++#include + + #ifndef SIZE_MAX +- #define SIZE_MAX UINTPTR_MAX ++#define SIZE_MAX UINTPTR_MAX + #endif + + /* + * This is sqrt(SIZE_MAX+1), as s1*s2 <= SIZE_MAX + * if both s1 < MUL_NO_OVERFLOW and s2 < MUL_NO_OVERFLOW + */ +-#define MUL_NO_OVERFLOW ((size_t)1 << (sizeof(size_t) * 4)) ++#define MUL_NO_OVERFLOW ((size_t)1 << (sizeof(size_t) * 4)) + +-void * +-openbsd_reallocarray(void *optr, size_t nmemb, size_t size) +-{ ++void *openbsd_reallocarray(void *optr, size_t nmemb, size_t size) { + if ((nmemb >= MUL_NO_OVERFLOW || size >= MUL_NO_OVERFLOW) && + nmemb > 0 && SIZE_MAX / nmemb < size) { + errno = ENOMEM; +@@ -93,7 +91,8 @@ openbsd_reallocarray(void *optr, size_t nmemb, size_t size) + * fuzzing on one platform may not detect zero-size allocation + * problems on other platforms. + */ +- if (size == 0 || nmemb == 0) ++ if (size == 0 || nmemb == 0) { + return NULL; ++ } + return realloc(optr, size * nmemb); + } diff --git a/SPECS/java-1.8.0-openjdk.spec b/SPECS/java-1.8.0-openjdk.spec index 492623d..931b69c 100644 --- a/SPECS/java-1.8.0-openjdk.spec +++ b/SPECS/java-1.8.0-openjdk.spec @@ -308,7 +308,7 @@ # Define version of OpenJDK 8 used %global project openjdk %global repo shenandoah-jdk8u -%global openjdk_revision 8u422-b05 +%global openjdk_revision 8u432-b06 %global shenandoah_revision shenandoah%{openjdk_revision} # Define IcedTea version used for SystemTap tapsets and desktop files %global icedteaver 3.15.0 @@ -1521,8 +1521,6 @@ Patch539: pr2888-rh2055274-support_system_cacerts-%{cacertsver}.patch Patch541: rh1684077-openjdk_should_depend_on_pcsc-lite-libs_instead_of_pcsc-lite-devel.patch # RH1750419: Enable build of speculative store bypass hardened alt-java (CVE-2018-3639) Patch600: rh1750419-redhat_alt_java.patch -# JDK-8281098, PR3836: Extra compiler flags not passed to adlc build -Patch112: jdk8281098-pr3836-pass_compiler_flags_to_adlc.patch ############################################# # @@ -1569,6 +1567,8 @@ Patch204: jdk8042159-allow_using_system_installed_lcms2-jdk.patch Patch581: jdk8257794-remove_broken_assert.patch # JDK-8186464, RH1433262: ZipFile cannot read some InfoZip ZIP64 zip files Patch12: jdk8186464-rh1433262-zip64_failure.patch +# JDK-8328999, RH2251025 - Update GIFlib to 5.2.2 (PR#571) +Patch13: jdk8328999-update_giflib_5.2.2.patch ############################################# # @@ -1684,7 +1684,7 @@ BuildRequires: libpng-devel BuildRequires: zlib-devel %else # Version in jdk/src/share/native/sun/awt/giflib/gif_lib.h -Provides: bundled(giflib) = 5.2.1 +Provides: bundled(giflib) = 5.2.2 # Version in jdk/src/share/native/sun/java2d/cmm/lcms/lcms2.h Provides: bundled(lcms2) = 2.11.0 # Version in jdk/src/share/native/sun/awt/image/jpeg/jpeglib.h @@ -1692,7 +1692,7 @@ Provides: bundled(libjpeg) = 6b # Version in jdk/src/share/native/sun/awt/libpng/png.h Provides: bundled(libpng) = 1.6.39 # Version in jdk/src/share/native/java/util/zip/zlib/zlib.h -Provides: bundled(zlib) = 1.2.13 +Provides: bundled(zlib) = 1.3.1 %ifnarch %{portable_build_arches} # We link statically against libstdc++ to increase portability BuildRequires: libstdc++-static @@ -1991,7 +1991,9 @@ sh %{SOURCE12} # AArch64 fixes # x86 fixes -%patch -P105 +pushd %{top_level_dir_name} +%patch -P105 -p1 +popd # Upstreamable fixes %patch -P512 @@ -1999,12 +2001,12 @@ sh %{SOURCE12} %patch -P528 %patch -P571 %patch -P574 -%patch -P112 %patch -P581 %patch -P541 %patch -P12 pushd %{top_level_dir_name} %patch -P502 -p1 +%patch -P13 -p1 popd pushd %{top_level_dir_name} @@ -2913,7 +2915,22 @@ cjc.mainProgram(args) %endif %changelog -* Wed Jul 10 2024 Andrew Hughes - 1:1.8.0.422.b05-1.1 +* Fri Oct 11 2024 Andrew Hughes - 1:1.8.0.432.b06-1 +- Update to shenandoah-jdk8u432-b06 (GA) +- Update release notes for shenandoah-8u432-b06. +- Drop JDK-828109{6,7,8}/PR3836 patch following integration of upstream version +- Regenerate JDK-8199936/PR3533 patch following JDK-828109{6,7,8} integration +- Bump version of bundled zlib to 1.3.1 following JDK-8324632 +- Include backport of JDK-8328999 to update giflib to 5.2.2 +- Bump version of bundled giflib to 5.2.2 following JDK-8328999 +- Add build scripts to repository to ease remembering all CentOS & RHEL targets and options +- Sync the copy of the portable specfile with the latest update +- Resolves: RHEL-58794 +- Resolves: RHEL-62280 +- Resolves: RHEL-61287 +- ** This tarball is embargoed until 2024-10-15 @ 1pm PT. ** + +* Wed Jul 10 2024 Andrew Hughes - 1:1.8.0.422.b05-1 - Update to shenandoah-jdk8u422-b05 (GA) - Update release notes for shenandoah-8u422-b05. - Rebase PR2462 patch following patched hunk being removed by JDK-8322106