From b91e4dee392232a0c56654a732ca23899fc930fc Mon Sep 17 00:00:00 2001 From: eabdullin Date: Wed, 28 Jan 2026 06:01:20 +0000 Subject: [PATCH] import UBI java-25-openjdk-25.0.2.0.10-1.el9 --- .gitignore | 2 +- .java-25-openjdk.metadata | 2 +- SOURCES/NEWS | 381 +++++ SOURCES/create-redhat-properties-files.bash | 2 + SOURCES/java-25-openjdk-portable.specfile | 33 +- SOURCES/jdk8372534-libpng-1.6.51.patch | 1598 +++++++++++++++++++ SPECS/java-25-openjdk.spec | 39 +- 7 files changed, 2041 insertions(+), 16 deletions(-) create mode 100644 SOURCES/jdk8372534-libpng-1.6.51.patch diff --git a/.gitignore b/.gitignore index 2c0bd1a..bc4f6c3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ SOURCES/nssadapter-0.1.0.tar.xz -SOURCES/openjdk-25.0.1+8.tar.xz +SOURCES/openjdk-25.0.2+10.tar.xz SOURCES/tapsets-icedtea-6.0.0pre00-c848b93a8598.tar.xz diff --git a/.java-25-openjdk.metadata b/.java-25-openjdk.metadata index 4b3fe63..dce35d4 100644 --- a/.java-25-openjdk.metadata +++ b/.java-25-openjdk.metadata @@ -1,3 +1,3 @@ f796f454a7f6eb8df8fc66c842e3fb2e7f5b82e8 SOURCES/nssadapter-0.1.0.tar.xz -582b568ee9c5b661a4d1de332ab672e3c8c331bc SOURCES/openjdk-25.0.1+8.tar.xz +b842f1ba4b1c5b25c36a9ce694a9205d64ebfc15 SOURCES/openjdk-25.0.2+10.tar.xz c8281ee37b77d535c9c1af86609a531958ff7b34 SOURCES/tapsets-icedtea-6.0.0pre00-c848b93a8598.tar.xz diff --git a/SOURCES/NEWS b/SOURCES/NEWS index 0a4a628..0a054bf 100644 --- a/SOURCES/NEWS +++ b/SOURCES/NEWS @@ -3,6 +3,387 @@ 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 25.0.2 (2026-01-20): +=========================================== + +* CVEs + - CVE-2026-21925 + - CVE-2026-21932 + - CVE-2026-21933 + - CVE-2026-21945 +* Changes + - JDK-8023263: [TESTBUG] Test closed/java/awt/Focus/InactiveWindowTest/InactiveFocusRace fails due to not enough time to initialize graphic components + - JDK-8162380: [TEST_BUG] MouseEvent/.../AltGraphModifierTest.java has only "Fail" button + - JDK-8201778: Speed up test javax/net/ssl/DTLS/PacketLossRetransmission.java + - JDK-8265429: Improve GCM encryption + - JDK-8277444: Data race between JvmtiClassFileReconstituter::copy_bytecodes and class linking + - JDK-8279005: sun/tools/jstat tests do not check for test case exit codes after JDK-8245129 + - JDK-8304811: vmTestbase/vm/mlvm/indy/func/jvmti/stepBreakPopReturn/INDIFY_Test.java fails with JVMTI_ERROR_TYPE_MISMATCH + - JDK-8305567: serviceability/tmtools/jstat/GcTest01.java failed utils.JstatGcResults.assertConsistency + - JDK-8317801: java/net/Socket/asyncClose/Race.java fails intermittently (aix) + - JDK-8320836: jtreg gtest runs should limit heap size + - JDK-8325766: Extend CertificateBuilder to create trust and end entity certificates programmatically + - JDK-8333526: Restructure java/nio/channels/DatagramChannel/StressNativeSignal.java to a fail fast exception handling policy + - JDK-8333783: java/nio/channels/FileChannel/directio/DirectIOTest.java is unstable with AV software + - JDK-8334238: Enhance AddLShortcutTest jpackage test + - JDK-8335986: Test javax/swing/JCheckBox/4449413/bug4449413.java fails on Windows 11 x64 because RBMenuItem's and CBMenuItem's checkmark on the left side are not visible + - JDK-8341496: Improve JMX connections + - JDK-8343218: Add option to disable allocating interface and abstract classes in non-class metaspace + - JDK-8343546: GHA: Cache required dependencies in master-branch workflow + - JDK-8345810: Custom launchers must be linked with pthread to avoid dynamic linker issues + - JDK-8346753: Test javax/swing/JMenuItem/RightLeftOrientation/RightLeftOrientation.java fails on Windows Server 2025 x64 because the icons of RBMenuItem and CBMenuItem are not visible in Nimbus LookAndFeel + - JDK-8346839: [TESTBUG] "java/awt/textfield/setechochartest4/setechochartest4.java" failed because the test frame disappears on clicking "Click Several Times" button + - JDK-8346884: Add since checker test to jdk.editpad + - JDK-8346952: GetGraphicsStressTest.java fails: Native resources unavailable + - JDK-8347277: java/awt/Focus/ComponentLostFocusTest.java fails intermittently + - JDK-8349188: LineBorder does not scale correctly + - JDK-8350621: Code cache stops scheduling GC + - JDK-8351487: [ubsan] jvmti.h runtime error: load of value which is not a valid value + - JDK-8352016: Improve java/lang/RuntimeTests/RuntimeExitLogTest.java + - JDK-8354348: Enable Extended EVEX to REX2/REX demotion for commutative operations with same dst and src2 + - JDK-8354415: [Ubuntu25.04] api/java_awt/GraphicsDevice/indexTGF.html#SetDisplayMode - setDisplayMode_REFRESH_RATE_UNKNOWN fails: Height is different on vnc + - JDK-8354447: Missing test for retroactive @SuppressWarnings("dangling-doc-comments") behavior + - JDK-8354646: java.awt.TextField allows to identify the spaces in a password when double clicked at the starting and end of the text + - JDK-8355478: DoubleActionESC.java fails intermittently + - JDK-8356324: JVM crash (SIGSEGV at ClassListParser::resolve_indy_impl) during -Xshare:dump starting from 21.0.5 + - JDK-8356897: Update NSS library to 3.111 + - JDK-8357064: cds/appcds/ArchiveRelocationTest.java failed with missing expected output + - JDK-8357141: Update to use jtreg 7.5.2 + - JDK-8357382: runtime/cds/appcds/aotClassLinking/BulkLoaderTest.java#aot fails with Xcomp and C1 + - JDK-8357396: Refactor nmethod::make_not_entrant to use Enum instead of "const char*" + - JDK-8357691: File blocked.certs contains bad content when boot jdk 25 is used, sun/security/lib/CheckBlockedCerts.java failing + - JDK-8357694: RISC-V: Several IR verification tests fail when vlen=128 + - JDK-8357799: Improve instructions for JFileChooser/HTMLFileName.java + - JDK-8357816: Add test from JDK-8350576 + - JDK-8357822: C2: Multiple string optimization tests are no longer testing string concatenation optimizations + - JDK-8357959: (bf) ByteBuffer.allocateDirect initialization can result in large TTSP spikes + - JDK-8358048: java/net/httpclient/HttpsTunnelAuthTest.java incorrectly calls Thread::stop + - JDK-8358340: Support CDS heap archive with Generational Shenandoah + - JDK-8358532: JFileChooser in GTK L&F still displays HTML filename + - JDK-8358535: Changes in ClassValue (JDK-8351996) caused a 1-9% regression in Renaissance-PageRank + - JDK-8358556: Assert when running with -XX:-UseLibmIntrinsic + - JDK-8358685: [TEST] AOTLoggingTag.java failed with missing log message + - JDK-8358697: TextLayout/MyanmarTextTest.java passes if no Myanmar font is found + - JDK-8358723: jpackage signing issues: the main launcher doesn't have entitlements + - JDK-8358748: Large page size initialization fails with assert "page_size must be a power of 2" + - JDK-8358751: C2: Recursive inlining check for compiled lambda forms is broken + - JDK-8358813: JPasswordField identifies spaces in password via delete shortcuts + - JDK-8359061: Update and ProblemList manual test java/awt/Cursor/CursorDragTest/ListDragCursor.java + - JDK-8359104: gc/TestAlwaysPreTouchBehavior.java# fails on Linux + - JDK-8359105: RISC-V: No need for acquire fence in safepoint poll during JNI calls + - JDK-8359127: Amend java/nio/channels/DatagramChannel/PromiscuousIPv6.java to use @requires for OS platform selection + - JDK-8359167: Remove unused test/hotspot/jtreg/vmTestbase/nsk/share/jpda/BindServer.java + - JDK-8359207: Remove runtime/signal/TestSigusr2.java since it is always skipped + - JDK-8359423: Improve error message in case of missing jsa shared archive + - JDK-8359428: Test 'javax/swing/JTabbedPane/bug4499556.java' failed because after selecting one of L&F items, the test case automatically failed when clicking on L&F Menu button again + - JDK-8359449: [TEST] open/test/jdk/java/io/File/SymLinks.java Refactor extract method for Windows specific test + - JDK-8359477: com/sun/net/httpserver/Test12.java appears to have a temp file race + - JDK-8359501: Enhance Handling of URIs + - JDK-8359687: Use PassFailJFrame for java/awt/print/Dialog/DialogType.java + - JDK-8359690: New test TestCPUTimeSampleThrottling still fails intermittently + - JDK-8359735: [Ubuntu 25.10] java/lang/ProcessBuilder/Basic.java, java/lang/ProcessHandle/InfoTest.java fail due to rust-coreutils + - JDK-8359827: Test runtime/Thread/ThreadCountLimit.java need loop increasing the limit + - JDK-8360022: ClassRefDupInConstantPoolTest.java fails when running in repeat + - JDK-8360090: [TEST] RISC-V: disable some cds tests on qemu + - JDK-8360178: TestArguments.atojulong gtest has incorrect format string + - JDK-8360219: [AIX] assert(locals_base >= l2) failed: bad placement + - JDK-8360255: runtime/jni/checked/TestLargeUTF8Length.java fails with -XX:-CompactStrings + - JDK-8360408: [TEST] Use @requires tag instead of exiting based on "os.name" property value for sun/net/www/protocol/file/FileURLTest.java + - JDK-8360411: [TEST] open/test/jdk/java/io/File/MaxPathLength.java Refactor extract method to encapsulate Windows specific test logic + - JDK-8360518: Docker tests do not work when asan is configured + - JDK-8360520: RISC-V: C1: Fix primitive array clone intrinsic regression after JDK-8333154 + - JDK-8360664: Null pointer dereference in src/hotspot/share/prims/jvmtiTagMap.cpp in IterateOverHeapObjectClosure::do_object() + - JDK-8360783: CTW: Skip deoptimization between tiers + - JDK-8360791: [ubsan] Adjust signal handling + - JDK-8360867: CTW: Disable inline cache verification + - JDK-8360981: Remove use of Thread.stop in test/jdk/java/net/Socket/DeadlockTest.java + - JDK-8361112: Use exact float -> Float16 conversion method in Float16 tests + - JDK-8361180: Disable CompiledDirectCall verification with -VerifyInlineCaches + - JDK-8361198: [AIX] fix misleading error output in thread_cpu_time_unchecked + - JDK-8361211: C2: Final graph reshaping generates unencodeable klass constants + - JDK-8361215: Add AOT test case: verification constraint classes are excluded + - JDK-8361253: CommandLineOptionTest library should report observed values on failure + - JDK-8361255: CTW: Tolerate more NCDFE problems + - JDK-8361298: SwingUtilities/bug4967768.java fails where character P is not underline + - JDK-8361314: Test serviceability/jvmti/VMEvent/MyPackage/VMEventRecursionTest.java FATAL ERROR in native method: Failed during the GetClassSignature call + - JDK-8361367: AOT ExcludedClasses.java test failed with missing constant pool logs + - JDK-8361423: Add IPSupport::printPlatformSupport to java/net/NetworkInterface/IPv4Only.java + - JDK-8361449: RISC-V: Code cleanup for native call + - JDK-8361478: GHA: Use MSYS2 from GHA runners + - JDK-8361494: [IR Framework] Escape too much in replacement of placeholder + - JDK-8361497: Scoped Values: orElse and orElseThrow do not access the cache + - JDK-8361504: RISC-V: Make C1 clone intrinsic platform guard more specific + - JDK-8361520: Stabilize SystemGC benchmarks + - JDK-8361599: [PPC64] enable missing tests via jtreg requires + - JDK-8361711: Add library name configurability to PKCS11Test.java + - JDK-8361748: Enforce limits on the size of an XBM image + - JDK-8361839: Problemlist BogusFocusableWindowState due to failures in the CI pipeline + - JDK-8361868: [GCC static analyzer] complains about missing calloc - NULL checks in p11_util.c + - JDK-8361871: [GCC static analyzer] complains about use of uninitialized value ckpObject in p11_util.c + - JDK-8361888: [GCC static analyzer] ProcessImpl_md.c Java_java_lang_ProcessImpl_forkAndExec error: use of uninitialized value '*(ChildStuff *)p.mode + - JDK-8361892: AArch64: Incorrect matching rule leading to improper oop instruction encoding + - JDK-8361897: gc/z/TestUncommit.java fails with Uncommitted too slow + - JDK-8361948: Shenandoah: region free capacity unit mismatch + - JDK-8361950: Update to use jtreg 8 + - JDK-8361959: [GCC static analyzer] java_props_md.c leak of 'temp' variable is reported + - JDK-8362107: Update the Jan CPU26_01 release date in master branch after forking Oct CPU25_10 + - JDK-8362123: ClassLoader Leak via Executors.newSingleThreadExecutor(...) + - JDK-8362169: Pointer passed to upcall may get wrong scope + - JDK-8362204: test/jdk/sun/awt/font/TestDevTransform.java fails on Ubuntu 24.04 + - JDK-8362207: Add more test cases for possible double-rounding in fma + - JDK-8362282: runtime/logging/StressAsyncUL.java failed with exitValue = 134 + - JDK-8362308: Enhance Bitmap operations + - JDK-8362379: Test serviceability/HeapDump/UnmountedVThreadNativeMethodAtTop.java should mark as /native + - JDK-8362390: AIX make fails in awt_GraphicsEnv.c + - JDK-8362482: [TESTBUG] serviceability/HeapDump/UnmountedVThreadNativeMethodAtTop.java: System.gc() does not provide full GC + - JDK-8362501: Update test/hotspot/jtreg/applications/jcstress/README + - JDK-8362515: RISC-V: cleanup NativeFarCall + - JDK-8362516: Support of GCC static analyzer (-fanalyzer) + - JDK-8362530: VM crash with -XX:+PrintTieredEvents when collecting AOT profiling + - JDK-8362532: Test gc/g1/plab/* duplicate command-line options + - JDK-8362533: Tests sun/management/jmxremote/bootstrap/* duplicate VM flags + - JDK-8362581: Timeouts in java/nio/channels/SocketChannel/OpenLeak.java on UNIX + - JDK-8362582: GHA: Increase bundle retention time to deal with infra overload better + - JDK-8362596: RISC-V: Improve _vectorizedHashCode intrinsic + - JDK-8362602: Add test.timeout.factor to CompileFactory to avoid test timeouts + - JDK-8362632: Improve HttpServer Request handling + - JDK-8362834: Several runtime/Thread tests should mark as /native + - JDK-8362836: JFR: Broken pipe in jdk/jfr/event/io/TestIOTopFrame.java + - JDK-8362838: RISC-V: Incorrect matching rule leading to improper oop instruction encoding + - JDK-8362855: Test java/net/ipv6tests/TcpTest.java should report SkippedException when there no ia4addr or ia6addr + - JDK-8362889: [GCC static analyzer] leak in libstringPlatformChars.c + - JDK-8362972: C2 fails with unexpected node in SuperWord truncation: IsFiniteF, IsFiniteD + - JDK-8363676: [GCC static analyzer] missing return value check of malloc in OGLContext_SetTransform + - JDK-8363696: Update the release version and date for OpenJDK 25u + - JDK-8363720: Follow up to JDK-8360411 with post review comments + - JDK-8363895: Minimal build fails with slowdebug builds after JDK-8354887 + - JDK-8363898: RISC-V: TestRangeCheckHoistingScaledIV.java fails after JDK-8355293 when running without RVV + - JDK-8363910: Avoid tuning for Power10 CPUs on Linux ppc64le when gcc < 10 is used + - JDK-8363928: Specifying AOTCacheOutput with a blank path causes the JVM to crash + - JDK-8363965: GHA: Switch cross-compiling sysroots to Debian bookworm + - JDK-8363966: GHA: Switch cross-compiling sysroots to Debian trixie + - JDK-8364090: Dump JFR recording on CrashOnOutOfMemoryError + - JDK-8364111: InstanceMirrorKlass iterators should handle CDS and hidden classes consistently + - JDK-8364114: Test TestHugePageDecisionsAtVMStartup.java#LP_enabled fails when no free hugepage + - JDK-8364120: RISC-V: unify the usage of MacroAssembler::instruction_size + - JDK-8364150: RISC-V: Leftover for JDK-8343430 removing old trampoline call + - JDK-8364177: JDK fails to build due to undefined symbol in libpng on LoongArch64 + - JDK-8364184: [REDO] AArch64: [VectorAPI] sve vector math operations are not supported after JDK-8353217 + - JDK-8364190: JFR: RemoteRecordingStream withers don't work + - JDK-8364198: NMT should have a better corruption message + - JDK-8364199: Enhance list of environment variables printed in hserr/hsinfo file + - JDK-8364212: Shenandoah: Rework archived objects loading + - JDK-8364214: Enhance polygon data support + - JDK-8364235: Fix for JDK-8361447 breaks the alignment requirements for GuardedMemory + - JDK-8364257: JFR: User-defined events and settings with a one-letter name cannot be configured + - JDK-8364263: HttpClient: Improve encapsulation of ProxyServer + - JDK-8364296: Set IntelJccErratumMitigation flag ergonomically + - JDK-8364352: Some tests fail when using a limited number of pregenerated .jsa CDS archives + - JDK-8364454: ProblemList runtime/cds/DeterministicDump.java on macos for JDK-8363986 + - JDK-8364503: gc/g1/TestCodeCacheUnloadDuringConcCycle.java fails because of race printing to stdout + - JDK-8364514: [asan] runtime/jni/checked/TestCharArrayReleasing.java heap-buffer-overflow + - JDK-8364556: JFR: Disable SymbolTableStatistics and StringTableStatistics in default.jfc + - JDK-8364597: Replace THL A29 Limited with Tencent + - JDK-8364611: (process) Child process SIGPIPE signal disposition should be default + - JDK-8364660: ClassVerifier::ends_in_athrow() should be removed + - JDK-8364764: java/nio/channels/vthread/BlockingChannelOps.java subtests timed out + - JDK-8364786: Test java/net/vthread/HttpALot.java intermittently fails - 24999 handled, expected 25000 + - JDK-8364984: Many jpackage tests are failing on Linux after JDK-8334238 + - JDK-8364993: JFR: Disable jdk.ModuleExport in default.jfc + - JDK-8364996: java/awt/font/FontNames/LocaleFamilyNames.java times out on Windows + - JDK-8365058: Enhance CopyOnWriteArraySet + - JDK-8365071: ARM32: JFR intrinsic jvm_commit triggers C2 regalloc assert + - JDK-8365086: CookieStore.getURIs() and get(URI) should return an immutable List + - JDK-8365165: Zap C-heap memory at delete/free + - JDK-8365166: ARM32: missing os::fetch_bcp_from_context implementation + - JDK-8365168: Use 64-bit aligned addresses for CK_ULONG access in PKCS11 native key code + - JDK-8365200: RISC-V: compiler/loopopts/superword/TestGeneralizedReductions.java fails with Zvbb and vlen=128 + - JDK-8365206: RISC-V: compiler/c2/irTests/TestFloat16ScalarOperations.java is failing on riscv64 + - JDK-8365240: [asan] exclude some tests when using asan enabled binaries + - JDK-8365260: Problemlist 1 test due to failures in the CI pipeline + - JDK-8365265: x86 short forward jump exceeds 8-bit offset in methodHandles_x86.cpp when using Intel APX + - JDK-8365271: Improve Swing supports + - JDK-8365280: Enhance JOptionPane + - JDK-8365302: RISC-V: compiler/loopopts/superword/TestAlignVector.java fails when vlen=128 + - JDK-8365307: AIX make fails after JDK-8364611 + - JDK-8365312: GCC 12 cannot compile SVE on aarch64 with auto-var-init pattern + - JDK-8365389: Remove static color fields from SwingUtilities3 and WindowsMenuItemUI + - JDK-8365425: [macos26] javax/swing/JInternalFrame/8160248/JInternalFrameDraggingTest.java fails on macOS 26 + - JDK-8365442: [asan] runtime/ErrorHandling/CreateCoredumpOnCrash.java fails + - JDK-8365468: EagerJVMCI should only apply to the CompilerBroker JVMCI runtime + - JDK-8365487: [asan] some oops (mode) related tests fail + - JDK-8365543: UnixNativeDispatcher.init should lookup open64at and stat64at on AIX + - JDK-8365571: GenShen: PLAB promotions may remain disabled for evacuation threads + - JDK-8365615: Improve JMenuBar/RightLeftOrientation.java + - JDK-8365638: JFR: Add --exact for debugging out-of-order events + - JDK-8365660: test/jdk/sun/security/pkcs11/KeyAgreement/ tests skipped without SkipExceprion + - JDK-8365700: Jar --validate without any --file option leaves around a temporary file /tmp/tmpJar.jar + - JDK-8365726: Test crashed with assert in C1 thread: Possible safepoint reached by thread that does not allow it + - JDK-8365772: RISC-V: correctly prereserve NaN payload when converting from float to float16 in vector way + - JDK-8365790: Shutdown hook for application image does not work on Windows + - JDK-8365811: test/jdk/java/net/CookieHandler/B6644726.java failure - "Should have 5 cookies. Got only 4, expires probably didn't parse correctly" + - JDK-8365823: Revert storing abstract and interface Klasses to non-class metaspace + - JDK-8365834: Mark java/net/httpclient/ManyRequests.java as intermittent + - JDK-8365841: RISC-V: Several IR verification tests fail after JDK-8350960 without Zvfh + - JDK-8365844: RISC-V: TestBadFormat.java fails when running without RVV + - JDK-8365863: /test/jdk/sun/security/pkcs11/Cipher tests skip without SkippedException + - JDK-8365913: Support latest MSC_VER in abstract_vm_version.cpp + - JDK-8365919: Replace currentTimeMillis with nanoTime in Stresser.java + - JDK-8365926: RISC-V: Performance regression in renaissance (chi-square) + - JDK-8365956: GenShen: Adaptive tenuring threshold algorithm may raise threshold prematurely + - JDK-8365983: Tests should throw SkippedException when SCTP not supported + - JDK-8366028: MethodType::fromMethodDescriptorString should not throw UnsupportedOperationException for invalid descriptors + - JDK-8366029: Do not add -XX:VerifyArchivedFields by default to CDS tests + - JDK-8366031: Mark com/sun/nio/sctp/SctpChannel/CloseDescriptors.java as intermittent + - JDK-8366075: Problemlist 2 tests due to failures in the CI pipeline + - JDK-8366092: [GCC static analyzer] UnixOperatingSystem.c warning: use of uninitialized value 'systemTicks' + - JDK-8366147: ZGC: ZPageAllocator::cleanup_failed_commit_single_partition may leak memory + - JDK-8366159: SkippedException is treated as a pass for pkcs11/KeyStore, pkcs11/SecretKeyFactory and pkcs11/SecureRandom + - JDK-8366208: Unexpected exception in sun.java2d.cmm.lcms.LCMSImageLayout + - JDK-8366229: runtime/Thread/TooSmallStackSize.java runs with all collectors + - JDK-8366250: Problemlist 3 tests due to failures in the CI pipeline + - JDK-8366340: Problemlist 1 test due to failures in the CI pipeline + - JDK-8366342: Key generator and key pair generator tests skipping, but showing as passed + - JDK-8366359: Test should throw SkippedException when there is no lpstat + - JDK-8366365: [test] test/lib-test/jdk/test/whitebox/CPUInfoTest.java should be updated + - JDK-8366434: THP not working properly with G1 after JDK-8345655 + - JDK-8366446: Test java/awt/geom/ConcurrentDrawPolygonTest.java fails intermittently + - JDK-8366537: Test "java/util/TimeZone/DefaultTimeZoneTest.java" is not updating the zone ID as expected + - JDK-8366558: Gtests leave /tmp/cgroups-test* files + - JDK-8366694: Test JdbStopInNotificationThreadTest.java timed out after 60 second + - JDK-8366750: Remove test 'java/awt/Choice/ChoiceMouseWheelTest/ChoiceMouseWheelTest.java' from problemlist + - JDK-8366764: Deproblemlist java/awt/ScrollPane/ScrollPositionTest.java + - JDK-8366800: Problemlist 1 test due to failures in the CI pipeline + - JDK-8366844: Update and automate MouseDraggedOriginatedByScrollBarTest.java + - JDK-8366850: Test com/sun/jdi/JdbStopInNotificationThreadTest.java failed + - JDK-8366893: java/lang/Thread/virtual/stress/GetStackTraceALotWhenPinned.java timed out on macos-aarch64 + - JDK-8366948: AOT cache creation crashes when iterating training data + - JDK-8366980: TestTransparentHugePagesHeap.java fails when run with -UseCompressedOops + - JDK-8367017: Remove legacy checks from WrappedToolkitTest and convert from bash + - JDK-8367021: Regression in LocaleDataTest refactoring + - JDK-8367048: RISC-V: Correct pipeline descriptions of the architecture + - JDK-8367066: RISC-V: refine register selection in MacroAssembler:: decode_klass_not_null + - JDK-8367098: RISC-V: sync CPU features with related JVM flags for dependant ones + - JDK-8367131: Test com/sun/jdi/ThreadMemoryLeakTest.java fails on 32 bits + - JDK-8367133: DTLS: fragmentation of Finished message results in handshake failure + - JDK-8367137: RISC-V: Detect Zicboz block size via hwprobe + - JDK-8367237: Thread-Safety Usage Warning for java.text.Collator Classes + - JDK-8367277: Fix copyright header in JMXInterfaceBindingTest.java + - JDK-8367313: CTW: Execute in AWT headless mode + - JDK-8367333: C2: Vector math operation intrinsification failure + - JDK-8367348: Enhance PassFailJFrame to support links in HTML + - JDK-8367378: GenShen: Missing timing stats when old mark buffers are flushed during final update refs + - JDK-8367384: The ICC_Profile class may throw exceptions during serialization + - JDK-8367598: Switch to CRC32C for SEED calculation in jdk.test.lib.Utils + - JDK-8367616: RISC-V: Auto-enable Zicboz extension for debug builds + - JDK-8367689: Revert removal of several compilation-related vmStructs fields + - JDK-8367692: RISC-V: Align post call nop + - JDK-8367694: Fix jtreg test failure when Intel APX is enabled for KNL platforms + - JDK-8367780: Enable UseAPX on Intel CPUs only when both APX_F and APX_NCI_NDD_NF cpuid features are present + - JDK-8367782: VerifyJarEntryName.java: Fix modifyJarEntryName to operate on bytes and re-introduce verifySignatureEntryName + - JDK-8367869: Test java/io/FileDescriptor/Sync.java timed out + - JDK-8367904: Test java/net/InetAddress/ptr/Lookup.java should throw SkippedException + - JDK-8367948: JFR: MethodTrace threshold setting has no effect + - JDK-8367953: JFR sampler threads does not appear in thread dump + - JDK-8367969: C2: compiler/vectorapi/TestVectorMathLib.java fails without UnlockDiagnosticVMOptions + - JDK-8367988: NewFileSystemTests.readOnlyZipFileFailure fails when run by root user + - JDK-8368032: Enhance Certificate Checking + - JDK-8368071: Compilation throughput regressed 2X-8X after JDK-8355003 + - JDK-8368152: Shenandoah: Incorrect behavior at end of degenerated cycle + - JDK-8368192: Test java/lang/ProcessBuilder/Basic.java#id0 fails with Exception: Stack trace + - JDK-8368366: RISC-V: AlignVector is mistakenly set to AvoidUnalignedAccesses + - JDK-8368367: Test jdk/jfr/event/gc/detailed/TestGCHeapMemoryUsageEvent.java fails jdk.GCHeapMemoryUsage "expected 0 > 0" + - JDK-8368565: Adjust comment regarding dependency of libjvm.so to librt + - JDK-8368606: Printer lookup returns empty on AIX platform due to uninitialized results list + - JDK-8368668: Several vmTestbase/vm/gc/compact tests timed out on large memory machine + - JDK-8368670: Deadlock in JFR on event register + class load + - JDK-8368698: runtime/cds/appcds/aotCache/OldClassSupport.java assert(can_add()) failed: Cannot add TrainingData objects + - JDK-8368732: RISC-V: Detect support for misaligned vector access via hwprobe + - JDK-8368890: open/test/jdk/tools/jpackage/macosx/NameWithSpaceTest.java fails randomly + - JDK-8368893: RISC-V: crash after JDK-8352673 on fastdebug version + - JDK-8368960: Adjust java UL logging in the build + - JDK-8368982: Test sun/security/tools/jarsigner/EC.java completed and timed out + - JDK-8369078: Fix faulty test conversion in IllegalCharsetName.java + - JDK-8369184: SimpleTimeZone equals() Returns True for Unequal Instances with Different hashCode Values + - JDK-8369190: JavaFrameAnchor on AArch64 has unnecessary barriers and wrong store order in MacroAssembler + - JDK-8369226: GHA: Switch to MacOS 15 + - JDK-8369319: java/net/httpclient/CancelRequestTest.java fails intermittently + - JDK-8369450: [Ubuntu 25.10] openjdk fails to build due to rust-coreutils date + - JDK-8369487: Revert EA option for build promotion + - JDK-8369506: Bytecode rewriting causes Java heap corruption on AArch64 + - JDK-8369560: Slowdebug build without CDS fails + - JDK-8369563: Gtest dll_address_to_function_and_library_name has issues with stripped pdb files + - JDK-8369616: JavaFrameAnchor on RISC-V has unnecessary barriers and wrong store order in MacroAssembler + - JDK-8369656: Calling CompletableFuture.join() could execute task in common pool + - JDK-8369657: [AIX] TOC overflow in static-launcher build when building slowdebug after JDK-8352064 + - JDK-8369853: jpackage signing tests fail after JDK-8358723 + - JDK-8369868: Compilation error in Win8365790Test.java with JDK-8358723 fix resulting in CI tier3 failure + - JDK-8369946: Bytecode rewriting causes Java heap corruption on PPC + - JDK-8369947: Bytecode rewriting causes Java heap corruption on RISC-V + - JDK-8369979: Flag UsePopCountInstruction was accidentally disabled on PPC64 + - JDK-8370048: Shenandoah: Deprecated ShenandoahPacing option + - JDK-8370049: [s390x] G1 barrier compareAndExchange does not return old value when compareExchange fails + - JDK-8370318: AES-GCM vector intrinsic may read out of bounds (x86_64, AVX-512) + - JDK-8370331: Problemlist 2 tests due to failures in the CI pipeline + - JDK-8370428: Change milestone to fcs for all releases + - JDK-8370465: Right to Left Orientation Issues with MenuItem Component + - JDK-8371094: --mac-signing-key-user-name no longer works + - JDK-8371425: Include folder names in vscode workspace virtual folders + - JDK-8371697: test/jdk/java/nio/file/FileStore/Basic.java fails after 8360887 on linux + - JDK-8372753: jpackage ignores --file-associations option with predefined app image + +Notes on individual issues: +=========================== + +core-libs/java.lang.invoke: + +JDK-8358535: Changes in ClassValue (JDK-8351996) caused a 1-9% regression in Renaissance-PageRank +================================================================================================= +Behavioural changes in ClassValue in the original release of OpenJDK +25 (JDK-8351996) caused a noticeable performance regression after use +of ClassValue::remove. The cause of this regression was found to be +the accidental removal of a cache update in ClassValue::readAccess, +leading to ClassValue::get calls taking the slow path rather than +using the cache. In this update, the cache update is restored. + +core-svc/javax.management: + +JDK-8341496: Improve JMX connections +==================================== +With this release of OpenJDK, SSL connections created by +javax.rmi.ssl.SslRMIClientSocketFactory now enable HTTPS-based +endpoint identification by default. This can be disabled by setting +the new system property +jdk.rmi.ssl.client.enableEndpointIdentification to false. + +hotspot/gc: + +JDK-8366434: THP not working properly with G1 after JDK-8345655 +=============================================================== +Refactoring of the memory reservation code in the original release of +OpenJDK 25 (JDK-8345655) caused a set page size provided by +`os::vm_page_size()` to always be used rather than a value passed in +by the calling method. As the page size is used by the G1 garbage +collector to determine the alignment of the reservation, this lead to +reservations being ineligible for Transparent Huge Pages (THP). In +this update, the caller specified page size is restored. + +security-libs/java.security: + +JDK-8368032: Enhance Certificate Checking +========================================= +OpenJDK supports the authorityInfoAccess extension in X.509 +certificates when the `com.sun.security.enableAIAcaIssuers` system +property is set to `true`. With this release of OpenJDK, a security +and system property `com.sun.security.allowedAIALocations` is +introduced which acts as a filter on the URIs specified in the +extension. By default, the property is empty, which will cause all +URIs to be denied when the extension is enabled. A value of `any` may +be used to allow all URIs or a whitespace-separated list of filters +may be used for more fine-grained control. The syntax of the filters +is specified in the `java.security` file. A non-empty value for the +system property takes precedence over the security property. + New in release OpenJDK 25.0.1 (2025-10-21): =========================================== diff --git a/SOURCES/create-redhat-properties-files.bash b/SOURCES/create-redhat-properties-files.bash index 7b02edf..967091a 100644 --- a/SOURCES/create-redhat-properties-files.bash +++ b/SOURCES/create-redhat-properties-files.bash @@ -109,6 +109,8 @@ security.provider.8= keystore.type=pkcs12 EOF +# Make sure java.security exists before appending +test -e "${SECURITY}"/java.security || ( echo "${SECURITY}/java.security not found" && false ) cat >> "${SECURITY}"/java.security <<'EOF' # diff --git a/SOURCES/java-25-openjdk-portable.specfile b/SOURCES/java-25-openjdk-portable.specfile index 1d11f45..f45ab50 100644 --- a/SOURCES/java-25-openjdk-portable.specfile +++ b/SOURCES/java-25-openjdk-portable.specfile @@ -336,7 +336,7 @@ # New Version-String scheme-style defines %global featurever 25 %global interimver 0 -%global updatever 1 +%global updatever 2 %global patchver 0 # buildjdkver is usually same as %%{featurever}, # but in time of bootstrap of next jdk, it is featurever-1, @@ -390,7 +390,7 @@ %global origin_nice OpenJDK %global top_level_dir_name %{vcstag} %global top_level_dir_name_backup %{top_level_dir_name}-backup -%global buildver 8 +%global buildver 10 %global rpmrelease 2 #%%global tagsuffix %%{nil} # Priority must be 8 digits in total; up to openjdk 1.8, we were using 18..... so when we moved to 11, we had to add another digit @@ -689,8 +689,9 @@ Patch1001: fips-%{featurever}u-%{fipsver}.patch # OpenJDK patches which missed last update # ############################################# - -# Currently empty +# JDK-8372534: Update Libpng to 1.6.51 +# Integrated in 25.0.3 +Patch2001: jdk8372534-libpng-1.6.51.patch ############################################# # @@ -783,7 +784,7 @@ Provides: bundled(lcms2) = 2.17.0 # Version in src/java.desktop/share/native/libjavajpeg/jpeglib.h Provides: bundled(libjpeg) = 6b # Version in src/java.desktop/share/native/libsplashscreen/libpng/png.h -Provides: bundled(libpng) = 1.6.47 +Provides: bundled(libpng) = 1.6.51 # Version in src/java.base/share/native/libzip/zlib/zlib.h Provides: bundled(zlib) = 1.3.1 # We link statically against libstdc++ to increase portability @@ -1004,6 +1005,8 @@ sh %{SOURCE12} %{top_level_dir_name} pushd %{top_level_dir_name} # Add crypto policy and FIPS support %patch -P1001 -p1 +# Add libpng update ahead of 25.0.3 +%patch -P2001 -p1 popd # openjdk echo "Generating %{alt_java_name} man page" @@ -1723,6 +1726,11 @@ $JAVA_HOME/bin/java -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC -versi $JAVA_HOME/bin/java -Djava.locale.providers=CLDR $(echo $(basename %{SOURCE18})|sed "s|\.java||") CLDR %endif + # Check blocked.certs is valid (OPENJDK-4362) + jtreg_test=$(pwd)/%{top_level_dir_name}/test/jdk/sun/security/lib/CheckBlockedCerts.java + jtreg_dir=$(dirname ${jtreg_test}) + $JAVA_HOME/bin/java --add-exports java.base/sun.security.util=ALL-UNNAMED -Dtest.src=${jtreg_dir} ${jtreg_test} + # Check src.zip has all sources. See RHBZ#1130490 unzip -l $JAVA_HOME/lib/src.zip | grep 'sun.misc.Unsafe' @@ -1966,6 +1974,21 @@ done %endif %changelog +* Mon Jan 12 2026 Andrew Hughes - 1:25.0.2.0.10-2 +- Add JDK-8372534 libpng 1.6.51 ahead of 25.0.3 +- Bump libpng version to 1.6.51 following JDK-8372534 +- Add CVEs for 25.0.2 to NEWS +- Correct version and date for this upcoming release in NEWS +- Related: OPENJDK-4359 + +* Mon Jan 12 2026 Andrew Hughes - 1:25.0.2.0.10-1 +- Update to jdk-25.0.2+10 (GA) +- Update release notes to 25.0.2+10 +- Add test to ensure blocked.certs is valid (OPENJDK-4362) +- ** This tarball is embargoed until 2026-01-20 @ 1pm PT. ** +- Resolves: OPENJDK-4359 +- Resolves: OPENJDK-4362 + * Tue Dec 02 2025 Severin Gehwolf - 1:25.0.1.0.8-2 - Switch from static-libs-image to static-libs-graal-image to avoid large unneeded libjvm.a - Resolves: OPENJDK-4197 diff --git a/SOURCES/jdk8372534-libpng-1.6.51.patch b/SOURCES/jdk8372534-libpng-1.6.51.patch new file mode 100644 index 0000000..20cecc0 --- /dev/null +++ b/SOURCES/jdk8372534-libpng-1.6.51.patch @@ -0,0 +1,1598 @@ +commit cb7fb728d4805ed4e9d62ce31cee7c948f3d5746 +Author: Andrew John Hughes +Date: Wed Dec 17 13:51:51 2025 +0000 + + 8372534: Update Libpng to 1.6.51 + + Backport-of: c7a489db9e4a7d696623fc2155a5504d9d2adb0d + +diff --git a/make/modules/java.desktop/lib/ClientLibraries.gmk b/make/modules/java.desktop/lib/ClientLibraries.gmk +index a69b65180d7..5cb7501b6f4 100644 +--- a/make/modules/java.desktop/lib/ClientLibraries.gmk ++++ b/make/modules/java.desktop/lib/ClientLibraries.gmk +@@ -236,7 +236,7 @@ ifeq ($(ENABLE_HEADLESS_ONLY), false) + DISABLED_WARNINGS_gcc_dgif_lib.c := sign-compare, \ + DISABLED_WARNINGS_gcc_jcmaster.c := implicit-fallthrough, \ + DISABLED_WARNINGS_gcc_jdphuff.c := shift-negative-value, \ +- DISABLED_WARNINGS_gcc_png.c := maybe-uninitialized unused-function, \ ++ DISABLED_WARNINGS_gcc_png.c := maybe-uninitialized, \ + DISABLED_WARNINGS_gcc_pngerror.c := maybe-uninitialized, \ + DISABLED_WARNINGS_gcc_splashscreen_gfx_impl.c := implicit-fallthrough \ + maybe-uninitialized, \ +@@ -247,7 +247,6 @@ ifeq ($(ENABLE_HEADLESS_ONLY), false) + DISABLED_WARNINGS_clang := deprecated-non-prototype, \ + DISABLED_WARNINGS_clang_dgif_lib.c := sign-compare, \ + DISABLED_WARNINGS_clang_gzwrite.c := format-nonliteral, \ +- DISABLED_WARNINGS_clang_png.c := unused-function, \ + DISABLED_WARNINGS_clang_splashscreen_impl.c := sign-compare \ + unused-but-set-variable unused-function, \ + DISABLED_WARNINGS_clang_splashscreen_png.c := \ +diff --git a/src/java.desktop/share/legal/libpng.md b/src/java.desktop/share/legal/libpng.md +index d43ccf2e8e4..8899491c6c0 100644 +--- a/src/java.desktop/share/legal/libpng.md ++++ b/src/java.desktop/share/legal/libpng.md +@@ -1,4 +1,4 @@ +-## libpng v1.6.47 ++## libpng v1.6.51 + + ### libpng License +
+@@ -9,7 +9,7 @@ ### libpng License
+ PNG Reference Library License version 2
+ ---------------------------------------
+ 
+-Copyright (c) 1995-2025 The PNG Reference Library Authors.
++Copyright (C) 1995-2025 The PNG Reference Library Authors.
+ Copyright (C) 2018-2025 Cosmin Truta
+ Copyright (C) 1998-2018 Glenn Randers-Pehrson
+ Copyright (C) 1996-1997 Andreas Dilger
+@@ -173,6 +173,7 @@ ### AUTHORS File Information
+  * Lucas Chollet
+  * Magnus Holmgren
+  * Mandar Sahastrabuddhe
++ * Manfred Schlaegl
+  * Mans Rullgard
+  * Matt Sarett
+  * Mike Klein
+@@ -184,6 +185,7 @@ ### AUTHORS File Information
+  * Samuel Williams
+  * Simon-Pierre Cadieux
+  * Tim Wegner
++ * Tobias Stoeckmann
+  * Tom Lane
+  * Tom Tanner
+  * Vadim Barkov
+@@ -193,8 +195,9 @@ ### AUTHORS File Information
+     - Zixu Wang (王子旭)
+  * Arm Holdings
+     - Richard Townsend
+- * Google Inc.
++ * Google LLC
+     - Dan Field
++    - Dragoș Tiselice
+     - Leon Scroggins III
+     - Matt Sarett
+     - Mike Klein
+@@ -204,6 +207,8 @@ ### AUTHORS File Information
+     - GuXiWei (顾希伟)
+     - JinBo (金波)
+     - ZhangLixia (张利霞)
++ * Samsung Group
++    - Filip Wasil
+ 
+ The build projects, the build scripts, the test scripts, and other
+ files in the "projects", "scripts" and "tests" directories, have
+@@ -214,3 +219,4 @@ ### AUTHORS File Information
+ other copyright owners, and are released under other open source
+ licenses.
+ ```
++
+diff --git a/src/java.desktop/share/native/libsplashscreen/libpng/CHANGES b/src/java.desktop/share/native/libsplashscreen/libpng/CHANGES
+index 834b5e19277..2478fd0fc08 100644
+--- a/src/java.desktop/share/native/libsplashscreen/libpng/CHANGES
++++ b/src/java.desktop/share/native/libsplashscreen/libpng/CHANGES
+@@ -6251,6 +6251,59 @@ Version 1.6.47 [February 18, 2025]
+     colorspace precedence rules, due to pre-existing colorspace checks.
+     (Reported by Bob Friesenhahn; fixed by John Bowler)
+ 
++Version 1.6.48 [April 30, 2025]
++  Fixed the floating-point version of the mDCv setter `png_set_mDCv`.
++    (Reported by Mohit Bakshi; fixed by John Bowler)
++  Added #error directives to discourage the inclusion of private
++    libpng implementation header files in PNG-supporting applications.
++  Added the CMake build option `PNG_LIBCONF_HEADER`, to be used as an
++    alternative to `DFA_XTRA`.
++  Removed the Travis CI configuration files, with heartfelt thanks for
++    their generous support of our project over the past five years!
++
++Version 1.6.49 [June 12, 2025]
++  Added SIMD-optimized code for the RISC-V Vector Extension (RVV).
++    (Contributed by Manfred Schlaegl, Dragos Tiselice and Filip Wasil)
++  Added various fixes and improvements to the build scripts and to
++    the sample code.
++
++Version 1.6.50 [July 1, 2025]
++  Improved the detection of the RVV Extension on the RISC-V platform.
++    (Contributed by Filip Wasil)
++  Replaced inline ASM with C intrinsics in the RVV code.
++    (Contributed by Filip Wasil)
++  Fixed a decoder defect in which unknown chunks trailing IDAT, set
++    to go through the unknown chunk handler, incorrectly triggered
++    out-of-place IEND errors.
++    (Contributed by John Bowler)
++  Fixed the CMake file for cross-platform builds that require `libm`.
++
++Version 1.6.51 [November 21, 2025]
++  Fixed CVE-2025-64505 (moderate severity):
++    Heap buffer overflow in `png_do_quantize` via malformed palette index.
++    (Reported by Samsung; analyzed by Fabio Gritti.)
++  Fixed CVE-2025-64506 (moderate severity):
++    Heap buffer over-read in `png_write_image_8bit` with 8-bit input and
++    `convert_to_8bit` enabled.
++    (Reported by Samsung and ;
++    analyzed by Fabio Gritti.)
++  Fixed CVE-2025-64720 (high severity):
++    Buffer overflow in `png_image_read_composite` via incorrect palette
++    premultiplication.
++    (Reported by Samsung; analyzed by John Bowler.)
++  Fixed CVE-2025-65018 (high severity):
++    Heap buffer overflow in `png_combine_row` triggered via
++    `png_image_finish_read`.
++    (Reported by .)
++  Fixed a memory leak in `png_set_quantize`.
++    (Reported by Samsung; analyzed by Fabio Gritti.)
++  Removed the experimental and incomplete ERROR_NUMBERS code.
++    (Contributed by Tobias Stoeckmann.)
++  Improved the RISC-V vector extension support; required RVV 1.0 or newer.
++    (Contributed by Filip Wasil.)
++  Added GitHub Actions workflows for automated testing.
++  Performed various refactorings and cleanups.
++
+ Send comments/corrections/commendations to png-mng-implement at lists.sf.net.
+ Subscription is required; visit
+ https://lists.sourceforge.net/lists/listinfo/png-mng-implement
+diff --git a/src/java.desktop/share/native/libsplashscreen/libpng/README b/src/java.desktop/share/native/libsplashscreen/libpng/README
+index 57952fb215a..5ea329ee3da 100644
+--- a/src/java.desktop/share/native/libsplashscreen/libpng/README
++++ b/src/java.desktop/share/native/libsplashscreen/libpng/README
+@@ -1,4 +1,4 @@
+-README for libpng version 1.6.47
++README for libpng version 1.6.51
+ ================================
+ 
+ See the note about version numbers near the top of `png.h`.
+@@ -147,6 +147,7 @@ Files included in this distribution
+     loongarch/    =>  Optimized code for LoongArch LSX
+     mips/         =>  Optimized code for MIPS MSA and MIPS MMI
+     powerpc/      =>  Optimized code for PowerPC VSX
++    riscv/        =>  Optimized code for the RISC-V platform
+     ci/           =>  Scripts for continuous integration
+     contrib/      =>  External contributions
+         arm-neon/     =>  Optimized code for the ARM-NEON platform
+@@ -162,6 +163,7 @@ Files included in this distribution
+                           programs demonstrating the use of pngusr.dfa
+         pngminus/     =>  Simple pnm2png and png2pnm programs
+         pngsuite/     =>  Test images
++        riscv-rvv/    =>  Optimized code for the RISC-V Vector platform
+         testpngs/     =>  Test images
+         tools/        =>  Various tools
+         visupng/      =>  VisualPng, a Windows viewer for PNG images
+diff --git a/src/java.desktop/share/native/libsplashscreen/libpng/png.c b/src/java.desktop/share/native/libsplashscreen/libpng/png.c
+index 7b6de2f8ec3..7d85e7c8d5f 100644
+--- a/src/java.desktop/share/native/libsplashscreen/libpng/png.c
++++ b/src/java.desktop/share/native/libsplashscreen/libpng/png.c
+@@ -42,7 +42,7 @@
+ #include "pngpriv.h"
+ 
+ /* Generate a compiler error if there is an old png.h in the search path. */
+-typedef png_libpng_version_1_6_47 Your_png_h_is_not_version_1_6_47;
++typedef png_libpng_version_1_6_51 Your_png_h_is_not_version_1_6_51;
+ 
+ /* Sanity check the chunks definitions - PNG_KNOWN_CHUNKS from pngpriv.h and the
+  * corresponding macro definitions.  This causes a compile time failure if
+@@ -137,10 +137,16 @@ png_zalloc,(voidpf png_ptr, uInt items, uInt size),PNG_ALLOCATED)
+    if (png_ptr == NULL)
+       return NULL;
+ 
+-   if (items >= (~(png_alloc_size_t)0)/size)
++   /* This check against overflow is vestigial, dating back from
++    * the old times when png_zalloc used to be an exported function.
++    * We're still keeping it here for now, as an extra-cautious
++    * prevention against programming errors inside zlib, although it
++    * should rather be a debug-time assertion instead.
++    */
++   if (size != 0 && items >= (~(png_alloc_size_t)0) / size)
+    {
+-      png_warning (png_voidcast(png_structrp, png_ptr),
+-          "Potential overflow in png_zalloc()");
++      png_warning(png_voidcast(png_structrp, png_ptr),
++                  "Potential overflow in png_zalloc()");
+       return NULL;
+    }
+ 
+@@ -267,10 +273,6 @@ png_user_version_check(png_structrp png_ptr, png_const_charp user_png_ver)
+       png_warning(png_ptr, m);
+ #endif
+ 
+-#ifdef PNG_ERROR_NUMBERS_SUPPORTED
+-      png_ptr->flags = 0;
+-#endif
+-
+       return 0;
+    }
+ 
+@@ -729,7 +731,7 @@ png_get_io_ptr(png_const_structrp png_ptr)
+  * function of your own because "FILE *" isn't necessarily available.
+  */
+ void PNGAPI
+-png_init_io(png_structrp png_ptr, png_FILE_p fp)
++png_init_io(png_structrp png_ptr, FILE *fp)
+ {
+    png_debug(1, "in png_init_io");
+ 
+@@ -844,7 +846,7 @@ png_get_copyright(png_const_structrp png_ptr)
+    return PNG_STRING_COPYRIGHT
+ #else
+    return PNG_STRING_NEWLINE \
+-      "libpng version 1.6.47" PNG_STRING_NEWLINE \
++      "libpng version 1.6.51" PNG_STRING_NEWLINE \
+       "Copyright (c) 2018-2025 Cosmin Truta" PNG_STRING_NEWLINE \
+       "Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson" \
+       PNG_STRING_NEWLINE \
+@@ -1520,7 +1522,7 @@ png_XYZ_from_xy(png_XYZ *XYZ, const png_xy *xy)
+ }
+ #endif /* COLORSPACE */
+ 
+-#ifdef PNG_iCCP_SUPPORTED
++#ifdef PNG_READ_iCCP_SUPPORTED
+ /* Error message generation */
+ static char
+ png_icc_tag_char(png_uint_32 byte)
+@@ -1596,9 +1598,7 @@ png_icc_profile_error(png_const_structrp png_ptr, png_const_charp name,
+ 
+    return 0;
+ }
+-#endif /* iCCP */
+ 
+-#ifdef PNG_READ_iCCP_SUPPORTED
+ /* Encoded value of D50 as an ICC XYZNumber.  From the ICC 2010 spec the value
+  * is XYZ(0.9642,1.0,0.8249), which scales to:
+  *
+@@ -3998,7 +3998,7 @@ png_image_free_function(png_voidp argument)
+ #  ifdef PNG_STDIO_SUPPORTED
+       if (cp->owned_file != 0)
+       {
+-         FILE *fp = png_voidcast(FILE*, cp->png_ptr->io_ptr);
++         FILE *fp = png_voidcast(FILE *, cp->png_ptr->io_ptr);
+          cp->owned_file = 0;
+ 
+          /* Ignore errors here. */
+diff --git a/src/java.desktop/share/native/libsplashscreen/libpng/png.h b/src/java.desktop/share/native/libsplashscreen/libpng/png.h
+index ede12c34fe6..d39ff73552c 100644
+--- a/src/java.desktop/share/native/libsplashscreen/libpng/png.h
++++ b/src/java.desktop/share/native/libsplashscreen/libpng/png.h
+@@ -29,7 +29,7 @@
+  * However, the following notice accompanied the original version of this
+  * file and, per its terms, should not be removed:
+  *
+- * libpng version 1.6.47
++ * libpng version 1.6.51
+  *
+  * Copyright (c) 2018-2025 Cosmin Truta
+  * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
+@@ -43,7 +43,7 @@
+  *   libpng versions 0.89, June 1996, through 0.96, May 1997: Andreas Dilger
+  *   libpng versions 0.97, January 1998, through 1.6.35, July 2018:
+  *     Glenn Randers-Pehrson
+- *   libpng versions 1.6.36, December 2018, through 1.6.47, February 2025:
++ *   libpng versions 1.6.36, December 2018, through 1.6.51, November 2025:
+  *     Cosmin Truta
+  *   See also "Contributing Authors", below.
+  */
+@@ -267,7 +267,7 @@
+  *    ...
+  *    1.5.30                  15    10530  15.so.15.30[.0]
+  *    ...
+- *    1.6.47                  16    10647  16.so.16.47[.0]
++ *    1.6.51                  16    10651  16.so.16.51[.0]
+  *
+  *    Henceforth the source version will match the shared-library major and
+  *    minor numbers; the shared-library major version number will be used for
+@@ -303,7 +303,7 @@
+  */
+ 
+ /* Version information for png.h - this should match the version in png.c */
+-#define PNG_LIBPNG_VER_STRING "1.6.47"
++#define PNG_LIBPNG_VER_STRING "1.6.51"
+ #define PNG_HEADER_VERSION_STRING " libpng version " PNG_LIBPNG_VER_STRING "\n"
+ 
+ /* The versions of shared library builds should stay in sync, going forward */
+@@ -314,7 +314,7 @@
+ /* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */
+ #define PNG_LIBPNG_VER_MAJOR   1
+ #define PNG_LIBPNG_VER_MINOR   6
+-#define PNG_LIBPNG_VER_RELEASE 47
++#define PNG_LIBPNG_VER_RELEASE 51
+ 
+ /* This should be zero for a public release, or non-zero for a
+  * development version.
+@@ -345,7 +345,7 @@
+  * From version 1.0.1 it is:
+  * XXYYZZ, where XX=major, YY=minor, ZZ=release
+  */
+-#define PNG_LIBPNG_VER 10647 /* 1.6.47 */
++#define PNG_LIBPNG_VER 10651 /* 1.6.51 */
+ 
+ /* Library configuration: these options cannot be changed after
+  * the library has been built.
+@@ -455,7 +455,7 @@ extern "C" {
+ /* This triggers a compiler error in png.c, if png.c and png.h
+  * do not agree upon the version number.
+  */
+-typedef char* png_libpng_version_1_6_47;
++typedef char* png_libpng_version_1_6_51;
+ 
+ /* Basic control structions.  Read libpng-manual.txt or libpng.3 for more info.
+  *
+@@ -1599,7 +1599,7 @@ PNG_EXPORT(226, void, png_set_text_compression_method, (png_structrp png_ptr,
+ 
+ #ifdef PNG_STDIO_SUPPORTED
+ /* Initialize the input/output for the PNG file to the default functions. */
+-PNG_EXPORT(74, void, png_init_io, (png_structrp png_ptr, png_FILE_p fp));
++PNG_EXPORT(74, void, png_init_io, (png_structrp png_ptr, FILE *fp));
+ #endif
+ 
+ /* Replace the (error and abort), and warning functions with user
+@@ -3117,7 +3117,7 @@ PNG_EXPORT(234, int, png_image_begin_read_from_file, (png_imagep image,
+     */
+ 
+ PNG_EXPORT(235, int, png_image_begin_read_from_stdio, (png_imagep image,
+-   FILE* file));
++   FILE *file));
+    /* The PNG header is read from the stdio FILE object. */
+ #endif /* STDIO */
+ 
+@@ -3192,7 +3192,7 @@ PNG_EXPORT(239, int, png_image_write_to_file, (png_imagep image,
+ PNG_EXPORT(240, int, png_image_write_to_stdio, (png_imagep image, FILE *file,
+    int convert_to_8_bit, const void *buffer, png_int_32 row_stride,
+    const void *colormap));
+-   /* Write the image to the given (FILE*). */
++   /* Write the image to the given FILE object. */
+ #endif /* SIMPLIFIED_WRITE_STDIO */
+ 
+ /* With all write APIs if image is in one of the linear formats with 16-bit
+@@ -3332,26 +3332,45 @@ PNG_EXPORT(245, int, png_image_write_to_memory, (png_imagep image, void *memory,
+  *           selected at run time.
+  */
+ #ifdef PNG_SET_OPTION_SUPPORTED
++
++/* HARDWARE: ARM Neon SIMD instructions supported */
+ #ifdef PNG_ARM_NEON_API_SUPPORTED
+-#  define PNG_ARM_NEON   0 /* HARDWARE: ARM Neon SIMD instructions supported */
++#  define PNG_ARM_NEON 0
+ #endif
+-#define PNG_MAXIMUM_INFLATE_WINDOW 2 /* SOFTWARE: force maximum window */
+-#define PNG_SKIP_sRGB_CHECK_PROFILE 4 /* SOFTWARE: Check ICC profile for sRGB */
++
++/* SOFTWARE: Force maximum window */
++#define PNG_MAXIMUM_INFLATE_WINDOW 2
++
++/* SOFTWARE: Check ICC profile for sRGB */
++#define PNG_SKIP_sRGB_CHECK_PROFILE 4
++
++/* HARDWARE: MIPS MSA SIMD instructions supported */
+ #ifdef PNG_MIPS_MSA_API_SUPPORTED
+-#  define PNG_MIPS_MSA   6 /* HARDWARE: MIPS Msa SIMD instructions supported */
++#  define PNG_MIPS_MSA 6
+ #endif
++
++/* SOFTWARE: Disable Adler32 check on IDAT */
+ #ifdef PNG_DISABLE_ADLER32_CHECK_SUPPORTED
+-#  define PNG_IGNORE_ADLER32 8 /* SOFTWARE: disable Adler32 check on IDAT */
++#  define PNG_IGNORE_ADLER32 8
+ #endif
++
++/* HARDWARE: PowerPC VSX SIMD instructions supported */
+ #ifdef PNG_POWERPC_VSX_API_SUPPORTED
+-#  define PNG_POWERPC_VSX   10 /* HARDWARE: PowerPC VSX SIMD instructions
+-                                * supported */
++#  define PNG_POWERPC_VSX 10
+ #endif
++
++/* HARDWARE: MIPS MMI SIMD instructions supported */
+ #ifdef PNG_MIPS_MMI_API_SUPPORTED
+-#  define PNG_MIPS_MMI   12 /* HARDWARE: MIPS MMI SIMD instructions supported */
++#  define PNG_MIPS_MMI 12
++#endif
++
++/* HARDWARE: RISC-V RVV SIMD instructions supported */
++#ifdef PNG_RISCV_RVV_API_SUPPORTED
++#  define PNG_RISCV_RVV 14
+ #endif
+ 
+-#define PNG_OPTION_NEXT  14 /* Next option - numbers must be even */
++/* Next option - numbers must be even */
++#define PNG_OPTION_NEXT 16
+ 
+ /* Return values: NOTE: there are four values and 'off' is *not* zero */
+ #define PNG_OPTION_UNSET   0 /* Unset - defaults to off */
+diff --git a/src/java.desktop/share/native/libsplashscreen/libpng/pngconf.h b/src/java.desktop/share/native/libsplashscreen/libpng/pngconf.h
+index 70bca6fa1c9..4bc5f7bb468 100644
+--- a/src/java.desktop/share/native/libsplashscreen/libpng/pngconf.h
++++ b/src/java.desktop/share/native/libsplashscreen/libpng/pngconf.h
+@@ -29,7 +29,7 @@
+  * However, the following notice accompanied the original version of this
+  * file and, per its terms, should not be removed:
+  *
+- * libpng version 1.6.47
++ * libpng version 1.6.51
+  *
+  * Copyright (c) 2018-2025 Cosmin Truta
+  * Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson
+@@ -248,25 +248,13 @@
+   /* NOTE: PNGCBAPI always defaults to PNGCAPI. */
+ 
+ #  if defined(PNGAPI) && !defined(PNG_USER_PRIVATEBUILD)
+-#     error "PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed"
++#     error PNG_USER_PRIVATEBUILD must be defined if PNGAPI is changed
+ #  endif
+ 
+-#  if (defined(_MSC_VER) && _MSC_VER < 800) ||\
+-      (defined(__BORLANDC__) && __BORLANDC__ < 0x500)
+-   /* older Borland and MSC
+-    * compilers used '__export' and required this to be after
+-    * the type.
+-    */
+-#    ifndef PNG_EXPORT_TYPE
+-#      define PNG_EXPORT_TYPE(type) type PNG_IMPEXP
+-#    endif
+-#    define PNG_DLL_EXPORT __export
+-#  else /* newer compiler */
+-#    define PNG_DLL_EXPORT __declspec(dllexport)
+-#    ifndef PNG_DLL_IMPORT
+-#      define PNG_DLL_IMPORT __declspec(dllimport)
+-#    endif
+-#  endif /* compiler */
++#  define PNG_DLL_EXPORT __declspec(dllexport)
++#  ifndef PNG_DLL_IMPORT
++#    define PNG_DLL_IMPORT __declspec(dllimport)
++#  endif
+ 
+ #else /* !Windows */
+ #  if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__)
+@@ -508,7 +496,7 @@
+ #if CHAR_BIT == 8 && UCHAR_MAX == 255
+    typedef unsigned char png_byte;
+ #else
+-#  error "libpng requires 8-bit bytes"
++#  error libpng requires 8-bit bytes
+ #endif
+ 
+ #if INT_MIN == -32768 && INT_MAX == 32767
+@@ -516,7 +504,7 @@
+ #elif SHRT_MIN == -32768 && SHRT_MAX == 32767
+    typedef short png_int_16;
+ #else
+-#  error "libpng requires a signed 16-bit type"
++#  error libpng requires a signed 16-bit integer type
+ #endif
+ 
+ #if UINT_MAX == 65535
+@@ -524,7 +512,7 @@
+ #elif USHRT_MAX == 65535
+    typedef unsigned short png_uint_16;
+ #else
+-#  error "libpng requires an unsigned 16-bit type"
++#  error libpng requires an unsigned 16-bit integer type
+ #endif
+ 
+ #if INT_MIN < -2147483646 && INT_MAX > 2147483646
+@@ -532,7 +520,7 @@
+ #elif LONG_MIN < -2147483646 && LONG_MAX > 2147483646
+    typedef long int png_int_32;
+ #else
+-#  error "libpng requires a signed 32-bit (or more) type"
++#  error libpng requires a signed 32-bit (or longer) integer type
+ #endif
+ 
+ #if UINT_MAX > 4294967294U
+@@ -540,7 +528,7 @@
+ #elif ULONG_MAX > 4294967294U
+    typedef unsigned long int png_uint_32;
+ #else
+-#  error "libpng requires an unsigned 32-bit (or more) type"
++#  error libpng requires an unsigned 32-bit (or longer) integer type
+ #endif
+ 
+ /* Prior to 1.6.0, it was possible to disable the use of size_t and ptrdiff_t.
+@@ -621,10 +609,6 @@ typedef const png_fixed_point * png_const_fixed_point_p;
+ typedef size_t                * png_size_tp;
+ typedef const size_t          * png_const_size_tp;
+ 
+-#ifdef PNG_STDIO_SUPPORTED
+-typedef FILE            * png_FILE_p;
+-#endif
+-
+ #ifdef PNG_FLOATING_POINT_SUPPORTED
+ typedef double       * png_doublep;
+ typedef const double * png_const_doublep;
+@@ -646,6 +630,15 @@ typedef double          * * png_doublepp;
+ /* Pointers to pointers to pointers; i.e., pointer to array */
+ typedef char            * * * png_charppp;
+ 
++#ifdef PNG_STDIO_SUPPORTED
++/* With PNG_STDIO_SUPPORTED it was possible to use I/O streams that were
++ * not necessarily stdio FILE streams, to allow building Windows applications
++ * before Win32 and Windows CE applications before WinCE 3.0, but that kind
++ * of support has long been discontinued.
++ */
++typedef FILE            * png_FILE_p; /* [Deprecated] */
++#endif
++
+ #endif /* PNG_BUILDING_SYMBOL_TABLE */
+ 
+ #endif /* PNGCONF_H */
+diff --git a/src/java.desktop/share/native/libsplashscreen/libpng/pngdebug.h b/src/java.desktop/share/native/libsplashscreen/libpng/pngdebug.h
+index 8eb5400ea9a..6ea2644dfcd 100644
+--- a/src/java.desktop/share/native/libsplashscreen/libpng/pngdebug.h
++++ b/src/java.desktop/share/native/libsplashscreen/libpng/pngdebug.h
+@@ -22,14 +22,14 @@
+  * questions.
+  */
+ 
+-/* pngdebug.h - Debugging macros for libpng, also used in pngtest.c
++/* pngdebug.h - internal debugging macros for libpng
+  *
+  * This file is available under and governed by the GNU General Public
+  * License version 2 only, as published by the Free Software Foundation.
+  * However, the following notice accompanied the original version of this
+  * file and, per its terms, should not be removed:
+  *
+- * Copyright (c) 2018 Cosmin Truta
++ * Copyright (c) 2018-2025 Cosmin Truta
+  * Copyright (c) 1998-2002,2004,2006-2013 Glenn Randers-Pehrson
+  * Copyright (c) 1996-1997 Andreas Dilger
+  * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
+@@ -39,6 +39,10 @@
+  * and license in png.h
+  */
+ 
++#ifndef PNGPRIV_H
++#  error This file must not be included by applications; please include 
++#endif
++
+ /* Define PNG_DEBUG at compile time for debugging information.  Higher
+  * numbers for PNG_DEBUG mean more debugging information.  This has
+  * only been added since version 0.95 so it is not implemented throughout
+@@ -63,9 +67,6 @@
+ #define PNGDEBUG_H
+ /* These settings control the formatting of messages in png.c and pngerror.c */
+ /* Moved to pngdebug.h at 1.5.0 */
+-#  ifndef PNG_LITERAL_SHARP
+-#    define PNG_LITERAL_SHARP 0x23
+-#  endif
+ #  ifndef PNG_LITERAL_LEFT_SQUARE_BRACKET
+ #    define PNG_LITERAL_LEFT_SQUARE_BRACKET 0x5b
+ #  endif
+diff --git a/src/java.desktop/share/native/libsplashscreen/libpng/pngerror.c b/src/java.desktop/share/native/libsplashscreen/libpng/pngerror.c
+index ea0103331d3..44c86ebfef9 100644
+--- a/src/java.desktop/share/native/libsplashscreen/libpng/pngerror.c
++++ b/src/java.desktop/share/native/libsplashscreen/libpng/pngerror.c
+@@ -29,7 +29,7 @@
+  * However, the following notice accompanied the original version of this
+  * file and, per its terms, should not be removed:
+  *
+- * Copyright (c) 2018-2024 Cosmin Truta
++ * Copyright (c) 2018-2025 Cosmin Truta
+  * Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
+  * Copyright (c) 1996-1997 Andreas Dilger
+  * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
+@@ -68,46 +68,6 @@ PNG_FUNCTION(void,PNGAPI
+ png_error,(png_const_structrp png_ptr, png_const_charp error_message),
+     PNG_NORETURN)
+ {
+-#ifdef PNG_ERROR_NUMBERS_SUPPORTED
+-   char msg[16];
+-   if (png_ptr != NULL)
+-   {
+-      if ((png_ptr->flags &
+-         (PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT)) != 0)
+-      {
+-         if (*error_message == PNG_LITERAL_SHARP)
+-         {
+-            /* Strip "#nnnn " from beginning of error message. */
+-            int offset;
+-            for (offset = 1; offset<15; offset++)
+-               if (error_message[offset] == ' ')
+-                  break;
+-
+-            if ((png_ptr->flags & PNG_FLAG_STRIP_ERROR_TEXT) != 0)
+-            {
+-               int i;
+-               for (i = 0; i < offset - 1; i++)
+-                  msg[i] = error_message[i + 1];
+-               msg[i - 1] = '\0';
+-               error_message = msg;
+-            }
+-
+-            else
+-               error_message += offset;
+-         }
+-
+-         else
+-         {
+-            if ((png_ptr->flags & PNG_FLAG_STRIP_ERROR_TEXT) != 0)
+-            {
+-               msg[0] = '0';
+-               msg[1] = '\0';
+-               error_message = msg;
+-            }
+-         }
+-      }
+-   }
+-#endif
+    if (png_ptr != NULL && png_ptr->error_fn != NULL)
+       (*(png_ptr->error_fn))(png_constcast(png_structrp,png_ptr),
+           error_message);
+@@ -245,21 +205,6 @@ void PNGAPI
+ png_warning(png_const_structrp png_ptr, png_const_charp warning_message)
+ {
+    int offset = 0;
+-   if (png_ptr != NULL)
+-   {
+-#ifdef PNG_ERROR_NUMBERS_SUPPORTED
+-   if ((png_ptr->flags &
+-       (PNG_FLAG_STRIP_ERROR_NUMBERS|PNG_FLAG_STRIP_ERROR_TEXT)) != 0)
+-#endif
+-      {
+-         if (*warning_message == PNG_LITERAL_SHARP)
+-         {
+-            for (offset = 1; offset < 15; offset++)
+-               if (warning_message[offset] == ' ')
+-                  break;
+-         }
+-      }
+-   }
+    if (png_ptr != NULL && png_ptr->warning_fn != NULL)
+       (*(png_ptr->warning_fn))(png_constcast(png_structrp,png_ptr),
+           warning_message + offset);
+@@ -741,42 +686,9 @@ png_default_error,(png_const_structrp png_ptr, png_const_charp error_message),
+     PNG_NORETURN)
+ {
+ #ifdef PNG_CONSOLE_IO_SUPPORTED
+-#ifdef PNG_ERROR_NUMBERS_SUPPORTED
+-   /* Check on NULL only added in 1.5.4 */
+-   if (error_message != NULL && *error_message == PNG_LITERAL_SHARP)
+-   {
+-      /* Strip "#nnnn " from beginning of error message. */
+-      int offset;
+-      char error_number[16];
+-      for (offset = 0; offset<15; offset++)
+-      {
+-         error_number[offset] = error_message[offset + 1];
+-         if (error_message[offset] == ' ')
+-            break;
+-      }
+-
+-      if ((offset > 1) && (offset < 15))
+-      {
+-         error_number[offset - 1] = '\0';
+-         fprintf(stderr, "libpng error no. %s: %s",
+-             error_number, error_message + offset + 1);
+-         fprintf(stderr, PNG_STRING_NEWLINE);
+-      }
+-
+-      else
+-      {
+-         fprintf(stderr, "libpng error: %s, offset=%d",
+-             error_message, offset);
+-         fprintf(stderr, PNG_STRING_NEWLINE);
+-      }
+-   }
+-   else
+-#endif
+-   {
+-      fprintf(stderr, "libpng error: %s", error_message ? error_message :
+-         "undefined");
+-      fprintf(stderr, PNG_STRING_NEWLINE);
+-   }
++   fprintf(stderr, "libpng error: %s", error_message ? error_message :
++      "undefined");
++   fprintf(stderr, PNG_STRING_NEWLINE);
+ #else
+    PNG_UNUSED(error_message) /* Make compiler happy */
+ #endif
+@@ -814,40 +726,8 @@ static void /* PRIVATE */
+ png_default_warning(png_const_structrp png_ptr, png_const_charp warning_message)
+ {
+ #ifdef PNG_CONSOLE_IO_SUPPORTED
+-#  ifdef PNG_ERROR_NUMBERS_SUPPORTED
+-   if (*warning_message == PNG_LITERAL_SHARP)
+-   {
+-      int offset;
+-      char warning_number[16];
+-      for (offset = 0; offset < 15; offset++)
+-      {
+-         warning_number[offset] = warning_message[offset + 1];
+-         if (warning_message[offset] == ' ')
+-            break;
+-      }
+-
+-      if ((offset > 1) && (offset < 15))
+-      {
+-         warning_number[offset + 1] = '\0';
+-         fprintf(stderr, "libpng warning no. %s: %s",
+-             warning_number, warning_message + offset);
+-         fprintf(stderr, PNG_STRING_NEWLINE);
+-      }
+-
+-      else
+-      {
+-         fprintf(stderr, "libpng warning: %s",
+-             warning_message);
+-         fprintf(stderr, PNG_STRING_NEWLINE);
+-      }
+-   }
+-   else
+-#  endif
+-
+-   {
+-      fprintf(stderr, "libpng warning: %s", warning_message);
+-      fprintf(stderr, PNG_STRING_NEWLINE);
+-   }
++   fprintf(stderr, "libpng warning: %s", warning_message);
++   fprintf(stderr, PNG_STRING_NEWLINE);
+ #else
+    PNG_UNUSED(warning_message) /* Make compiler happy */
+ #endif
+@@ -895,12 +775,8 @@ png_get_error_ptr(png_const_structrp png_ptr)
+ void PNGAPI
+ png_set_strip_error_numbers(png_structrp png_ptr, png_uint_32 strip_mode)
+ {
+-   if (png_ptr != NULL)
+-   {
+-      png_ptr->flags &=
+-         ((~(PNG_FLAG_STRIP_ERROR_NUMBERS |
+-         PNG_FLAG_STRIP_ERROR_TEXT))&strip_mode);
+-   }
++   PNG_UNUSED(png_ptr)
++   PNG_UNUSED(strip_mode)
+ }
+ #endif
+ 
+diff --git a/src/java.desktop/share/native/libsplashscreen/libpng/pngget.c b/src/java.desktop/share/native/libsplashscreen/libpng/pngget.c
+index d67adbae247..ed2e7f886f5 100644
+--- a/src/java.desktop/share/native/libsplashscreen/libpng/pngget.c
++++ b/src/java.desktop/share/native/libsplashscreen/libpng/pngget.c
+@@ -29,7 +29,7 @@
+  * However, the following notice accompanied the original version of this
+  * file and, per its terms, should not be removed:
+  *
+- * Copyright (c) 2018-2024 Cosmin Truta
++ * Copyright (c) 2018-2025 Cosmin Truta
+  * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
+  * Copyright (c) 1996-1997 Andreas Dilger
+  * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
+diff --git a/src/java.desktop/share/native/libsplashscreen/libpng/pnginfo.h b/src/java.desktop/share/native/libsplashscreen/libpng/pnginfo.h
+index bc6ed3d09c9..c79c6cc780f 100644
+--- a/src/java.desktop/share/native/libsplashscreen/libpng/pnginfo.h
++++ b/src/java.desktop/share/native/libsplashscreen/libpng/pnginfo.h
+@@ -22,14 +22,14 @@
+  * questions.
+  */
+ 
+-/* pnginfo.h - header file for PNG reference library
++/* pnginfo.h - internal structures for libpng
+  *
+  * This file is available under and governed by the GNU General Public
+  * License version 2 only, as published by the Free Software Foundation.
+  * However, the following notice accompanied the original version of this
+  * file and, per its terms, should not be removed:
+  *
+- * Copyright (c) 2018 Cosmin Truta
++ * Copyright (c) 2018-2025 Cosmin Truta
+  * Copyright (c) 1998-2002,2004,2006-2013,2018 Glenn Randers-Pehrson
+  * Copyright (c) 1996-1997 Andreas Dilger
+  * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
+@@ -39,43 +39,20 @@
+  * and license in png.h
+  */
+ 
+- /* png_info is a structure that holds the information in a PNG file so
+- * that the application can find out the characteristics of the image.
+- * If you are reading the file, this structure will tell you what is
+- * in the PNG file.  If you are writing the file, fill in the information
+- * you want to put into the PNG file, using png_set_*() functions, then
+- * call png_write_info().
+- *
+- * The names chosen should be very close to the PNG specification, so
+- * consult that document for information about the meaning of each field.
+- *
+- * With libpng < 0.95, it was only possible to directly set and read the
+- * the values in the png_info_struct, which meant that the contents and
+- * order of the values had to remain fixed.  With libpng 0.95 and later,
+- * however, there are now functions that abstract the contents of
+- * png_info_struct from the application, so this makes it easier to use
+- * libpng with dynamic libraries, and even makes it possible to use
+- * libraries that don't have all of the libpng ancillary chunk-handing
+- * functionality.  In libpng-1.5.0 this was moved into a separate private
+- * file that is not visible to applications.
++#ifndef PNGPRIV_H
++#  error This file must not be included by applications; please include 
++#endif
++
++/* INTERNAL, PRIVATE definition of a PNG.
+  *
+- * The following members may have allocated storage attached that should be
+- * cleaned up before the structure is discarded: palette, trans, text,
+- * pcal_purpose, pcal_units, pcal_params, hist, iccp_name, iccp_profile,
+- * splt_palettes, scal_unit, row_pointers, and unknowns.   By default, these
+- * are automatically freed when the info structure is deallocated, if they were
+- * allocated internally by libpng.  This behavior can be changed by means
+- * of the png_data_freer() function.
++ * png_info is a modifiable description of a PNG datastream.  The fields inside
++ * this structure are accessed through png_get_() functions and modified
++ * using png_set_() functions.
+  *
+- * More allocation details: all the chunk-reading functions that
+- * change these members go through the corresponding png_set_*
+- * functions.  A function to clear these members is available: see
+- * png_free_data().  The png_set_* functions do not depend on being
+- * able to point info structure members to any of the storage they are
+- * passed (they make their own copies), EXCEPT that the png_set_text
+- * functions use the same storage passed to them in the text_ptr or
+- * itxt_ptr structure argument, and the png_set_rows and png_set_unknowns
+- * functions do not make their own copies.
++ * Some functions in libpng do directly access members of png_info.  However,
++ * this should be avoided.  png_struct objects contain members which hold
++ * caches, sometimes optimised, of the values from png_info objects, and
++ * png_info is not passed to the functions which read and write image data.
+  */
+ #ifndef PNGINFO_H
+ #define PNGINFO_H
+diff --git a/src/java.desktop/share/native/libsplashscreen/libpng/pnglibconf.h b/src/java.desktop/share/native/libsplashscreen/libpng/pnglibconf.h
+index 906f855db0e..4cfae474751 100644
+--- a/src/java.desktop/share/native/libsplashscreen/libpng/pnglibconf.h
++++ b/src/java.desktop/share/native/libsplashscreen/libpng/pnglibconf.h
+@@ -31,7 +31,7 @@
+  * However, the following notice accompanied the original version of this
+  * file and, per its terms, should not be removed:
+  */
+-/* libpng version 1.6.47 */
++/* libpng version 1.6.51 */
+ 
+ /* Copyright (c) 2018-2025 Cosmin Truta */
+ /* Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson */
+diff --git a/src/java.desktop/share/native/libsplashscreen/libpng/pngmem.c b/src/java.desktop/share/native/libsplashscreen/libpng/pngmem.c
+index ba9eb4df402..12b71bcbc02 100644
+--- a/src/java.desktop/share/native/libsplashscreen/libpng/pngmem.c
++++ b/src/java.desktop/share/native/libsplashscreen/libpng/pngmem.c
+@@ -29,7 +29,7 @@
+  * However, the following notice accompanied the original version of this
+  * file and, per its terms, should not be removed:
+  *
+- * Copyright (c) 2018 Cosmin Truta
++ * Copyright (c) 2018-2025 Cosmin Truta
+  * Copyright (c) 1998-2002,2004,2006-2014,2016 Glenn Randers-Pehrson
+  * Copyright (c) 1996-1997 Andreas Dilger
+  * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
+diff --git a/src/java.desktop/share/native/libsplashscreen/libpng/pngpread.c b/src/java.desktop/share/native/libsplashscreen/libpng/pngpread.c
+index 86d0c7aaa64..3bfa913000f 100644
+--- a/src/java.desktop/share/native/libsplashscreen/libpng/pngpread.c
++++ b/src/java.desktop/share/native/libsplashscreen/libpng/pngpread.c
+@@ -29,7 +29,7 @@
+  * However, the following notice accompanied the original version of this
+  * file and, per its terms, should not be removed:
+  *
+- * Copyright (c) 2018-2024 Cosmin Truta
++ * Copyright (c) 2018-2025 Cosmin Truta
+  * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
+  * Copyright (c) 1996-1997 Andreas Dilger
+  * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
+@@ -258,6 +258,14 @@ png_push_read_chunk(png_structrp png_ptr, png_inforp info_ptr)
+          png_benign_error(png_ptr, "Too many IDATs found");
+    }
+ 
++   else if ((png_ptr->mode & PNG_HAVE_IDAT) != 0)
++   {
++      /* These flags must be set consistently for all non-IDAT chunks,
++       * including the unknown chunks.
++       */
++      png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT | PNG_AFTER_IDAT;
++   }
++
+    if (chunk_name == png_IHDR)
+    {
+       if (png_ptr->push_length != 13)
+diff --git a/src/java.desktop/share/native/libsplashscreen/libpng/pngpriv.h b/src/java.desktop/share/native/libsplashscreen/libpng/pngpriv.h
+index 25bac4b9e69..dcd005efb34 100644
+--- a/src/java.desktop/share/native/libsplashscreen/libpng/pngpriv.h
++++ b/src/java.desktop/share/native/libsplashscreen/libpng/pngpriv.h
+@@ -29,7 +29,7 @@
+  * However, the following notice accompanied the original version of this
+  * file and, per its terms, should not be removed:
+  *
+- * Copyright (c) 2018-2024 Cosmin Truta
++ * Copyright (c) 2018-2025 Cosmin Truta
+  * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
+  * Copyright (c) 1996-1997 Andreas Dilger
+  * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
+@@ -48,8 +48,20 @@
+  * they should be well aware of the issues that may arise from doing so.
+  */
+ 
++
++/* pngpriv.h must be included first in each translation unit inside libpng.
++ * On the other hand, it must not be included at all, directly or indirectly,
++ * by any application code that uses the libpng API.
++ */
+ #ifndef PNGPRIV_H
+-#define PNGPRIV_H
++#  define PNGPRIV_H
++#else
++#  error Duplicate inclusion of pngpriv.h; please check the libpng source files
++#endif
++
++#if defined(PNG_H) || defined(PNGCONF_H) || defined(PNGLCONF_H)
++#  error This file must not be included by applications; please include 
++#endif
+ 
+ /* Feature Test Macros.  The following are defined here to ensure that correctly
+  * implemented libraries reveal the APIs libpng needs to build and hide those
+@@ -86,7 +98,6 @@
+  */
+ #if defined(HAVE_CONFIG_H) && !defined(PNG_NO_CONFIG_H)
+ #  include 
+-
+    /* Pick up the definition of 'restrict' from config.h if it was read: */
+ #  define PNG_RESTRICT restrict
+ #endif
+@@ -96,9 +107,7 @@
+  * are not internal definitions may be required.  This is handled below just
+  * before png.h is included, but load the configuration now if it is available.
+  */
+-#ifndef PNGLCONF_H
+-#  include "pnglibconf.h"
+-#endif
++#include "pnglibconf.h"
+ 
+ /* Local renames may change non-exported API functions from png.h */
+ #if defined(PNG_PREFIX) && !defined(PNGPREFIX_H)
+@@ -163,6 +172,20 @@
+ #  endif
+ #endif
+ 
++#ifndef PNG_RISCV_RVV_OPT
++   /* RISCV_RVV optimizations are being controlled by the compiler settings,
++    * typically the target compiler will define __riscv but the rvv extension
++    * availability has to be explicitly stated. This is why if no
++    * PNG_RISCV_RVV_OPT was defined then a runtime check will be executed.
++    *
++    * To enable RISCV_RVV optimizations unconditionally, and compile the
++    * associated code, pass --enable-riscv-rvv=yes or --enable-riscv-rvv=on
++    * to configure or put -DPNG_RISCV_RVV_OPT=2 in CPPFLAGS.
++    */
++
++#  define PNG_RISCV_RVV_OPT 0
++#endif
++
+ #if PNG_ARM_NEON_OPT > 0
+    /* NEON optimizations are to be at least considered by libpng, so enable the
+     * callbacks to do this.
+@@ -308,6 +331,16 @@
+ #   define PNG_LOONGARCH_LSX_IMPLEMENTATION 0
+ #endif
+ 
++#if PNG_RISCV_RVV_OPT > 0 && __riscv_v >= 1000000
++#  define PNG_FILTER_OPTIMIZATIONS png_init_filter_functions_rvv
++#  ifndef PNG_RISCV_RVV_IMPLEMENTATION
++      /* Use the intrinsics code by default. */
++#     define PNG_RISCV_RVV_IMPLEMENTATION 1
++#  endif
++#else
++#  define PNG_RISCV_RVV_IMPLEMENTATION 0
++#endif /* PNG_RISCV_RVV_OPT > 0 && __riscv_v >= 1000000 */
++
+ /* Is this a build of a DLL where compilation of the object modules requires
+  * different preprocessor settings to those required for a simple library?  If
+  * so PNG_BUILD_DLL must be set.
+@@ -706,7 +739,7 @@
+ /* #define PNG_FLAG_KEEP_UNKNOWN_CHUNKS      0x8000U */
+ /* #define PNG_FLAG_KEEP_UNSAFE_CHUNKS      0x10000U */
+ #define PNG_FLAG_LIBRARY_MISMATCH        0x20000U
+-#define PNG_FLAG_STRIP_ERROR_NUMBERS     0x40000U
++                                  /*     0x40000U    unused */
+ #define PNG_FLAG_STRIP_ERROR_TEXT        0x80000U
+ #define PNG_FLAG_BENIGN_ERRORS_WARN     0x100000U /* Added to libpng-1.4.0 */
+ #define PNG_FLAG_APP_WARNINGS_WARN      0x200000U /* Added to libpng-1.6.0 */
+@@ -1020,17 +1053,15 @@
+  * must match that used in the build, or we must be using pnglibconf.h.prebuilt:
+  */
+ #if PNG_ZLIB_VERNUM != 0 && PNG_ZLIB_VERNUM != ZLIB_VERNUM
+-#  error ZLIB_VERNUM != PNG_ZLIB_VERNUM \
+-      "-I (include path) error: see the notes in pngpriv.h"
+-   /* This means that when pnglibconf.h was built the copy of zlib.h that it
+-    * used is not the same as the one being used here.  Because the build of
+-    * libpng makes decisions to use inflateInit2 and inflateReset2 based on the
+-    * zlib version number and because this affects handling of certain broken
+-    * PNG files the -I directives must match.
++#  error The include path of  is incorrect
++   /* When pnglibconf.h was built, the copy of zlib.h that it used was not the
++    * same as the one being used here.  Considering how libpng makes decisions
++    * to use the zlib API based on the zlib version number, the -I options must
++    * match.
+     *
+-    * The most likely explanation is that you passed a -I in CFLAGS. This will
+-    * not work; all the preprocessor directives and in particular all the -I
+-    * directives must be in CPPFLAGS.
++    * A possible cause of this mismatch is that you passed an -I option in
++    * CFLAGS, which is unlikely to work.  All the preprocessor options, and all
++    * the -I options in particular, should be in CPPFLAGS.
+     */
+ #endif
+ 
+@@ -1544,6 +1575,23 @@ PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_lsx,(png_row_infop
+     row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
+ #endif
+ 
++#if PNG_RISCV_RVV_IMPLEMENTATION == 1
++PNG_INTERNAL_FUNCTION(void,png_read_filter_row_up_rvv,(png_row_infop
++    row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub3_rvv,(png_row_infop
++    row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_read_filter_row_sub4_rvv,(png_row_infop
++    row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg3_rvv,(png_row_infop
++    row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_read_filter_row_avg4_rvv,(png_row_infop
++    row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth3_rvv,(png_row_infop
++    row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
++PNG_INTERNAL_FUNCTION(void,png_read_filter_row_paeth4_rvv,(png_row_infop
++    row_info, png_bytep row, png_const_bytep prev_row),PNG_EMPTY);
++#endif
++
+ /* Choose the best filter to use and filter the row data */
+ PNG_INTERNAL_FUNCTION(void,png_write_find_filter,(png_structrp png_ptr,
+     png_row_infop row_info),PNG_EMPTY);
+@@ -2156,6 +2204,11 @@ PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_lsx,
+     (png_structp png_ptr, unsigned int bpp), PNG_EMPTY);
+ #endif
+ 
++#  if PNG_RISCV_RVV_IMPLEMENTATION == 1
++PNG_INTERNAL_FUNCTION(void, png_init_filter_functions_rvv,
++   (png_structp png_ptr, unsigned int bpp), PNG_EMPTY);
++#endif
++
+ PNG_INTERNAL_FUNCTION(png_uint_32, png_check_keyword, (png_structrp png_ptr,
+    png_const_charp key, png_bytep new_key), PNG_EMPTY);
+ 
+@@ -2191,4 +2244,3 @@ PNG_INTERNAL_FUNCTION(int,
+ #endif
+ 
+ #endif /* PNG_VERSION_INFO_ONLY */
+-#endif /* PNGPRIV_H */
+diff --git a/src/java.desktop/share/native/libsplashscreen/libpng/pngread.c b/src/java.desktop/share/native/libsplashscreen/libpng/pngread.c
+index 8a6381e1b3e..b53668a09ce 100644
+--- a/src/java.desktop/share/native/libsplashscreen/libpng/pngread.c
++++ b/src/java.desktop/share/native/libsplashscreen/libpng/pngread.c
+@@ -731,7 +731,12 @@ png_read_end(png_structrp png_ptr, png_inforp info_ptr)
+       png_uint_32 chunk_name = png_ptr->chunk_name;
+ 
+       if (chunk_name != png_IDAT)
+-         png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT;
++      {
++         /* These flags must be set consistently for all non-IDAT chunks,
++          * including the unknown chunks.
++          */
++         png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT | PNG_AFTER_IDAT;
++      }
+ 
+       if (chunk_name == png_IEND)
+          png_handle_chunk(png_ptr, info_ptr, length);
+@@ -838,7 +843,8 @@ png_read_destroy(png_structrp png_ptr)
+ #endif
+ 
+ #if defined(PNG_READ_EXPAND_SUPPORTED) && \
+-    defined(PNG_ARM_NEON_IMPLEMENTATION)
++    (defined(PNG_ARM_NEON_IMPLEMENTATION) || \
++     defined(PNG_RISCV_RVV_IMPLEMENTATION))
+    png_free(png_ptr, png_ptr->riffled_palette);
+    png_ptr->riffled_palette = NULL;
+ #endif
+@@ -1357,7 +1363,7 @@ png_image_read_header(png_voidp argument)
+ 
+ #ifdef PNG_STDIO_SUPPORTED
+ int PNGAPI
+-png_image_begin_read_from_stdio(png_imagep image, FILE* file)
++png_image_begin_read_from_stdio(png_imagep image, FILE *file)
+ {
+    if (image != NULL && image->version == PNG_IMAGE_VERSION)
+    {
+@@ -3152,6 +3158,54 @@ png_image_read_colormapped(png_voidp argument)
+    }
+ }
+ 
++/* Row reading for interlaced 16-to-8 bit depth conversion with local buffer. */
++static int
++png_image_read_direct_scaled(png_voidp argument)
++{
++   png_image_read_control *display = png_voidcast(png_image_read_control*,
++       argument);
++   png_imagep image = display->image;
++   png_structrp png_ptr = image->opaque->png_ptr;
++   png_bytep local_row = png_voidcast(png_bytep, display->local_row);
++   png_bytep first_row = png_voidcast(png_bytep, display->first_row);
++   ptrdiff_t row_bytes = display->row_bytes;
++   int passes;
++
++   /* Handle interlacing. */
++   switch (png_ptr->interlaced)
++   {
++      case PNG_INTERLACE_NONE:
++         passes = 1;
++         break;
++
++      case PNG_INTERLACE_ADAM7:
++         passes = PNG_INTERLACE_ADAM7_PASSES;
++         break;
++
++      default:
++         png_error(png_ptr, "unknown interlace type");
++   }
++
++   /* Read each pass using local_row as intermediate buffer. */
++   while (--passes >= 0)
++   {
++      png_uint_32 y = image->height;
++      png_bytep output_row = first_row;
++
++      for (; y > 0; --y)
++      {
++         /* Read into local_row (gets transformed 8-bit data). */
++         png_read_row(png_ptr, local_row, NULL);
++
++         /* Copy from local_row to user buffer. */
++         memcpy(output_row, local_row, (size_t)row_bytes);
++         output_row += row_bytes;
++      }
++   }
++
++   return 1;
++}
++
+ /* Just the row reading part of png_image_read. */
+ static int
+ png_image_read_composite(png_voidp argument)
+@@ -3570,6 +3624,7 @@ png_image_read_direct(png_voidp argument)
+    int linear = (format & PNG_FORMAT_FLAG_LINEAR) != 0;
+    int do_local_compose = 0;
+    int do_local_background = 0; /* to avoid double gamma correction bug */
++   int do_local_scale = 0; /* for interlaced 16-to-8 bit conversion */
+    int passes = 0;
+ 
+    /* Add transforms to ensure the correct output format is produced then check
+@@ -3703,8 +3758,16 @@ png_image_read_direct(png_voidp argument)
+             png_set_expand_16(png_ptr);
+ 
+          else /* 8-bit output */
++         {
+             png_set_scale_16(png_ptr);
+ 
++            /* For interlaced images, use local_row buffer to avoid overflow
++             * in png_combine_row() which writes using IHDR bit-depth.
++             */
++            if (png_ptr->interlaced != 0)
++               do_local_scale = 1;
++         }
++
+          change &= ~PNG_FORMAT_FLAG_LINEAR;
+       }
+ 
+@@ -3980,6 +4043,24 @@ png_image_read_direct(png_voidp argument)
+       return result;
+    }
+ 
++   else if (do_local_scale != 0)
++   {
++      /* For interlaced 16-to-8 conversion, use an intermediate row buffer
++       * to avoid buffer overflows in png_combine_row. The local_row is sized
++       * for the transformed (8-bit) output, preventing the overflow that would
++       * occur if png_combine_row wrote 16-bit data directly to the user buffer.
++       */
++      int result;
++      png_voidp row = png_malloc(png_ptr, png_get_rowbytes(png_ptr, info_ptr));
++
++      display->local_row = row;
++      result = png_safe_execute(image, png_image_read_direct_scaled, display);
++      display->local_row = NULL;
++      png_free(png_ptr, row);
++
++      return result;
++   }
++
+    else
+    {
+       png_alloc_size_t row_bytes = (png_alloc_size_t)display->row_bytes;
+diff --git a/src/java.desktop/share/native/libsplashscreen/libpng/pngrio.c b/src/java.desktop/share/native/libsplashscreen/libpng/pngrio.c
+index 961d010df42..50a424d0912 100644
+--- a/src/java.desktop/share/native/libsplashscreen/libpng/pngrio.c
++++ b/src/java.desktop/share/native/libsplashscreen/libpng/pngrio.c
+@@ -29,7 +29,7 @@
+  * However, the following notice accompanied the original version of this
+  * file and, per its terms, should not be removed:
+  *
+- * Copyright (c) 2018 Cosmin Truta
++ * Copyright (c) 2018-2025 Cosmin Truta
+  * Copyright (c) 1998-2002,2004,2006-2016,2018 Glenn Randers-Pehrson
+  * Copyright (c) 1996-1997 Andreas Dilger
+  * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
+@@ -85,7 +85,7 @@ png_default_read_data(png_structp png_ptr, png_bytep data, size_t length)
+    /* fread() returns 0 on error, so it is OK to store this in a size_t
+     * instead of an int, which is what fread() actually returns.
+     */
+-   check = fread(data, 1, length, png_voidcast(png_FILE_p, png_ptr->io_ptr));
++   check = fread(data, 1, length, png_voidcast(FILE *, png_ptr->io_ptr));
+ 
+    if (check != length)
+       png_error(png_ptr, "Read Error");
+diff --git a/src/java.desktop/share/native/libsplashscreen/libpng/pngrtran.c b/src/java.desktop/share/native/libsplashscreen/libpng/pngrtran.c
+index 4f31f8f07bc..a19615f49fe 100644
+--- a/src/java.desktop/share/native/libsplashscreen/libpng/pngrtran.c
++++ b/src/java.desktop/share/native/libsplashscreen/libpng/pngrtran.c
+@@ -29,7 +29,7 @@
+  * However, the following notice accompanied the original version of this
+  * file and, per its terms, should not be removed:
+  *
+- * Copyright (c) 2018-2024 Cosmin Truta
++ * Copyright (c) 2018-2025 Cosmin Truta
+  * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
+  * Copyright (c) 1996-1997 Andreas Dilger
+  * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
+@@ -57,6 +57,12 @@
+ #  endif
+ #endif
+ 
++#ifdef PNG_RISCV_RVV_IMPLEMENTATION
++#  if PNG_RISCV_RVV_IMPLEMENTATION == 1
++#    define PNG_RISCV_RVV_INTRINSICS_AVAILABLE
++#  endif
++#endif
++
+ #ifdef PNG_READ_SUPPORTED
+ 
+ /* Set the action on getting a CRC error for an ancillary or critical chunk. */
+@@ -524,9 +530,19 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette,
+    {
+       int i;
+ 
++      /* Initialize the array to index colors.
++       *
++       * Ensure quantize_index can fit 256 elements (PNG_MAX_PALETTE_LENGTH)
++       * rather than num_palette elements. This is to prevent buffer overflows
++       * caused by malformed PNG files with out-of-range palette indices.
++       *
++       * Be careful to avoid leaking memory. Applications are allowed to call
++       * this function more than once per png_struct.
++       */
++      png_free(png_ptr, png_ptr->quantize_index);
+       png_ptr->quantize_index = (png_bytep)png_malloc(png_ptr,
+-          (png_alloc_size_t)num_palette);
+-      for (i = 0; i < num_palette; i++)
++          PNG_MAX_PALETTE_LENGTH);
++      for (i = 0; i < PNG_MAX_PALETTE_LENGTH; i++)
+          png_ptr->quantize_index[i] = (png_byte)i;
+    }
+ 
+@@ -538,15 +554,14 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette,
+           * Perhaps not the best solution, but good enough.
+           */
+ 
+-         int i;
++         png_bytep quantize_sort;
++         int i, j;
+ 
+-         /* Initialize an array to sort colors */
+-         png_ptr->quantize_sort = (png_bytep)png_malloc(png_ptr,
++         /* Initialize the local array to sort colors. */
++         quantize_sort = (png_bytep)png_malloc(png_ptr,
+              (png_alloc_size_t)num_palette);
+-
+-         /* Initialize the quantize_sort array */
+          for (i = 0; i < num_palette; i++)
+-            png_ptr->quantize_sort[i] = (png_byte)i;
++            quantize_sort[i] = (png_byte)i;
+ 
+          /* Find the least used palette entries by starting a
+           * bubble sort, and running it until we have sorted
+@@ -558,19 +573,18 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette,
+          for (i = num_palette - 1; i >= maximum_colors; i--)
+          {
+             int done; /* To stop early if the list is pre-sorted */
+-            int j;
+ 
+             done = 1;
+             for (j = 0; j < i; j++)
+             {
+-               if (histogram[png_ptr->quantize_sort[j]]
+-                   < histogram[png_ptr->quantize_sort[j + 1]])
++               if (histogram[quantize_sort[j]]
++                   < histogram[quantize_sort[j + 1]])
+                {
+                   png_byte t;
+ 
+-                  t = png_ptr->quantize_sort[j];
+-                  png_ptr->quantize_sort[j] = png_ptr->quantize_sort[j + 1];
+-                  png_ptr->quantize_sort[j + 1] = t;
++                  t = quantize_sort[j];
++                  quantize_sort[j] = quantize_sort[j + 1];
++                  quantize_sort[j + 1] = t;
+                   done = 0;
+                }
+             }
+@@ -582,18 +596,18 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette,
+          /* Swap the palette around, and set up a table, if necessary */
+          if (full_quantize != 0)
+          {
+-            int j = num_palette;
++            j = num_palette;
+ 
+             /* Put all the useful colors within the max, but don't
+              * move the others.
+              */
+             for (i = 0; i < maximum_colors; i++)
+             {
+-               if ((int)png_ptr->quantize_sort[i] >= maximum_colors)
++               if ((int)quantize_sort[i] >= maximum_colors)
+                {
+                   do
+                      j--;
+-                  while ((int)png_ptr->quantize_sort[j] >= maximum_colors);
++                  while ((int)quantize_sort[j] >= maximum_colors);
+ 
+                   palette[i] = palette[j];
+                }
+@@ -601,7 +615,7 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette,
+          }
+          else
+          {
+-            int j = num_palette;
++            j = num_palette;
+ 
+             /* Move all the used colors inside the max limit, and
+              * develop a translation table.
+@@ -609,13 +623,13 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette,
+             for (i = 0; i < maximum_colors; i++)
+             {
+                /* Only move the colors we need to */
+-               if ((int)png_ptr->quantize_sort[i] >= maximum_colors)
++               if ((int)quantize_sort[i] >= maximum_colors)
+                {
+                   png_color tmp_color;
+ 
+                   do
+                      j--;
+-                  while ((int)png_ptr->quantize_sort[j] >= maximum_colors);
++                  while ((int)quantize_sort[j] >= maximum_colors);
+ 
+                   tmp_color = palette[j];
+                   palette[j] = palette[i];
+@@ -653,8 +667,7 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette,
+                }
+             }
+          }
+-         png_free(png_ptr, png_ptr->quantize_sort);
+-         png_ptr->quantize_sort = NULL;
++         png_free(png_ptr, quantize_sort);
+       }
+       else
+       {
+@@ -1797,19 +1810,51 @@ png_init_read_transformations(png_structrp png_ptr)
+                   }
+                   else /* if (png_ptr->trans_alpha[i] != 0xff) */
+                   {
+-                     png_byte v, w;
+-
+-                     v = png_ptr->gamma_to_1[palette[i].red];
+-                     png_composite(w, v, png_ptr->trans_alpha[i], back_1.red);
+-                     palette[i].red = png_ptr->gamma_from_1[w];
+-
+-                     v = png_ptr->gamma_to_1[palette[i].green];
+-                     png_composite(w, v, png_ptr->trans_alpha[i], back_1.green);
+-                     palette[i].green = png_ptr->gamma_from_1[w];
+-
+-                     v = png_ptr->gamma_to_1[palette[i].blue];
+-                     png_composite(w, v, png_ptr->trans_alpha[i], back_1.blue);
+-                     palette[i].blue = png_ptr->gamma_from_1[w];
++                     if ((png_ptr->flags & PNG_FLAG_OPTIMIZE_ALPHA) != 0)
++                     {
++                        /* Premultiply only:
++                         * component = round((component * alpha) / 255)
++                         */
++                        png_uint_32 component;
++
++                        component = png_ptr->gamma_to_1[palette[i].red];
++                        component =
++                            (component * png_ptr->trans_alpha[i] + 128) / 255;
++                        palette[i].red = png_ptr->gamma_from_1[component];
++
++                        component = png_ptr->gamma_to_1[palette[i].green];
++                        component =
++                            (component * png_ptr->trans_alpha[i] + 128) / 255;
++                        palette[i].green = png_ptr->gamma_from_1[component];
++
++                        component = png_ptr->gamma_to_1[palette[i].blue];
++                        component =
++                            (component * png_ptr->trans_alpha[i] + 128) / 255;
++                        palette[i].blue = png_ptr->gamma_from_1[component];
++                     }
++                     else
++                     {
++                        /* Composite with background color:
++                         * component =
++                         *    alpha * component + (1 - alpha) * background
++                         */
++                        png_byte v, w;
++
++                        v = png_ptr->gamma_to_1[palette[i].red];
++                        png_composite(w, v,
++                            png_ptr->trans_alpha[i], back_1.red);
++                        palette[i].red = png_ptr->gamma_from_1[w];
++
++                        v = png_ptr->gamma_to_1[palette[i].green];
++                        png_composite(w, v,
++                            png_ptr->trans_alpha[i], back_1.green);
++                        palette[i].green = png_ptr->gamma_from_1[w];
++
++                        v = png_ptr->gamma_to_1[palette[i].blue];
++                        png_composite(w, v,
++                            png_ptr->trans_alpha[i], back_1.blue);
++                        palette[i].blue = png_ptr->gamma_from_1[w];
++                     }
+                   }
+                }
+                else
+@@ -5032,13 +5077,8 @@ png_do_read_transformations(png_structrp png_ptr, png_row_infop row_info)
+ 
+ #ifdef PNG_READ_QUANTIZE_SUPPORTED
+    if ((png_ptr->transformations & PNG_QUANTIZE) != 0)
+-   {
+       png_do_quantize(row_info, png_ptr->row_buf + 1,
+           png_ptr->palette_lookup, png_ptr->quantize_index);
+-
+-      if (row_info->rowbytes == 0)
+-         png_error(png_ptr, "png_do_quantize returned rowbytes=0");
+-   }
+ #endif /* READ_QUANTIZE */
+ 
+ #ifdef PNG_READ_EXPAND_16_SUPPORTED
+diff --git a/src/java.desktop/share/native/libsplashscreen/libpng/pngrutil.c b/src/java.desktop/share/native/libsplashscreen/libpng/pngrutil.c
+index 6cf466d182a..07d53cb2c76 100644
+--- a/src/java.desktop/share/native/libsplashscreen/libpng/pngrutil.c
++++ b/src/java.desktop/share/native/libsplashscreen/libpng/pngrutil.c
+@@ -29,7 +29,7 @@
+  * However, the following notice accompanied the original version of this
+  * file and, per its terms, should not be removed:
+  *
+- * Copyright (c) 2018-2024 Cosmin Truta
++ * Copyright (c) 2018-2025 Cosmin Truta
+  * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
+  * Copyright (c) 1996-1997 Andreas Dilger
+  * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
+@@ -2441,10 +2441,6 @@ png_handle_tEXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
+    }
+ #endif
+ 
+-   /* TODO: this doesn't work and shouldn't be necessary. */
+-   if ((png_ptr->mode & PNG_HAVE_IDAT) != 0)
+-      png_ptr->mode |= PNG_AFTER_IDAT;
+-
+    buffer = png_read_buffer(png_ptr, length+1);
+ 
+    if (buffer == NULL)
+@@ -2515,10 +2511,6 @@ png_handle_zTXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
+    }
+ #endif
+ 
+-   /* TODO: should not be necessary. */
+-   if ((png_ptr->mode & PNG_HAVE_IDAT) != 0)
+-      png_ptr->mode |= PNG_AFTER_IDAT;
+-
+    /* Note, "length" is sufficient here; we won't be adding
+     * a null terminator later.  The limit check in png_handle_chunk should be
+     * sufficient.
+@@ -2635,10 +2627,6 @@ png_handle_iTXt(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
+    }
+ #endif
+ 
+-   /* TODO: should not be necessary. */
+-   if ((png_ptr->mode & PNG_HAVE_IDAT) != 0)
+-      png_ptr->mode |= PNG_AFTER_IDAT;
+-
+    buffer = png_read_buffer(png_ptr, length+1);
+ 
+    if (buffer == NULL)
+diff --git a/src/java.desktop/share/native/libsplashscreen/libpng/pngset.c b/src/java.desktop/share/native/libsplashscreen/libpng/pngset.c
+index 1bfd292bd46..0b2844f1864 100644
+--- a/src/java.desktop/share/native/libsplashscreen/libpng/pngset.c
++++ b/src/java.desktop/share/native/libsplashscreen/libpng/pngset.c
+@@ -329,17 +329,14 @@ png_set_mDCV(png_const_structrp png_ptr, png_inforp info_ptr,
+     double maxDL, double minDL)
+ {
+    png_set_mDCV_fixed(png_ptr, info_ptr,
+-      /* The ITU approach is to scale by 50,000, not 100,000 so just divide
+-       * the input values by 2 and use png_fixed:
+-       */
+-      png_fixed(png_ptr, white_x / 2, "png_set_mDCV(white(x))"),
+-      png_fixed(png_ptr, white_y / 2, "png_set_mDCV(white(y))"),
+-      png_fixed(png_ptr, red_x / 2, "png_set_mDCV(red(x))"),
+-      png_fixed(png_ptr, red_y / 2, "png_set_mDCV(red(y))"),
+-      png_fixed(png_ptr, green_x / 2, "png_set_mDCV(green(x))"),
+-      png_fixed(png_ptr, green_y / 2, "png_set_mDCV(green(y))"),
+-      png_fixed(png_ptr, blue_x / 2, "png_set_mDCV(blue(x))"),
+-      png_fixed(png_ptr, blue_y / 2, "png_set_mDCV(blue(y))"),
++      png_fixed(png_ptr, white_x, "png_set_mDCV(white(x))"),
++      png_fixed(png_ptr, white_y, "png_set_mDCV(white(y))"),
++      png_fixed(png_ptr, red_x, "png_set_mDCV(red(x))"),
++      png_fixed(png_ptr, red_y, "png_set_mDCV(red(y))"),
++      png_fixed(png_ptr, green_x, "png_set_mDCV(green(x))"),
++      png_fixed(png_ptr, green_y, "png_set_mDCV(green(y))"),
++      png_fixed(png_ptr, blue_x, "png_set_mDCV(blue(x))"),
++      png_fixed(png_ptr, blue_y, "png_set_mDCV(blue(y))"),
+       png_fixed_ITU(png_ptr, maxDL, "png_set_mDCV(maxDL)"),
+       png_fixed_ITU(png_ptr, minDL, "png_set_mDCV(minDL)"));
+ }
+diff --git a/src/java.desktop/share/native/libsplashscreen/libpng/pngstruct.h b/src/java.desktop/share/native/libsplashscreen/libpng/pngstruct.h
+index d6c446564d1..8edb4bc393a 100644
+--- a/src/java.desktop/share/native/libsplashscreen/libpng/pngstruct.h
++++ b/src/java.desktop/share/native/libsplashscreen/libpng/pngstruct.h
+@@ -22,14 +22,14 @@
+  * questions.
+  */
+ 
+-/* pngstruct.h - header file for PNG reference library
++/* pngstruct.h - internal structures for libpng
+  *
+  * This file is available under and governed by the GNU General Public
+  * License version 2 only, as published by the Free Software Foundation.
+  * However, the following notice accompanied the original version of this
+  * file and, per its terms, should not be removed:
+  *
+- * Copyright (c) 2018-2022 Cosmin Truta
++ * Copyright (c) 2018-2025 Cosmin Truta
+  * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
+  * Copyright (c) 1996-1997 Andreas Dilger
+  * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
+@@ -39,11 +39,9 @@
+  * and license in png.h
+  */
+ 
+-/* The structure that holds the information to read and write PNG files.
+- * The only people who need to care about what is inside of this are the
+- * people who will be modifying the library for their own special needs.
+- * It should NOT be accessed directly by an application.
+- */
++#ifndef PNGPRIV_H
++#  error This file must not be included by applications; please include 
++#endif
+ 
+ #ifndef PNGSTRUCT_H
+ #define PNGSTRUCT_H
+@@ -406,7 +404,8 @@ struct png_struct_def
+ 
+ /* New member added in libpng-1.6.36 */
+ #if defined(PNG_READ_EXPAND_SUPPORTED) && \
+-    defined(PNG_ARM_NEON_IMPLEMENTATION)
++    (defined(PNG_ARM_NEON_IMPLEMENTATION) || \
++     defined(PNG_RISCV_RVV_IMPLEMENTATION))
+    png_bytep riffled_palette; /* buffer for accelerated palette expansion */
+ #endif
+ 
+@@ -435,7 +434,6 @@ struct png_struct_def
+ 
+ #ifdef PNG_READ_QUANTIZE_SUPPORTED
+ /* The following three members were added at version 1.0.14 and 1.2.4 */
+-   png_bytep quantize_sort;          /* working sort array */
+    png_bytep index_to_palette;       /* where the original index currently is
+                                         in the palette */
+    png_bytep palette_to_index;       /* which original index points to this
diff --git a/SPECS/java-25-openjdk.spec b/SPECS/java-25-openjdk.spec
index 0dafeee..f7d7335 100644
--- a/SPECS/java-25-openjdk.spec
+++ b/SPECS/java-25-openjdk.spec
@@ -286,7 +286,7 @@
 # New Version-String scheme-style defines
 %global featurever 25
 %global interimver 0
-%global updatever 1
+%global updatever 2
 %global patchver 0
 # We don't add any LTS designator for STS packages (Fedora and EPEL).
 # We need to explicitly exclude EPEL as it would have the %%{rhel} macro defined.
@@ -348,8 +348,8 @@
 %global origin_nice     OpenJDK
 %global top_level_dir_name   %{vcstag}
 %global top_level_dir_name_backup %{top_level_dir_name}-backup
-%global buildver        8
-%global rpmrelease      2
+%global buildver        10
+%global rpmrelease      1
 # Settings used by the portable build
 %global portablerelease 2
 # Portable suffix differs between RHEL and CentOS
@@ -1417,8 +1417,9 @@ Patch1001: fips-%{featurever}u-%{fipsver}.patch
 # OpenJDK patches which missed last update
 #
 #############################################
-
-# Currently empty
+# JDK-8372534: Update Libpng to 1.6.51
+# Integrated in 25.0.3
+Patch2001: jdk8372534-libpng-1.6.51.patch
 
 #############################################
 #
@@ -1433,7 +1434,7 @@ Patch1001: fips-%{featurever}u-%{fipsver}.patch
 # NSS adapter patches
 #
 #############################################
-Patch2001: nssadapter-ldflags.patch
+Patch3001: nssadapter-ldflags.patch
 
 BuildRequires: autoconf
 BuildRequires: automake
@@ -1516,7 +1517,7 @@ Provides: bundled(lcms2) = 2.17.0
 # Version in src/java.desktop/share/native/libjavajpeg/jpeglib.h
 Provides: bundled(libjpeg) = 6b
 # Version in src/java.desktop/share/native/libsplashscreen/libpng/png.h
-Provides: bundled(libpng) = 1.6.47
+Provides: bundled(libpng) = 1.6.51
 # Version in src/java.base/share/native/libzip/zlib/zlib.h
 Provides: bundled(zlib) = 1.3.1
 %endif
@@ -1952,11 +1953,13 @@ sh %{SOURCE12} %{top_level_dir_name}
 pushd %{top_level_dir_name}
 # Add crypto policy and FIPS support
 %patch -P1001 -p1
+# Add libpng update ahead of 25.0.3
+%patch -P2001 -p1
 popd # openjdk
 
 # Patch NSS adapter
 pushd %{nssadapter_name}
-%patch -P2001 -p1
+%patch -P3001 -p1
 popd # nssadapter
 
 # The OpenJDK version file includes the current
@@ -2005,7 +2008,7 @@ function customisejdk() {
     if [ -d ${imagepath} ] ; then
         # Install crypto-policies FIPS configuration files and append
         # include line to java.security
-        bash -x %{SOURCE32} ${imagepath}/conf/security %{_libdir}/%{sdkdir -- ${suffix}}/libnssadapter.so
+        bash -ex %{SOURCE32} ${imagepath}/conf/security %{_libdir}/%{sdkdir -- ${suffix}}/libnssadapter.so
 
         # Use system-wide tzdata
         rm ${imagepath}/lib/tzdb.dat
@@ -2626,6 +2629,24 @@ exit 0
 %endif
 
 %changelog
+* Wed Jan 21 2026 Jiri Vanek  - 1:25.0.2.0.10-1
+- Execute create-redhat-properties-files.bash with '-e' to exit on failure
+- Related: RHEL-142856
+
+* Mon Jan 12 2026 Andrew Hughes  - 1:25.0.2.0.10-1
+- Update to jdk-25.0.2+10 (GA)
+- Update release notes to 25.0.2+10
+- Add JDK-8372534 libpng 1.6.51 ahead of 25.0.3
+- Bump libpng version to 1.6.51 following JDK-8372534
+- Bump ID of NSS adapter patch so we can stay in sync with portable on the libpng patch
+- Test for java.security's existence in create-redhat-properties-files.bash
+- Handle 'upgrade' as an alternative to 'update' in openjdk_news.sh
+- Sync the copy of the portable specfile with the latest update
+- ** This tarball is embargoed until 2026-01-20 @ 1pm PT. **
+- Resolves: RHEL-139577
+- Resolves: RHEL-142856
+- Resolves: RHEL-142808
+
 * Mon Dec 08 2025 Andrew Hughes  - 1:25.0.1.0.8-2
 - Incorporate new FIPS patch for 25u
 - Drop static libjvm.a following adjusted build target for portable build