Skip to content

fix FFM address semantics in directBufferAddress#16603

Merged
chrisvest merged 2 commits into
netty:4.2from
dreamlike-ocean:fix_memory_address
Apr 13, 2026
Merged

fix FFM address semantics in directBufferAddress#16603
chrisvest merged 2 commits into
netty:4.2from
dreamlike-ocean:fix_memory_address

Conversation

@dreamlike-ocean

Copy link
Copy Markdown
Contributor

Motivation:

  • Unnecessary JNI fallback
    When Unsafe is disabled or unavailable, but the JDK provides a usable FFM (Foreign Function & Memory) API, the existing code still falls back to JNI to obtain the address of a direct ByteBuffer.

  • Incorrect FFM semantics in PlatformDependent0#directBufferAddress
    The Unsafe branch returns the base address of the direct buffer (index 0), consistent with JNI GetDirectBufferAddress.
    However, the FFM branch uses MemorySegment.ofBuffer(buffer).address(), which effectively returns baseAddress + position.
    This leads to inconsistent semantics between the FFM and Unsafe/JNI implementations.

        ByteBuffer byteBuffer = ByteBuffer.allocateDirect(1024);

        //ffm api
        System.out.println(PlatformDependent.directBufferAddress(byteBuffer));
        // jni
        System.out.println(Buffer.memoryAddress(byteBuffer));

        byteBuffer = byteBuffer.position(16);
        System.out.println(PlatformDependent.directBufferAddress(byteBuffer));
        System.out.println(Buffer.memoryAddress(byteBuffer));

On Java 25 and Netty 4.2.12.Final, this code prints:

129502193232224
129502193232224
129502193232240
129502193232224

The third line reflects baseAddress + 16, demonstrating that the FFM path is position-dependent, while the JNI path remains position-independent.

Modification:

  • Prefer the FFM/JVM path when Unsafe is unavailable but FFM is available, avoiding the JNI fallback.
  • Fix the FFM branch to return the same base-address semantics as the Unsafe/JNI paths (i.e., position-independent).

Result:

fix FFM address semantics in directBufferAddress

@normanmaurer normanmaurer requested a review from chrisvest April 9, 2026 12:13
@normanmaurer normanmaurer added this to the 4.2.13.Final milestone Apr 9, 2026
@normanmaurer normanmaurer added the needs-cherry-pick-4.2 This PR should be cherry-picked to 4.2 once merged. label Apr 9, 2026
@chrisvest chrisvest added needs-cherry-pick-5.0 This PR should be cherry-picked to 5.0 once merged. and removed needs-cherry-pick-4.2 This PR should be cherry-picked to 4.2 once merged. labels Apr 13, 2026
@chrisvest chrisvest merged commit b4c2ddb into netty:4.2 Apr 13, 2026
23 checks passed
netty-project-bot pushed a commit that referenced this pull request Apr 13, 2026
Motivation:

- Unnecessary JNI fallback
When `Unsafe` is disabled or unavailable, but the JDK provides a usable
FFM (Foreign Function & Memory) API, the existing code still falls back
to JNI to obtain the address of a direct `ByteBuffer`.

- Incorrect FFM semantics in `PlatformDependent0#directBufferAddress`
The `Unsafe` branch returns the **base address** of the direct buffer
(index 0), consistent with JNI `GetDirectBufferAddress`.
However, the FFM branch uses `MemorySegment.ofBuffer(buffer).address()`,
which effectively returns `baseAddress + position`.
This leads to inconsistent semantics between the FFM and Unsafe/JNI
implementations.

``` java
        ByteBuffer byteBuffer = ByteBuffer.allocateDirect(1024);

        //ffm api
        System.out.println(PlatformDependent.directBufferAddress(byteBuffer));
        // jni
        System.out.println(Buffer.memoryAddress(byteBuffer));

        byteBuffer = byteBuffer.position(16);
        System.out.println(PlatformDependent.directBufferAddress(byteBuffer));
        System.out.println(Buffer.memoryAddress(byteBuffer));
```

On Java 25 and Netty 4.2.12.Final, this code prints:
```
129502193232224
129502193232224
129502193232240
129502193232224
```

The third line reflects baseAddress + 16, demonstrating that the FFM
path is position-dependent, while the JNI path remains
position-independent.

Modification:

- Prefer the FFM/JVM path when `Unsafe` is unavailable but FFM is
available, avoiding the JNI fallback.
- Fix the FFM branch to return the same **base-address semantics** as
the Unsafe/JNI paths (i.e., position-independent).

Result:

 fix FFM address semantics in directBufferAddress

Co-authored-by: Norman Maurer <norman_maurer@apple.com>
(cherry picked from commit b4c2ddb)
@chrisvest

Copy link
Copy Markdown
Member

Good catch, thanks @dreamlike-ocean !

@netty-project-bot

Copy link
Copy Markdown
Contributor

Auto-port PR for 5.0: #16641

