# Patch Package OTP 27.3.4.19 Released

**URL:** <https://erlangforums.com/t/patch-package-otp-27-3-4-19-released/6049>\
**Category:** Erlang News\
**Tags:** erlang-release\
**Created:** [October 14, 2026, 3:40pm UTC](https://erlangforums.com/t/patch-package-otp-27-3-4-19-released/6049 "2026-10-14T15:40:08Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![ingela](https://erlangforums.com/letter_avatar_proxy/v4/letter/i/53a042/32.png) [@ingela](https://erlangforums.com/u/ingela)\
**Post date:** [October 14, 2026, 3:40pm UTC](https://erlangforums.com/t/patch-package-otp-27-3-4-19-released/6049/1 "2026-10-14T15:40:08Z")

</div>

```erlang
Patch Package: OTP 27.3.4.19
Git Tag: OTP-27.3.4.19
Date: 2026-10-14
Trouble Report Id: OTP-20360, OTP-20385, OTP-20392, OTP-20394,
                         OTP-20408, OTP-20418, OTP-20420, OTP-20423,
                         OTP-20426, OTP-20427, OTP-20428, OTP-20430,
                         OTP-20437, OTP-20438, OTP-20439, OTP-20442,
                         OTP-20445, OTP-20456
Seq num: CVE-2026-105236, CVE-2026-42789,
                         CVE-2026-48856, CVE-2026-94200, ERIERL-1362,
                         ERIERL-1367, GH-11620, GH-11702, GH-11709,
                         GH-11735, GH-11748, GH-SA-m75x-4vwg-ggjh,
                         GH-SA-q7cq-pfgf-5hr7, OTP-20155, OTP-20346,
                         PR-11561, PR-11623, PR-11662, PR-11692,
                         PR-11707, PR-11708, PR-11720, PR-11727,
                         PR-11751, PR-11753, PR-11755, PR-11767,
                         PR-11773, PR-11808, PR-11823, PR-11824,
                         PR-11825
System: OTP
Release: 27
Application: compiler-8.6.1.8, erts-15.2.7.14,
                         inets-9.3.2.8, mnesia-4.23.5.6,
                         odbc-2.15.0.1, public_key-1.17.1.7,
                         snmp-5.18.2.2, ssh-5.2.11.14, ssl-11.2.12.14
Predecessor: OTP 27.3.4.18

```

Check out the git tag OTP-27.3.4.19, and build a full OTP system including  
documentation. Apply one or more applications from this build as patches to your  
installation using the ‘otp\_patch\_apply’ tool. For information on install  
requirements, see descriptions for each application version below.

# POTENTIAL INCOMPATIBILITIES

- When the max\_channels limit is reached for a port-forwarding channel  
(direct-tcpip or forwarded-tcpip), the SSH daemon now refuses the individual  
channel with SSH\_MSG\_CHANNEL\_OPEN\_FAILURE and keeps the connection alive,  
instead of terminating the whole SSH connection. Port-forwarding channels now  
behave like session channels, which already survived the limit, and this  
matches OpenSSH. Applications that relied on the connection being closed when  
the channel limit was reached must instead handle the channel-open failure.

# compiler-8.6.1.8

The compiler-8.6.1.8 application can be applied independently of other  
applications on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Compilation of a function with thousands of clauses would be very slow.

- Sometimes compiling with `deterministic` would not guarantee generation of  
identical BEAM files for every build.

> #### Full runtime dependencies of compiler-8.6.1.8
> 
> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0

# erts-15.2.7.14

The erts-15.2.7.14 application can be applied independently of other  
applications on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Two trace sessions that trace `garbage_collection` on the same process crash  
the emulator on the first collection.

> #### Full runtime dependencies of erts-15.2.7.14
> 
> kernel-9.0, sasl-3.3, stdlib-4.1

# inets-9.3.2.8

The inets-9.3.2.8 application can be applied independently of other applications  
on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Credentials supplied in the userinfo component of a request URI  
(`http://user``:password@host/path`) were still sent to the redirect target when  
`httpc` followed a cross-origin redirect. The userinfo component is now  
cleared together with the sensitive headers whenever the redirect target  
differs in host or port from the original request. Redirects that stay within  
the same origin are unaffected and still carry the credentials.

> #### Full runtime dependencies of inets-9.3.2.8
> 
> erts-14.0, kernel-9.0, mnesia-4.12, public\_key-1.13, runtime\_tools-1.8.14,  
> ssl-9.0, stdlib-5.0, stdlib-6.0

# mnesia-4.23.5.6

The mnesia-4.23.5.6 application can be applied independently of other  
applications on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Fixed the type specification for `mnesia:restore/2`, which incorrectly listed  
the operation `restore_tables` instead of `recreate_tables`, causing Dialyzer  
to reject valid calls and accept invalid ones.

> #### Full runtime dependencies of mnesia-4.23.5.6
> 
> erts-9.0, kernel-5.3, stdlib-5.0

# odbc-2.15.0.1

The odbc-2.15.0.1 application can be applied independently of other applications  
on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Fix error handling to avoid possible memory issues that could cause odbc port  
program to fail.

> #### Full runtime dependencies of odbc-2.15.0.1
> 
> erts-6.0, kernel-3.0, stdlib-2.0

# public\_key-1.17.1.7

The public\_key-1.17.1.7 application can be applied independently of other  
applications on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Enforce the RFC 5280 basic-constraints CA checks for X.509 version 1 and  
version 2 certificates during certificate path validation. A v1/v2 certificate  
carries no extensions and therefore no basicConstraints, so it must never be  
accepted as a CA; such a certificate is now rejected in issuer position with  
{bad\_cert, missing\_basic\_constraint} while remaining valid as a leaf. This  
closes the version-1 path left uncovered by the earlier CVE-2026-42789 fix.

> #### Full runtime dependencies of public\_key-1.17.1.7
> 
> asn1-5.0, crypto-5.0, erts-13.0, kernel-8.0, stdlib-4.0

# snmp-5.18.2.2

The snmp-5.18.2.2 application can be applied independently of other applications  
on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- The SNMP agent no longer fails to answer an SNMPv3 message whose msgUserName  
matches the configured terminating-discovery trigger\_username (by default the  
empty string) and whose msgAuthoritativeEngineID is the agent’s own engine ID.  
Such a message is not a stage-1 discovery request, but the agent treated it as  
one and then failed while generating the report, logging a configuration error  
and discarding the request without responding. The agent now answers it with a  
usmStatsUnknownUserNames report, as prescribed by RFC 3414, section 3.2. As a  
consequence of the same change, a message carrying the trigger user name  
together with an unknown, non-empty engine ID is now answered with a  
usmStatsUnknownEngineIDs report instead of being silently discarded.

- The byte-length bounds added in OTP-20346 for varbind values now apply to  
every integer field decoded by snmp\_pdus: the v3 header fields msgID,  
msgMaxSize and msgSecurityModel, the USM security parameters  
msgAuthoritativeEngineBoots and msgAuthoritativeEngineTime, and the PDU fields  
request-id, error-status, error-index, non-repeaters, max-repetitions,  
generic-trap and specific-trap. Each field accepts at most the number of BER  
content octets that its type requires, instead of an arbitrary number of  
octets that were converted into a large integer. An over-long integer is now  
signalled with an exit rather than a throw. Code that calls the exported  
snmp\_pdus decode functions inside a catch will receive {‘EXIT’, Reason} where  
it previously received the thrown term directly. Inside the agent and manager,  
such a message is now discarded and counted in snmpInASNParseErrs; previously  
it caused a case\_clause failure during message processing.

> #### Full runtime dependencies of snmp-5.18.2.2
> 
> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime\_tools-1.8.14,  
> stdlib-5.0

# ssh-5.2.11.14

The ssh-5.2.11.14 application can be applied independently of other applications  
on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Fixed the following bugs in the SSH application:

- Fixed an SSH port-forwarding acceptor crash triggered by a peer that connects  
and immediately resets the connection. Transient TCP errors from accept and  
peername are now handled gracefully instead of terminating the acceptor.

- When the max\_channels limit is reached for a port-forwarding channel  
(direct-tcpip or forwarded-tcpip), the SSH daemon now refuses the individual  
channel with SSH\_MSG\_CHANNEL\_OPEN\_FAILURE and keeps the connection alive,  
instead of terminating the whole SSH connection. Port-forwarding channels now  
behave like session channels, which already survived the limit, and this  
matches OpenSSH. Applications that relied on the connection being closed when  
the channel limit was reached must instead handle the channel-open failure.

> #### Full runtime dependencies of ssh-5.2.11.14
> 
> crypto-5.0, erts-14.0, kernel-9.0, public\_key-1.6.1, runtime\_tools-1.15.1,  
> stdlib-5.0, stdlib-6.0

# ssl-11.2.12.14

Note! The ssl-11.2.12.14 application _cannot_ be applied independently of other  
applications on an arbitrary OTP 27 installation.

```erlang
   On a full OTP 27 installation, also the following runtime
   dependency has to be satisfied:
   -- public_key-1.17.1.3 (first satisfied in OTP 27.3.4.12)

```

## Fixed Bugs and Malfunctions

- DoS attack prevention missed corner case, now fall back to the incomplete  
peer-only chain handling when paths/2 yields no path, restoring the OTP 28  
behavior and matching OpenSSL, curl and browsers. The digraph and its  
chain-length limit from PR #11343 are unchanged, so the DoS protection is  
preserved; the extra cost is one trust-store lookup, as for a leaf-only chain.

- The equivalent options dh and dhfile where unintentionally ignored and the  
default value was used instead.

- Redesign TLS-1.3 auto client ticket handling to adhere to RFC single-use by  
consuming a ticket when offered removing it from the client ticket store. This  
resolves unnecessary connections errors for concurrent client connections that  
previously could end up trying to use the same ticket, or tickets being  
evicted form the client store when a client still needed to look it up.

- Validate the handshake message type when decoding TLS-1.3 hello extensions  
(RFC 8446 / RFC 9846). A malicious or man-in-the-middle TLS-1.3 server could  
send a NewSessionTicket carrying a zero-length early\_data extension, which a  
client with automatic session-ticket management (session\_tickets =\> auto)  
stored and then crashed on during a later resumption, taking down the  
node-global client ticket store and disrupting TLS-1.3 resumption for the  
whole node. Extensions are now decoded only in the handshake messages in which  
they are permitted, so such a ticket is ignored instead of poisoning the  
store. This avoids a denial-of-service possibility.

- Fix a tls\_sender crash during Erlang distribution over TLS (-proto\_dist  
inet\_tls). When a distribution peer disappeared while data was still being  
sent to it, the sender process crashed with a function\_clause in gen:reply/2  
instead of tearing the connection down cleanly. As a side effect the surviving  
node reported a nodedown\_reason of {function\_clause, …} rather than a normal  
teardown reason, which could confuse code that distinguishes a planned  
shutdown from a genuine failure.

- Fixed a TLS/DTLS session resumption flaw ((D)TLS-1.2 abbreviated handshake)  
where an SNI-aware server could resume a cached session even when the  
resumption request’s server\_name differed from the one that established the  
session, violating RFC 6066 §3. In virtual-hosting deployments where several  
SNI names share one server certificate but apply different  
client-authentication trust, a client could resume a session established under  
one SNI name while connecting under another — bypassing the second virtual  
service’s client-authentication boundary and skipping the certificate  
exchange.

> #### Full runtime dependencies of ssl-11.2.12.14
> 
> crypto-5.1, erts-15.0, inets-5.10.7, kernel-9.0, public\_key-1.17.1.3,  
> runtime\_tools-1.15.1, stdlib-6.0

# Thanks to

Alexey Aristov, Daniel Gorin, Marko Mindek
