DTLSReassembler can queue fragments of the same handshake message with different total messageLength values. Reassembly holes are initialized from the first fragment, while the output array is allocated using the fragment with the lowest offset.
For the same epoch, message sequence, and HELLO_REQUEST type, submit these fragments in order: offset 5, length 50, total message length 100; offset 0, length 5, total message length 10; offset 55, length 45, total message length 100. The final fragment completes the holes, but copying the buffered fragments into the array sized for a ten-byte message triggers ArrayIndexOutOfBoundsException. SSLEngineImpl catches this runtime exception and reports a fatal SSLException; it does not establish a JVM crash. Expected behavior the inconsistent handshake metadata must be rejected as a protocol error before fragment reassembly. --------- - [x] I confirm that I make this contribution in accordance with the [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). ------------- Commit messages: - 8396112: DTLS handshake reassembly does not reject inconsistent message lengths across fragments Changes: https://git.openjdk.org/jdk/pull/33633/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=33633&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8396112 Stats: 12 lines in 1 file changed: 12 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jdk/pull/33633.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/33633/head:pull/33633 PR: https://git.openjdk.org/jdk/pull/33633