@github-actions github-actions Bot removed the needs-cherry-pick-5.0 This PR should be cherry-picked to 5.0 once merged. label Apr 13, 2026
chrisvest pushed a commit that referenced this pull request Apr 14, 2026
Auto-port of #16603 to 5.0
Cherry-picked commit: b4c2ddb

---
Motivation:

- Unnecessary JNI fallback
When `Unsafe` is disabled or unavailable, but the JDK provides a usable
FFM (Foreign Function & Memory) API, the existing code still falls back
to JNI to obtain the address of a direct `ByteBuffer`.

- Incorrect FFM semantics in `PlatformDependent0#directBufferAddress`  
The `Unsafe` branch returns the **base address** of the direct buffer
(index 0), consistent with JNI `GetDirectBufferAddress`.
However, the FFM branch uses `MemorySegment.ofBuffer(buffer).address()`,
which effectively returns `baseAddress + position`.
This leads to inconsistent semantics between the FFM and Unsafe/JNI
implementations.

``` java
        ByteBuffer byteBuffer = ByteBuffer.allocateDirect(1024);

        //ffm api
        System.out.println(PlatformDependent.directBufferAddress(byteBuffer));
        // jni
        System.out.println(Buffer.memoryAddress(byteBuffer));

        byteBuffer = byteBuffer.position(16);
        System.out.println(PlatformDependent.directBufferAddress(byteBuffer));
        System.out.println(Buffer.memoryAddress(byteBuffer));
```

On Java 25 and Netty 4.2.12.Final, this code prints:
```
129502193232224
129502193232224
129502193232240
129502193232224
```

The third line reflects baseAddress + 16, demonstrating that the FFM
path is position-dependent, while the JNI path remains
position-independent.

Modification:

- Prefer the FFM/JVM path when `Unsafe` is unavailable but FFM is
available, avoiding the JNI fallback.
- Fix the FFM branch to return the same **base-address semantics** as
the Unsafe/JNI paths (i.e., position-independent).


Result:

 fix FFM address semantics in directBufferAddress

Co-authored-by: Mengyang Li <56702218+dreamlike-ocean@users.noreply.github.com>
Co-authored-by: Norman Maurer <norman_maurer@apple.com>
mergify Bot added a commit to ArcadeData/arcadedb that referenced this pull request May 10, 2026
…l [skip ci]

Bumps [io.netty:netty-all](https://github.com/netty/netty) from 4.2.12.Final to 4.2.13.Final.
Release notes

*Sourced from [io.netty:netty-all's releases](https://github.com/netty/netty/releases).*

> netty-4.2.13.Final
> ------------------
>
> CVEs Fixed
> ----------
>
> * [CVE-2026-42586](GHSA-rgrr-p7gp-5xj7) (netty-codec-redis)
> * [CVE-2026-42578](GHSA-45q3-82m4-75jr) (netty-handler-proxy)
> * [CVE-2026-42577](GHSA-rwm7-x88c-3g2p) (netty-transport-native-epoll)
> * [CVE-2026-42587](GHSA-f6hv-jmp6-3vwv) (netty-codec-http, netty-codec-http2)
> * [CVE-2026-41417](GHSA-v8h7-rr48-vmmv) (netty-codec-http)
> * [CVE-2026-42581](GHSA-xxqh-mfjm-7mv9) (netty-codec-http)
> * [CVE-2026-42580](GHSA-m4cv-j2px-7723) (netty-codec-http)
> * [CVE-2026-42585](GHSA-38f8-5428-x5cv) (netty-codec-http)
> * [CVE-2026-42579](GHSA-cm33-6792-r9fm) (netty-codec-dns)
> * [CVE-2026-42582](GHSA-2c5c-chwr-9hqw) (netty-codec-http3)
> * [CVE-2026-42583](GHSA-mj4r-2hfc-f8p6) (netty-codec, netty-codec-compression)
> * [CVE-2026-42584](GHSA-57rv-r2g8-2cj3) (netty-codec-http)
> * [CVE-2026-44248](GHSA-jfg9-48mv-9qgx) (netty-codec-mqtt)
>
> What's Changed
> --------------
>
> * Kqueue: sendfile EINTR doesn't advance offset — data duplication by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16544](https://redirect.github.com/netty/netty/pull/16544)
> * Replace usage of strerror with thread-safe alternative by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16547](https://redirect.github.com/netty/netty/pull/16547)
> * Fix implementation of strerror\_r\_xsi for GNU by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16546](https://redirect.github.com/netty/netty/pull/16546)
> * Lazy init ArrayList in DefaultHeaders.getAll by [`@​doom369`](https://github.com/doom369) in [netty/netty#16526](https://redirect.github.com/netty/netty/pull/16526)
> * Less logging in AWS-LC build by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16565](https://redirect.github.com/netty/netty/pull/16565)
> * Ensure the CRYPTO\_BUFFER\_POOL is also freed when we fail creating the SSLContext by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16545](https://redirect.github.com/netty/netty/pull/16545)
> * Auto-port 4.2: Fix IndexOutOfBoundsException in StompSubframeDecoder on heartbeat by [`@​netty-project-bot`](https://github.com/netty-project-bot) in [netty/netty#16543](https://redirect.github.com/netty/netty/pull/16543)
> * Avoid leak in PemReader on OutOfDirectMemoryError by [`@​raipc`](https://github.com/raipc) in [netty/netty#16551](https://redirect.github.com/netty/netty/pull/16551)
> * IoUring: Disable test while we debug to unblock other builds by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16581](https://redirect.github.com/netty/netty/pull/16581)
> * Include user properties and subscription IDs in MqttProperties#isEmpty by [`@​ShadowySpirits`](https://github.com/ShadowySpirits) in [netty/netty#16575](https://redirect.github.com/netty/netty/pull/16575)
> * Native DNS resolver: Guard against malloc failures by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16559](https://redirect.github.com/netty/netty/pull/16559)
> * Auto-port 4.2: Increase timeouts for QuicChannelConnectTest by [`@​netty-project-bot`](https://github.com/netty-project-bot) in [netty/netty#16578](https://redirect.github.com/netty/netty/pull/16578)
> * Fix parsing HTTP chunks with multiple extensions by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16579](https://redirect.github.com/netty/netty/pull/16579)
> * Bump org.codehaus.plexus:plexus-utils from 3.4.2 to 4.0.3 in /codec-native-quic by [`@​dependabot`](https://github.com/dependabot)[bot] in [netty/netty#16572](https://redirect.github.com/netty/netty/pull/16572)
> * Revert to PR build to Ubuntu 22.04 by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16595](https://redirect.github.com/netty/netty/pull/16595)
> * Native transports: Correctly create pipe when pipe2 is not supported by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16592](https://redirect.github.com/netty/netty/pull/16592)
> * Epoll: Cleanup code to always return negative value on failure by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16591](https://redirect.github.com/netty/netty/pull/16591)
> * Fix component search fast path by [`@​yawkat`](https://github.com/yawkat) in [netty/netty#16548](https://redirect.github.com/netty/netty/pull/16548)
> * Stabilize read-only toStringMultipleThreads1 by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16608](https://redirect.github.com/netty/netty/pull/16608)
> * Stabilize more AbstractByteBufTests by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16611](https://redirect.github.com/netty/netty/pull/16611)
> * Remove note about needing 256-bit for PQC by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16605](https://redirect.github.com/netty/netty/pull/16605)
> * Stabilize testSessionInvalidate for Conscrypt by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16615](https://redirect.github.com/netty/netty/pull/16615)
> * Quic: Correctly handle SSL\_CTX\_new failures by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16622](https://redirect.github.com/netty/netty/pull/16622)
> * Make LocalIoHandle public by [`@​rdicroce`](https://github.com/rdicroce) in [netty/netty#16621](https://redirect.github.com/netty/netty/pull/16621)
> * Quic: Fix shadowing of variable which leads to incorrectly handling errors by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16623](https://redirect.github.com/netty/netty/pull/16623)
> * Auto-port 4.2: Use stream error for maxContentLength exceeded in InboundHttp2ToHttpAdapter by [`@​netty-project-bot`](https://github.com/netty-project-bot) in [netty/netty#16629](https://redirect.github.com/netty/netty/pull/16629)
> * Fix `shutdownInput` bug in kqueue for empty recv buffer by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16630](https://redirect.github.com/netty/netty/pull/16630)
> * fix FFM address semantics in directBufferAddress by [`@​dreamlike-ocean`](https://github.com/dreamlike-ocean) in [netty/netty#16603](https://redirect.github.com/netty/netty/pull/16603)
> * HTTP2: Ensure HTTP2 preface is always send as first message by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16636](https://redirect.github.com/netty/netty/pull/16636)
> * Move Http2FrameCodecSubClassTest to correct package by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16640](https://redirect.github.com/netty/netty/pull/16640)
> * Kqueue: Fix usage of LOCAL\_PEERPID by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16637](https://redirect.github.com/netty/netty/pull/16637)
> * Avoid ArrayQueue allocation in HttpServerCodec by [`@​doom369`](https://github.com/doom369) in [netty/netty#16596](https://redirect.github.com/netty/netty/pull/16596)
> * Fix file descriptor reuse bug in kqueue by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16650](https://redirect.github.com/netty/netty/pull/16650)

... (truncated)


Commits

* [`b3844c8`](netty/netty@b3844c8) [maven-release-plugin] prepare release netty-4.2.13.Final
* [`82f47fa`](netty/netty@82f47fa) Merge commit from fork
* [`ada0999`](netty/netty@ada0999) Merge commit from fork
* [`b4051e2`](netty/netty@b4051e2) Fix BrotliDecoder not forwarding all decompressed chunks
* [`67207c1`](netty/netty@67207c1) Merge commit from fork
* [`541ca7c`](netty/netty@541ca7c) Merge commit from fork
* [`943edb3`](netty/netty@943edb3) Fix codec-dns tests
* [`6459a28`](netty/netty@6459a28) Merge commit from fork
* [`b4ba61b`](netty/netty@b4ba61b) Fix checkstyle in HttpObjectDecoder
* [`977661f`](netty/netty@977661f) Merge commit from fork
* Additional commits viewable in [compare view](netty/netty@netty-4.2.12.Final...netty-4.2.13.Final)
  
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility\_score?dependency-name=io.netty:netty-all&package-manager=maven&previous-version=4.2.12.Final&new-version=4.2.13.Final)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
  
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show  ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
mergify Bot added a commit to ArcadeData/arcadedb that referenced this pull request May 10, 2026
…ip ci]

Bumps `netty.version` from 4.2.12.Final to 4.2.13.Final.
Updates `io.netty:netty-transport` from 4.2.12.Final to 4.2.13.Final
Release notes

*Sourced from [io.netty:netty-transport's releases](https://github.com/netty/netty/releases).*

> netty-4.2.13.Final
> ------------------
>
> CVEs Fixed
> ----------
>
> * [CVE-2026-42586](GHSA-rgrr-p7gp-5xj7) (netty-codec-redis)
> * [CVE-2026-42578](GHSA-45q3-82m4-75jr) (netty-handler-proxy)
> * [CVE-2026-42577](GHSA-rwm7-x88c-3g2p) (netty-transport-native-epoll)
> * [CVE-2026-42587](GHSA-f6hv-jmp6-3vwv) (netty-codec-http, netty-codec-http2)
> * [CVE-2026-41417](GHSA-v8h7-rr48-vmmv) (netty-codec-http)
> * [CVE-2026-42581](GHSA-xxqh-mfjm-7mv9) (netty-codec-http)
> * [CVE-2026-42580](GHSA-m4cv-j2px-7723) (netty-codec-http)
> * [CVE-2026-42585](GHSA-38f8-5428-x5cv) (netty-codec-http)
> * [CVE-2026-42579](GHSA-cm33-6792-r9fm) (netty-codec-dns)
> * [CVE-2026-42582](GHSA-2c5c-chwr-9hqw) (netty-codec-http3)
> * [CVE-2026-42583](GHSA-mj4r-2hfc-f8p6) (netty-codec, netty-codec-compression)
> * [CVE-2026-42584](GHSA-57rv-r2g8-2cj3) (netty-codec-http)
> * [CVE-2026-44248](GHSA-jfg9-48mv-9qgx) (netty-codec-mqtt)
>
> What's Changed
> --------------
>
> * Kqueue: sendfile EINTR doesn't advance offset — data duplication by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16544](https://redirect.github.com/netty/netty/pull/16544)
> * Replace usage of strerror with thread-safe alternative by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16547](https://redirect.github.com/netty/netty/pull/16547)
> * Fix implementation of strerror\_r\_xsi for GNU by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16546](https://redirect.github.com/netty/netty/pull/16546)
> * Lazy init ArrayList in DefaultHeaders.getAll by [`@​doom369`](https://github.com/doom369) in [netty/netty#16526](https://redirect.github.com/netty/netty/pull/16526)
> * Less logging in AWS-LC build by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16565](https://redirect.github.com/netty/netty/pull/16565)
> * Ensure the CRYPTO\_BUFFER\_POOL is also freed when we fail creating the SSLContext by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16545](https://redirect.github.com/netty/netty/pull/16545)
> * Auto-port 4.2: Fix IndexOutOfBoundsException in StompSubframeDecoder on heartbeat by [`@​netty-project-bot`](https://github.com/netty-project-bot) in [netty/netty#16543](https://redirect.github.com/netty/netty/pull/16543)
> * Avoid leak in PemReader on OutOfDirectMemoryError by [`@​raipc`](https://github.com/raipc) in [netty/netty#16551](https://redirect.github.com/netty/netty/pull/16551)
> * IoUring: Disable test while we debug to unblock other builds by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16581](https://redirect.github.com/netty/netty/pull/16581)
> * Include user properties and subscription IDs in MqttProperties#isEmpty by [`@​ShadowySpirits`](https://github.com/ShadowySpirits) in [netty/netty#16575](https://redirect.github.com/netty/netty/pull/16575)
> * Native DNS resolver: Guard against malloc failures by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16559](https://redirect.github.com/netty/netty/pull/16559)
> * Auto-port 4.2: Increase timeouts for QuicChannelConnectTest by [`@​netty-project-bot`](https://github.com/netty-project-bot) in [netty/netty#16578](https://redirect.github.com/netty/netty/pull/16578)
> * Fix parsing HTTP chunks with multiple extensions by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16579](https://redirect.github.com/netty/netty/pull/16579)
> * Bump org.codehaus.plexus:plexus-utils from 3.4.2 to 4.0.3 in /codec-native-quic by [`@​dependabot`](https://github.com/dependabot)[bot] in [netty/netty#16572](https://redirect.github.com/netty/netty/pull/16572)
> * Revert to PR build to Ubuntu 22.04 by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16595](https://redirect.github.com/netty/netty/pull/16595)
> * Native transports: Correctly create pipe when pipe2 is not supported by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16592](https://redirect.github.com/netty/netty/pull/16592)
> * Epoll: Cleanup code to always return negative value on failure by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16591](https://redirect.github.com/netty/netty/pull/16591)
> * Fix component search fast path by [`@​yawkat`](https://github.com/yawkat) in [netty/netty#16548](https://redirect.github.com/netty/netty/pull/16548)
> * Stabilize read-only toStringMultipleThreads1 by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16608](https://redirect.github.com/netty/netty/pull/16608)
> * Stabilize more AbstractByteBufTests by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16611](https://redirect.github.com/netty/netty/pull/16611)
> * Remove note about needing 256-bit for PQC by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16605](https://redirect.github.com/netty/netty/pull/16605)
> * Stabilize testSessionInvalidate for Conscrypt by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16615](https://redirect.github.com/netty/netty/pull/16615)
> * Quic: Correctly handle SSL\_CTX\_new failures by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16622](https://redirect.github.com/netty/netty/pull/16622)
> * Make LocalIoHandle public by [`@​rdicroce`](https://github.com/rdicroce) in [netty/netty#16621](https://redirect.github.com/netty/netty/pull/16621)
> * Quic: Fix shadowing of variable which leads to incorrectly handling errors by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16623](https://redirect.github.com/netty/netty/pull/16623)
> * Auto-port 4.2: Use stream error for maxContentLength exceeded in InboundHttp2ToHttpAdapter by [`@​netty-project-bot`](https://github.com/netty-project-bot) in [netty/netty#16629](https://redirect.github.com/netty/netty/pull/16629)
> * Fix `shutdownInput` bug in kqueue for empty recv buffer by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16630](https://redirect.github.com/netty/netty/pull/16630)
> * fix FFM address semantics in directBufferAddress by [`@​dreamlike-ocean`](https://github.com/dreamlike-ocean) in [netty/netty#16603](https://redirect.github.com/netty/netty/pull/16603)
> * HTTP2: Ensure HTTP2 preface is always send as first message by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16636](https://redirect.github.com/netty/netty/pull/16636)
> * Move Http2FrameCodecSubClassTest to correct package by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16640](https://redirect.github.com/netty/netty/pull/16640)
> * Kqueue: Fix usage of LOCAL\_PEERPID by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16637](https://redirect.github.com/netty/netty/pull/16637)
> * Avoid ArrayQueue allocation in HttpServerCodec by [`@​doom369`](https://github.com/doom369) in [netty/netty#16596](https://redirect.github.com/netty/netty/pull/16596)
> * Fix file descriptor reuse bug in kqueue by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16650](https://redirect.github.com/netty/netty/pull/16650)

... (truncated)


Commits

* [`b3844c8`](netty/netty@b3844c8) [maven-release-plugin] prepare release netty-4.2.13.Final
* [`82f47fa`](netty/netty@82f47fa) Merge commit from fork
* [`ada0999`](netty/netty@ada0999) Merge commit from fork
* [`b4051e2`](netty/netty@b4051e2) Fix BrotliDecoder not forwarding all decompressed chunks
* [`67207c1`](netty/netty@67207c1) Merge commit from fork
* [`541ca7c`](netty/netty@541ca7c) Merge commit from fork
* [`943edb3`](netty/netty@943edb3) Fix codec-dns tests
* [`6459a28`](netty/netty@6459a28) Merge commit from fork
* [`b4ba61b`](netty/netty@b4ba61b) Fix checkstyle in HttpObjectDecoder
* [`977661f`](netty/netty@977661f) Merge commit from fork
* Additional commits viewable in [compare view](netty/netty@netty-4.2.12.Final...netty-4.2.13.Final)
  
Updates `io.netty:netty-codec` from 4.2.12.Final to 4.2.13.Final
Release notes

*Sourced from [io.netty:netty-codec's releases](https://github.com/netty/netty/releases).*

> netty-4.2.13.Final
> ------------------
>
> CVEs Fixed
> ----------
>
> * [CVE-2026-42586](GHSA-rgrr-p7gp-5xj7) (netty-codec-redis)
> * [CVE-2026-42578](GHSA-45q3-82m4-75jr) (netty-handler-proxy)
> * [CVE-2026-42577](GHSA-rwm7-x88c-3g2p) (netty-transport-native-epoll)
> * [CVE-2026-42587](GHSA-f6hv-jmp6-3vwv) (netty-codec-http, netty-codec-http2)
> * [CVE-2026-41417](GHSA-v8h7-rr48-vmmv) (netty-codec-http)
> * [CVE-2026-42581](GHSA-xxqh-mfjm-7mv9) (netty-codec-http)
> * [CVE-2026-42580](GHSA-m4cv-j2px-7723) (netty-codec-http)
> * [CVE-2026-42585](GHSA-38f8-5428-x5cv) (netty-codec-http)
> * [CVE-2026-42579](GHSA-cm33-6792-r9fm) (netty-codec-dns)
> * [CVE-2026-42582](GHSA-2c5c-chwr-9hqw) (netty-codec-http3)
> * [CVE-2026-42583](GHSA-mj4r-2hfc-f8p6) (netty-codec, netty-codec-compression)
> * [CVE-2026-42584](GHSA-57rv-r2g8-2cj3) (netty-codec-http)
> * [CVE-2026-44248](GHSA-jfg9-48mv-9qgx) (netty-codec-mqtt)
>
> What's Changed
> --------------
>
> * Kqueue: sendfile EINTR doesn't advance offset — data duplication by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16544](https://redirect.github.com/netty/netty/pull/16544)
> * Replace usage of strerror with thread-safe alternative by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16547](https://redirect.github.com/netty/netty/pull/16547)
> * Fix implementation of strerror\_r\_xsi for GNU by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16546](https://redirect.github.com/netty/netty/pull/16546)
> * Lazy init ArrayList in DefaultHeaders.getAll by [`@​doom369`](https://github.com/doom369) in [netty/netty#16526](https://redirect.github.com/netty/netty/pull/16526)
> * Less logging in AWS-LC build by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16565](https://redirect.github.com/netty/netty/pull/16565)
> * Ensure the CRYPTO\_BUFFER\_POOL is also freed when we fail creating the SSLContext by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16545](https://redirect.github.com/netty/netty/pull/16545)
> * Auto-port 4.2: Fix IndexOutOfBoundsException in StompSubframeDecoder on heartbeat by [`@​netty-project-bot`](https://github.com/netty-project-bot) in [netty/netty#16543](https://redirect.github.com/netty/netty/pull/16543)
> * Avoid leak in PemReader on OutOfDirectMemoryError by [`@​raipc`](https://github.com/raipc) in [netty/netty#16551](https://redirect.github.com/netty/netty/pull/16551)
> * IoUring: Disable test while we debug to unblock other builds by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16581](https://redirect.github.com/netty/netty/pull/16581)
> * Include user properties and subscription IDs in MqttProperties#isEmpty by [`@​ShadowySpirits`](https://github.com/ShadowySpirits) in [netty/netty#16575](https://redirect.github.com/netty/netty/pull/16575)
> * Native DNS resolver: Guard against malloc failures by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16559](https://redirect.github.com/netty/netty/pull/16559)
> * Auto-port 4.2: Increase timeouts for QuicChannelConnectTest by [`@​netty-project-bot`](https://github.com/netty-project-bot) in [netty/netty#16578](https://redirect.github.com/netty/netty/pull/16578)
> * Fix parsing HTTP chunks with multiple extensions by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16579](https://redirect.github.com/netty/netty/pull/16579)
> * Bump org.codehaus.plexus:plexus-utils from 3.4.2 to 4.0.3 in /codec-native-quic by [`@​dependabot`](https://github.com/dependabot)[bot] in [netty/netty#16572](https://redirect.github.com/netty/netty/pull/16572)
> * Revert to PR build to Ubuntu 22.04 by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16595](https://redirect.github.com/netty/netty/pull/16595)
> * Native transports: Correctly create pipe when pipe2 is not supported by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16592](https://redirect.github.com/netty/netty/pull/16592)
> * Epoll: Cleanup code to always return negative value on failure by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16591](https://redirect.github.com/netty/netty/pull/16591)
> * Fix component search fast path by [`@​yawkat`](https://github.com/yawkat) in [netty/netty#16548](https://redirect.github.com/netty/netty/pull/16548)
> * Stabilize read-only toStringMultipleThreads1 by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16608](https://redirect.github.com/netty/netty/pull/16608)
> * Stabilize more AbstractByteBufTests by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16611](https://redirect.github.com/netty/netty/pull/16611)
> * Remove note about needing 256-bit for PQC by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16605](https://redirect.github.com/netty/netty/pull/16605)
> * Stabilize testSessionInvalidate for Conscrypt by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16615](https://redirect.github.com/netty/netty/pull/16615)
> * Quic: Correctly handle SSL\_CTX\_new failures by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16622](https://redirect.github.com/netty/netty/pull/16622)
> * Make LocalIoHandle public by [`@​rdicroce`](https://github.com/rdicroce) in [netty/netty#16621](https://redirect.github.com/netty/netty/pull/16621)
> * Quic: Fix shadowing of variable which leads to incorrectly handling errors by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16623](https://redirect.github.com/netty/netty/pull/16623)
> * Auto-port 4.2: Use stream error for maxContentLength exceeded in InboundHttp2ToHttpAdapter by [`@​netty-project-bot`](https://github.com/netty-project-bot) in [netty/netty#16629](https://redirect.github.com/netty/netty/pull/16629)
> * Fix `shutdownInput` bug in kqueue for empty recv buffer by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16630](https://redirect.github.com/netty/netty/pull/16630)
> * fix FFM address semantics in directBufferAddress by [`@​dreamlike-ocean`](https://github.com/dreamlike-ocean) in [netty/netty#16603](https://redirect.github.com/netty/netty/pull/16603)
> * HTTP2: Ensure HTTP2 preface is always send as first message by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16636](https://redirect.github.com/netty/netty/pull/16636)
> * Move Http2FrameCodecSubClassTest to correct package by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16640](https://redirect.github.com/netty/netty/pull/16640)
> * Kqueue: Fix usage of LOCAL\_PEERPID by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16637](https://redirect.github.com/netty/netty/pull/16637)
> * Avoid ArrayQueue allocation in HttpServerCodec by [`@​doom369`](https://github.com/doom369) in [netty/netty#16596](https://redirect.github.com/netty/netty/pull/16596)
> * Fix file descriptor reuse bug in kqueue by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16650](https://redirect.github.com/netty/netty/pull/16650)

... (truncated)


Commits

* [`b3844c8`](netty/netty@b3844c8) [maven-release-plugin] prepare release netty-4.2.13.Final
* [`82f47fa`](netty/netty@82f47fa) Merge commit from fork
* [`ada0999`](netty/netty@ada0999) Merge commit from fork
* [`b4051e2`](netty/netty@b4051e2) Fix BrotliDecoder not forwarding all decompressed chunks
* [`67207c1`](netty/netty@67207c1) Merge commit from fork
* [`541ca7c`](netty/netty@541ca7c) Merge commit from fork
* [`943edb3`](netty/netty@943edb3) Fix codec-dns tests
* [`6459a28`](netty/netty@6459a28) Merge commit from fork
* [`b4ba61b`](netty/netty@b4ba61b) Fix checkstyle in HttpObjectDecoder
* [`977661f`](netty/netty@977661f) Merge commit from fork
* Additional commits viewable in [compare view](netty/netty@netty-4.2.12.Final...netty-4.2.13.Final)
  
Updates `io.netty:netty-handler` from 4.2.12.Final to 4.2.13.Final
Release notes

*Sourced from [io.netty:netty-handler's releases](https://github.com/netty/netty/releases).*

> netty-4.2.13.Final
> ------------------
>
> CVEs Fixed
> ----------
>
> * [CVE-2026-42586](GHSA-rgrr-p7gp-5xj7) (netty-codec-redis)
> * [CVE-2026-42578](GHSA-45q3-82m4-75jr) (netty-handler-proxy)
> * [CVE-2026-42577](GHSA-rwm7-x88c-3g2p) (netty-transport-native-epoll)
> * [CVE-2026-42587](GHSA-f6hv-jmp6-3vwv) (netty-codec-http, netty-codec-http2)
> * [CVE-2026-41417](GHSA-v8h7-rr48-vmmv) (netty-codec-http)
> * [CVE-2026-42581](GHSA-xxqh-mfjm-7mv9) (netty-codec-http)
> * [CVE-2026-42580](GHSA-m4cv-j2px-7723) (netty-codec-http)
> * [CVE-2026-42585](GHSA-38f8-5428-x5cv) (netty-codec-http)
> * [CVE-2026-42579](GHSA-cm33-6792-r9fm) (netty-codec-dns)
> * [CVE-2026-42582](GHSA-2c5c-chwr-9hqw) (netty-codec-http3)
> * [CVE-2026-42583](GHSA-mj4r-2hfc-f8p6) (netty-codec, netty-codec-compression)
> * [CVE-2026-42584](GHSA-57rv-r2g8-2cj3) (netty-codec-http)
> * [CVE-2026-44248](GHSA-jfg9-48mv-9qgx) (netty-codec-mqtt)
>
> What's Changed
> --------------
>
> * Kqueue: sendfile EINTR doesn't advance offset — data duplication by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16544](https://redirect.github.com/netty/netty/pull/16544)
> * Replace usage of strerror with thread-safe alternative by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16547](https://redirect.github.com/netty/netty/pull/16547)
> * Fix implementation of strerror\_r\_xsi for GNU by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16546](https://redirect.github.com/netty/netty/pull/16546)
> * Lazy init ArrayList in DefaultHeaders.getAll by [`@​doom369`](https://github.com/doom369) in [netty/netty#16526](https://redirect.github.com/netty/netty/pull/16526)
> * Less logging in AWS-LC build by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16565](https://redirect.github.com/netty/netty/pull/16565)
> * Ensure the CRYPTO\_BUFFER\_POOL is also freed when we fail creating the SSLContext by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16545](https://redirect.github.com/netty/netty/pull/16545)
> * Auto-port 4.2: Fix IndexOutOfBoundsException in StompSubframeDecoder on heartbeat by [`@​netty-project-bot`](https://github.com/netty-project-bot) in [netty/netty#16543](https://redirect.github.com/netty/netty/pull/16543)
> * Avoid leak in PemReader on OutOfDirectMemoryError by [`@​raipc`](https://github.com/raipc) in [netty/netty#16551](https://redirect.github.com/netty/netty/pull/16551)
> * IoUring: Disable test while we debug to unblock other builds by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16581](https://redirect.github.com/netty/netty/pull/16581)
> * Include user properties and subscription IDs in MqttProperties#isEmpty by [`@​ShadowySpirits`](https://github.com/ShadowySpirits) in [netty/netty#16575](https://redirect.github.com/netty/netty/pull/16575)
> * Native DNS resolver: Guard against malloc failures by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16559](https://redirect.github.com/netty/netty/pull/16559)
> * Auto-port 4.2: Increase timeouts for QuicChannelConnectTest by [`@​netty-project-bot`](https://github.com/netty-project-bot) in [netty/netty#16578](https://redirect.github.com/netty/netty/pull/16578)
> * Fix parsing HTTP chunks with multiple extensions by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16579](https://redirect.github.com/netty/netty/pull/16579)
> * Bump org.codehaus.plexus:plexus-utils from 3.4.2 to 4.0.3 in /codec-native-quic by [`@​dependabot`](https://github.com/dependabot)[bot] in [netty/netty#16572](https://redirect.github.com/netty/netty/pull/16572)
> * Revert to PR build to Ubuntu 22.04 by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16595](https://redirect.github.com/netty/netty/pull/16595)
> * Native transports: Correctly create pipe when pipe2 is not supported by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16592](https://redirect.github.com/netty/netty/pull/16592)
> * Epoll: Cleanup code to always return negative value on failure by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16591](https://redirect.github.com/netty/netty/pull/16591)
> * Fix component search fast path by [`@​yawkat`](https://github.com/yawkat) in [netty/netty#16548](https://redirect.github.com/netty/netty/pull/16548)
> * Stabilize read-only toStringMultipleThreads1 by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16608](https://redirect.github.com/netty/netty/pull/16608)
> * Stabilize more AbstractByteBufTests by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16611](https://redirect.github.com/netty/netty/pull/16611)
> * Remove note about needing 256-bit for PQC by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16605](https://redirect.github.com/netty/netty/pull/16605)
> * Stabilize testSessionInvalidate for Conscrypt by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16615](https://redirect.github.com/netty/netty/pull/16615)
> * Quic: Correctly handle SSL\_CTX\_new failures by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16622](https://redirect.github.com/netty/netty/pull/16622)
> * Make LocalIoHandle public by [`@​rdicroce`](https://github.com/rdicroce) in [netty/netty#16621](https://redirect.github.com/netty/netty/pull/16621)
> * Quic: Fix shadowing of variable which leads to incorrectly handling errors by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16623](https://redirect.github.com/netty/netty/pull/16623)
> * Auto-port 4.2: Use stream error for maxContentLength exceeded in InboundHttp2ToHttpAdapter by [`@​netty-project-bot`](https://github.com/netty-project-bot) in [netty/netty#16629](https://redirect.github.com/netty/netty/pull/16629)
> * Fix `shutdownInput` bug in kqueue for empty recv buffer by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16630](https://redirect.github.com/netty/netty/pull/16630)
> * fix FFM address semantics in directBufferAddress by [`@​dreamlike-ocean`](https://github.com/dreamlike-ocean) in [netty/netty#16603](https://redirect.github.com/netty/netty/pull/16603)
> * HTTP2: Ensure HTTP2 preface is always send as first message by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16636](https://redirect.github.com/netty/netty/pull/16636)
> * Move Http2FrameCodecSubClassTest to correct package by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16640](https://redirect.github.com/netty/netty/pull/16640)
> * Kqueue: Fix usage of LOCAL\_PEERPID by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16637](https://redirect.github.com/netty/netty/pull/16637)
> * Avoid ArrayQueue allocation in HttpServerCodec by [`@​doom369`](https://github.com/doom369) in [netty/netty#16596](https://redirect.github.com/netty/netty/pull/16596)
> * Fix file descriptor reuse bug in kqueue by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16650](https://redirect.github.com/netty/netty/pull/16650)

... (truncated)


Commits

* [`b3844c8`](netty/netty@b3844c8) [maven-release-plugin] prepare release netty-4.2.13.Final
* [`82f47fa`](netty/netty@82f47fa) Merge commit from fork
* [`ada0999`](netty/netty@ada0999) Merge commit from fork
* [`b4051e2`](netty/netty@b4051e2) Fix BrotliDecoder not forwarding all decompressed chunks
* [`67207c1`](netty/netty@67207c1) Merge commit from fork
* [`541ca7c`](netty/netty@541ca7c) Merge commit from fork
* [`943edb3`](netty/netty@943edb3) Fix codec-dns tests
* [`6459a28`](netty/netty@6459a28) Merge commit from fork
* [`b4ba61b`](netty/netty@b4ba61b) Fix checkstyle in HttpObjectDecoder
* [`977661f`](netty/netty@977661f) Merge commit from fork
* Additional commits viewable in [compare view](netty/netty@netty-4.2.12.Final...netty-4.2.13.Final)
  
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
  
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show  ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants