chore(deps): update tool versions (mise)#8
Open
NexPB wants to merge 1 commit into
Open
Conversation
c35c04e to
97db6cb
Compare
97db6cb to
4f2b3de
Compare
4f2b3de to
d380926
Compare
d380926 to
f1f1708
Compare
f1f1708 to
47b5d96
Compare
47b5d96 to
5604402
Compare
5604402 to
6197344
Compare
6197344 to
8eb4f21
Compare
b79a93d to
a017df1
Compare
a017df1 to
1f636a1
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
1.19.5-otp-28→1.20.128.4→28.524.14.0→24.17.010.32.0→10.34.4Release Notes
elixir-lang/elixir (elixir)
v1.20.1Compare Source
1. Security
Elixir
Versionmodule (CVE-2026-49762, GHSA-w2h8-8x3g-278p)2. Bug fixes
Elixir
Calendar.strftime/2to 1024 charactersCode.require_filereleases the file if compilation failsMix
--no-compileoption when loading pluginsv1.20.0Compare Source
Announcement: https://elixir-lang.org/blog/2026/06/03/elixir-v1-20-0-released/
This release requires Erlang/OTP 27+ and is compatible with Erlang/OTP 29.
Type system improvements
Elixir's type system now understands all language constructs and can infer types for your function definitions, using typing information from Elixir's standard library and your dependencies, to find verified bugs and dead code.
This has been achieved through a series of improvements, such as type refinement across clauses, occurrence typing, typing of map keys and domains, and more.
Type inference of guards
This release also performs inference of guards! Let's see some examples:
The code above correctly infers
xis a list andyis an integer.The one above infers x is a binary or an integer, and
yis a two element tuple with:okas first element and a binary or integer as second.The code above infers
xis a map which has the:fookey, represented as%{..., foo: dynamic()}. Remember the leading...indicates the map may have other keys.And the code above infers
xdoes not have the:fookey (hencex.foowill raise a typing violation), which has the type:%{..., foo: not_set()}.You can also have expressions that assert on the size of data structures:
Elixir will correctly track the tuple has at most two elements, and therefore accessing
elem(x, 3)will emit a typing violation. In other words, Elixir can look at complex guards, infer types, and use this information to find bugs in our code, without a need to introduce type signatures (yet).Whole-body type inference
Elixir also performs inference based on the function body itself. Take the following code:
Elixir now infers that the function expects a
mapas first argument, and the map must have the keys.fooand.barwhose values are eitherinteger()orfloat(). The return type will be eitherinteger()orfloat().Here is another example:
Even though the
+operator works with both integers and floats, Elixir infers thataandbmust be both integers, as the result of+is given to a function that expects an integer. The inferred type information is then used during type checking to find possible typing errors. The typing inferred from your dependencies are also used to help infer more precise types for your own applications.Typing across clauses
Elixir now infers the type of a given clause based on previous clauses. Let's see an example:
System.get_env("SOME_VAR")returns eithernilor abinary(). Because the first clause matches onnil, the type system knowsvaluecan no longer benil, and therefore it must only be abinary(), which allows the second clause to also type check without violations.This type inference across clauses also helps the type system find redundant clauses and dead code in existing codebases. Elixir v1.20 also implements occurrence typing for
cond,case, andwith, providing more precise types within each clause.Typing of atom and domain keys in maps
Maps were one of the first data-structures we implemented within the Elixir type system however, up to this point, they only supported atom keys. If they had additional keys, those keys were simply marked as
dynamic().As of Elixir v1.20, we can track all possible domains as map keys. For example, the map:
will have the type:
It is also possible to mix domain keys, as above, with atom keys, yielding the following:
This system is an implementation of Typing Records, Maps, and Structs, by Giuseppe Castagna (2023).
Typing of map operations
We have typed the majority of the functions in the
Mapmodule, allowing the type system to track how keys are added, updated, and removed across all possible key types.For example, imagine we are calling the following
Mapfunctions with a variablemap, which we don't know the exact shape of, and an atom key:As you can see, we track when keys are set and also when they are removed.
Some operations, like
Map.replace/3, only replace the key if it exists, and that is also propagated by the type system:In other words, if the key exists, it would have been replaced by an integer value. Furthermore, whenever calling a function in the
Mapmodule and the given key is statically proven to never exist in the map, an error is emitted.By combining full type inference with bang operations like
Map.fetch!/2,Map.pop!/2,Map.replace!/3, andMap.update!/3, Elixir is able to propagate information about the desired keys. Take this module:The code above has a type violation, which is now caught by the type system:
Acknowledgements
The type system was made possible thanks to a partnership between CNRS and Remote. The development work is currently sponsored by Fresha and Tidewave.
Compile-time improvements
Elixir's v1.20 improves compilation times once more, especially on applications with many cores.
It also introduces a new compiler option called
:module_definition, which if the module definition should be:compiled(the default) or:interpreted. Note this does not affect the.beamfile written to disk, only how the contents insidedefmoduleare executed. Using the:interpretedmode may offer better compilation times for large projects, especially on machines with high core count, however, it comes with some downsides:Errors during compilation may have less precise stacktraces
Anonymous functions within
defmodulecan have only up to 20 arguments.If this is an issue, you can use maps or tuples to group the data.
Note the functions themselves inside
defmodule, such as the ones definedinside
defand friends, can still have up to 255 argumentsYou can enable it by setting
elixirc_options: [module_definition: :interpreted]in yourmix.exs.v1.20.0 (2026-06-03)
This release requires Erlang/OTP 27+ and is compatible with Erlang/OTP 29.
1. Enhancements
EEx
Elixir
date_from_iso_daysby using the Neri-Schneider algorithm:dbg_callbackoption to eval functionsmodule_definition: :interpretedoption toCodewhich allows module definitions to be evaluated instead of compiled. In some applications/architectures, this can lead to drastic improvements to compilation times. Note this does not affect the generated.beamfile, which will have the same performance/behaviour as beforecontainer_cursor_to_quotedEnum.min_maxsorter[:raw]opts inFile.read/2File.cp_r/3instead of erroring with reason:eioFloat.round/2by avoiding big integersInteger.ceil_div/2Integer.popcount/1IO.iodata_empty?/1x when is_integer(x), then the next clause may no longer be an integercase,cond, andwithdbgfor pipesList.first!/1andList.last!/1after_compile/2callback failscount_children/1andstop/3Process.get_label/1keys: {:duplicate, :key}toordered_setwith composite keysRegex.import/1to import regexes defined with/EString.length/1andString.slice/3ExUnit
--repeat-until-failure:formatteroption for custom log formattingIEx
source/1Mix
--outputoptionmodule_definition: :interpretedoption toCodewhich allows module definitions to be evaluated instead of compiled. In some applications/architectures, this can lead to drastic improvements to compilation times. Note this does not affect the generated.beamfile, which will have the same performance/behaviour as before:elixirc_pathsto be a list of strings to avoid paths from being discarded (the only documented type was lists of strings)deps.loadpaths, improving boot times in projects with many git dependenciesmix depsoutput--outputoption--no-compileoptionmix source MODULEto print or open a given module/function locationmix test --dry-run2. Potential breaking changes
Elixir
?for security reasonsrequire SomeModuleno longer expands to the given module at compile-time, but it still returns the module at runtime. Note Elixir does not guarantee macros will expand to certain constructs, only what its execution result, but since this can break code relying on the previous behaviour, such asrequire(SomeMod).some_macro(), we are adding this note to the CHANGELOG3. Bug fixes
Elixir
Enum.slice/2for ranges with step > 1 sliced by step > 1File.cp_r/3File.cp_r/3infinite loop with symlink cyclesFile.cp_r/3infinite loop when copying into subdirectory of sourceFile.Stream'sEnumerable.countfor files without trailing newline@type record()for Erlang/OTP 29Float.parse/1inconsistent error handling for non-scientific notation overflowInteger.extended_gcd/2returning negative GCD for zero base casesInteger.undigits/2only: :sigilsoption when the imported module exports non-sigil symbols withsigil_prefixAnyimplementationto_timeout/1ArgumentErrorinKeyword.from_keys/2for non-atom keysMacro.to_string/1with escaped trailing newlinePath.relative_to_cwd/2Stream.cycle/1when enumerable reduce call yields no elementsString.count/2URI.mergeleaking:+marker when base path is empty stringExUnit
IEx
Logger
Logger.configure/1Mix
non_executable_binary_to_termon loopback pubsubMIX_OS_DEPS_COMPILE_PARTITION_COUNT--warnings-as-errorsnot catching misnamed test file warnings--raisewhenmix test --warnings-as-errorspasses with warnings4. Hard deprecations
Elixir
File.stream!(path, modes, lines_or_bytes)is deprecated in favor ofFile.stream!(path, lines_or_bytes, modes)<<x::size(^existing_var)>>Kernel.ParallelCompiler.async/1is deprecated in favor ofKernel.ParallelCompiler.pmap/2, which is more performant and addresses known limitationsLogger
Logger.*_backendfunctions are deprecated in favor of handlers. If you really want to keep on using backends, see the:logger_backendspackageLogger.enable/1andLogger.disable/1have been deprecated in favor ofLogger.put_process_level/2andLogger.delete_process_level/1Mix
xref: [exclude: ...]in yourmix.exsis deprecated in favor ofelixirc_options: [no_warn_undefined: ...]v1.19.5Compare Source
1. Enhancements
Elixir
2. Bug fixes
Elixir
dbg_callbackis modified at runtimenot inStream.flat_map/2to crashIEx
#iex:breakas part of multi-line promptsLogger
erlang/otp (erlang)
v28.5: OTP 28.5Compare Source
Check out the git tag OTP-28.5, 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.
HIGHLIGHTS
There is a new "Secure Coding Guidelines" document in Design Principles describing how to write secure Erlang code.
Own Id: OTP-20043
Application(s): otp
Related Id(s): PR-10431
OTP-28.5
Improvements and New Features
There is a new "Secure Coding Guidelines" document in Design Principles describing how to write secure Erlang code.
Own Id: OTP-20043
Related Id(s): PR-10431
*** HIGHLIGHT ***
erl_interface-5.7
The erl_interface-5.7 application can be applied independently of other applications on a full OTP 28 installation.
Improvements and New Features
A new
configureoption--{enable,disable}-use-embedded-3pp-alternativeshas been added. When enabled,configureis forced to find alternatives, to a subset, of the embedded third-party products (3pps) in the runtime system, and when disabled,configurewill use all internal embedded 3pps. Currently this option affectszstd,zlib,ryu(withSTL),opensslandtcl. The default is to use all built-in embedded 3pps except forzlibwhich by default will usezlibon the OS if available.Requirements for alternatives:
zstd- Static library and include files of at least version 1.5.6 needs to be available.zlib- Library and include files of at least version 1.2.5 needs to be available.ryu(withSTL) - A usable C++ compiler with C++17 support.openssl- No requirements. Our own MD5 implementation will be used.tcl- Thestrerrorname_np()function (introduced in glibc 2.32) mapping errno integers to symbolic names needs to be available.The argument
embedded_3ppshas been added toerlang:system_info/1. It returns a map with information about the use of embedded 3pps in the runtime system.Own Id: OTP-20106
Related Id(s): PR-11045
Known Bugs and Problems
The
eiAPI for decoding/encoding terms is not fully 64-bit compatible since terms that have a representation on the external term format larger than 2 GB cannot be handled.Own Id: OTP-16607
Related Id(s): OTP-16608
erts-16.4
The erts-16.4 application can be applied independently of other applications on a full OTP 28 installation.
Fixed Bugs and Malfunctions
Fixed bug in
enif_make_map_from_arraysfor arrays with at least 33 keys. If duplicate keys existed, instead of failing, it would skip the duplicates. If less than 33 unique keys existed, an internally inconsistent and broken map was returned.Own Id: OTP-20098
Related Id(s): PR-10976
Fixed an issue when supplying the args_file option to erl.exe on windows that did not handle unicode characters correctly.
Own Id: OTP-20101
Related Id(s): GH-10667
Improvements and New Features
A new
configureoption--{enable,disable}-use-embedded-3pp-alternativeshas been added. When enabled,configureis forced to find alternatives, to a subset, of the embedded third-party products (3pps) in the runtime system, and when disabled,configurewill use all internal embedded 3pps. Currently this option affectszstd,zlib,ryu(withSTL),opensslandtcl. The default is to use all built-in embedded 3pps except forzlibwhich by default will usezlibon the OS if available.Requirements for alternatives:
zstd- Static library and include files of at least version 1.5.6 needs to be available.zlib- Library and include files of at least version 1.2.5 needs to be available.ryu(withSTL) - A usable C++ compiler with C++17 support.openssl- No requirements. Our own MD5 implementation will be used.tcl- Thestrerrorname_np()function (introduced in glibc 2.32) mapping errno integers to symbolic names needs to be available.The argument
embedded_3ppshas been added toerlang:system_info/1. It returns a map with information about the use of embedded 3pps in the runtime system.Own Id: OTP-20106
Related Id(s): PR-11045
mnesia-4.25.3
The mnesia-4.25.3 application can be applied independently of other applications on a full OTP 28 installation.
Fixed Bugs and Malfunctions
Added documentation for
user_propertiesand functionsread_table_property/2,write_table_property/2,delete_table_property. Enhanced documentation forfrag_properties.Own Id: OTP-20038
Related Id(s): GH-10812, PR-10881
Fixed a bug where stacktrace was not returned from
mnesia:transaction/1when transaction aborts with an error exception.Own Id: OTP-20094
Related Id(s): GH-10967, PR-11002
ssl-11.6
Note! The ssl-11.6 application cannot be applied independently of other applications on an arbitrary OTP 28 installation.
Fixed Bugs and Malfunctions
Preserve inet option order, as inet_backend option must be first option. Will make inet_backend option work for ssl independently of number of inet supplied options.
Own Id: OTP-19162
Related Id(s): PR-10908
Missing conformance check for signature algorithms in TLS-1.3 could cause selection of incompatible certificate when a server is configured with more than one possible certificate.
Own Id: OTP-20082
Related Id(s): GH-10915, PR-10924
Improvements and New Features
Avoid unnecessary memory consumption for temporary processes in a supervision tree.
Own Id: OTP-19967
Related Id(s): PR-10957
Thanks to
felipe stival, Hewwho, Hugo Baraúna, Nick Vatamaniuc, Viktor Söderqvist, William Yang
v28.4.3: OTP 28.4.3Compare Source
Check out the git tag OTP-28.4.3, 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.
OTP-28.4.3
Fixed Bugs and Malfunctions
Fix the
otp_patch_applyscript to properly handle installation of documentation for OTP versions with more than one digit in version parts less significant than the major version.Own Id: OTP-20086
Related Id(s): PR-10985
kernel-10.6.3
The kernel-10.6.3 application can be applied independently of other applications on a full OTP 28 installation.
Fixed Bugs and Malfunctions
On Windows, sockets has to be bound when using 'socket'. Therefor when using gen_tcp with inet_backend = socket, gen_tcp_socket bind even if the caller has not provided an explicit bind address. In that case it attempts to locate a "proper" address on its own. But if the connect address is the loopback address, this could lead to an attempt to bind to an external interface. So, this has now been changed so that if the connect address is the loopback address, the loopback address will also be used when binding.
Own Id: OTP-20104
Related Id(s): #10968
ssh-5.5.2
Note! The ssh-5.5.2 application cannot be applied independently of other applications on an arbitrary OTP 28 installation.
Fixed Bugs and Malfunctions
Fixed a vulnerability in the SFTP server where file attributes could be modified outside the configured root directory. When using FSETSTAT on an open file handle, the operation used the path stored in the handle without verifying it was within the root directory, allowing attribute changes to files outside the chroot boundary.
Thanks to John Downey.
Own Id: OTP-20081
Related Id(s): PR-11027, CVE-2026-32147
v28.4.2: OTP 28.4.2Compare Source
Check out the git tag OTP-28.4.2, 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 OCSP stapling is enabled via the {stapling, staple} or {stapling, #{...}} options, the handshake now fails if the server does not provide an OCSP stapled response.
Previously, a missing OCSP staple was silently accepted (soft-fail). Since Erlang/OTP only supports OCSP via stapling with no fallback to direct OCSP queries or CRL checking, soft-fail meant no revocation check at all.
Applications that need the previous soft-fail behavior can use a custom verify_fun that accepts {bad_cert, missing_ocsp_staple}.
Own Id: OTP-20064
Application(s): ssl
Related Id(s): PR-10941, CVE-2026-32144
compiler-9.0.6
The compiler-9.0.6 application can be applied independently of other applications on a full OTP 28 installation.
Fixed Bugs and Malfunctions
The type inference for
maps:from_list/1was incorrect: when the provided list was statically known to be bogus when non-empty (e.g. a list of atoms), the compiler assumed it would also fail when the list was empty.Own Id: OTP-19506
Related Id(s): GH-9476, PR-9481
Fixed a bug in the type analysis pass that could erroneously eliminate code blocks.
Own Id: OTP-19931
Related Id(s): GH-10562, PR-10569
A binary as the value of a
-moduledoc()attribute would be silently ignored.Own Id: OTP-20065
Related Id(s): GH-10901, PR-10904
erts-16.3.1
The erts-16.3.1 application can be applied independently of other applications on a full OTP 28 installation.
Fixed Bugs and Malfunctions
Fixed a JIT bug that miscompiled expressions like
X * X + X * X.Own Id: OTP-19889
Related Id(s): GH-10454, PR-10456
Fixed bug on windows that made tools dialyzer, erlc and typer unusable in powershell or cmd.exe, when there are spaces in the installation path.
Own Id: OTP-20027
Related Id(s): PR-10620
Fixed a bug with prim_tty that could occur on windows if we cannot get the console mode, mark the TTY as unavailable. This can happen when the input handle is a pipe, but the output handle is a console.
Own Id: OTP-20060
Related Id(s): PR-10899
eunit-2.10.3
The eunit-2.10.3 application can be applied independently of other applications on a full OTP 28 installation.
Fixed Bugs and Malfunctions
Fixed EUnit {node, ...} instantiation by passing node name (instead of pid) and restored net_kernel auto-start for non-distributed nodes.
Own Id: OTP-20047
Related Id(s): PR-10788
inets-9.6.2
The inets-9.6.2 application can be applied independently of other applications on a full OTP 28 installation.
Fixed Bugs and Malfunctions
Fixed authentication bypass in
httpdwhenscript_aliasmaps a URL to a directory outsidedocument_rootwithmod_authdirectory-based access controls. Themod_alias:which_alias/1function now includesscript_aliasentries so authorization is evaluated against the correct path before CGI execution. CVE-2026-28808.Own Id: OTP-20068
Improvements and New Features
Fixed typo in
http_server.mdguideOwn Id: OTP-20044
Related Id(s): GH-10785, PR-10867
Expected error
accept_socket_timeoutin httpd_request_handler now exits gracefully, without generating a crash and supervisor reports.Own Id: OTP-20052
Related Id(s): ERIERL-1310, PR-10893
kernel-10.6.2
The kernel-10.6.2 application can be applied independently of other applications on a full OTP 28 installation.
Fixed Bugs and Malfunctions
Before this patch, the Erlang/OTP built-in DNS resolver (
inet_res) used a sequential, process-global 16-bit transaction ID for UDP queries and did not implement source port randomization. Response validation relied almost entirely on this ID. Together, this made DNS cache poisoning practical for an attacker who can observe one query or predict the next ID. The design conflicted with RFC 5452 recommendations for mitigating forged DNS answers.inet_resis intended for use in trusted network environments and with trusted recursive resolvers. Earlier documentation did not clearly state this deployment assumption, which could lead users to deploy the resolver in environments where faked DNS responses are possible.Therefore, the documentation is been updated to clarify that
inet_resshould only be used in trusted networks and with trusted recursive resolvers.The implementation is also improved to use strong random DNS transaction IDs and source ports for every DNS transaction. This should give ample protection against brute forcing fake DNS replies, known as DNS cache poisoning, but it still does not protect against, for example, an adversary in the path of the DNS transaction that can observe the random values before faking malicious replies, an attack known as DNS spoofing.
For randomization to happen, the Crypto application has to be loaded, which most probably already should be the case for an Erlang node in an exposed network.
If performance should become an issue, for applications within safe network environments, the previous light weight behaviour can be configured by setting the resolver option
randomtofalse.Own Id: OTP-20037
Related Id(s): PR-10864, CVE-2026-28810
public_key-1.20.3
Note! The public_key-1.20.3 application cannot be applied independently of other applications on an arbitrary OTP 28 installation.
Fixed Bugs and Malfunctions
OCSP designated responder certificate verification now checks the CA's cryptographic signature on the responder certificate. Previously, only the issuer DN match and id-kp-OCSPSigning EKU were verified, which meant a forged self-signed certificate with the CA's subject DN would be accepted as a valid designated responder (Case 2 in RFC 6960 §4.2.2.2).
Own Id: OTP-20042
Related Id(s): PR-10873, CVE-2026-32144
Update handling of encoding 'OTPSubjectPublicKeyInfo' in public_key:pkix_encode/3, so that it works for update spec added in OTP-28.
Own Id: OTP-20050
Related Id(s): GH-10876, PR-10889
Improvements and New Features
Relax upper bound of common names in certificates for pragmatic interoperability reasons.
Own Id: OTP-20049
Related Id(s): GH-10606, PR-10866
sasl-4.3.2
The sasl-4.3.2 application can be applied independently of other applications on a full OTP 28 installation.
Fixed Bugs and Malfunctions
Fixed the typespec of release_handler:eval_appup_script/4.
Own Id: OTP-20053
Related Id(s): PR-10906
snmp-5.20.2
The snmp-5.20.2 application can be applied independently of other applications on a full OTP 28 installation.
Improvements and New Features
The SNMP manager now propagates
msgAuthoritativeEngineIDandmsgUserNamefrom USM security parameters through to thesnmpm_user:handle_error/3callback when an incoming message is discarded due to an unknown EngineID (usmStatsUnknownEngineIDs).This enables users to programmatically discover the correct authoritative EngineID from the error callback and re-register USM credentials, supporting SNMPv3 USM EngineID discovery as described in RFC 3414, Section 4. The failed_processing_message variant has been added to the
snmpm:user:handle_error/3callback type specification.Own Id: OTP-20056
Related Id(s): ERIERL-1312, GH-7156, PR-10911
ssl-11.5.4
Note! The ssl-11.5.4 application cannot be applied independently of other applications on an arbitrary OTP 28 installation.
Fixed Bugs and Malfunctions
Server supporting TLS-1.3 and TLS-1.2, with SLH-DSA algorithms for TLS-1.3, now correctly filter out those algorithms if client is TLS-1.2 only, instead of failing with internal error.
Own Id: OTP-20046
Related Id(s): ERIERL-1311, PR-10874
When OCSP stapling is enabled via the {stapling, staple} or {stapling, #{...}} options, the handshake now fails if the server does not provide an OCSP stapled response.
Previously, a missing OCSP staple was silently accepted (soft-fail). Since Erlang/OTP only supports OCSP via stapling with no fallback to direct OCSP queries or CRL checking, soft-fail meant no revocation check at all.
Applications that need the previous soft-fail behavior can use a custom verify_fun that accepts {bad_cert, missing_ocsp_staple}.
Own Id: OTP-20064
Related Id(s): PR-10941, CVE-2026-32144
*** POTENTIAL INCOMPATIBILITY ***
Thanks to
Linus Marton, williamthome
v28.4.1: OTP 28.4.1Compare Source
Check out the git tag OTP-28.4.1, 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.
crypto-5.8.3
The crypto-5.8.3 application can be applied independently of other applications on a full OTP 28 installation.
Fixed Bugs and Malfunctions
Fix memory leak in
crypo:engine_loadif called with incorrect commands.Own Id: OTP-20014
Related Id(s): PR-10798
inets-9.6.1
The inets-9.6.1 application can be applied independently of other applications on a full OTP 28 installation.
Fixed Bugs and Malfunctions
The httpd server now rejects HTTP requests containing multiple Content-Length headers with different values, returning a 400 Bad Request response. This prevents potential HTTP request smuggling attacks. Thanks Luigino Camastra at Aisle Research for responsibly disclosing this vulnerability
Own Id: OTP-20007
Related Id(s): PR-10833, CVE-2026-23941
kernel-10.6.1
The kernel-10.6.1 application can be applied independently of other applications on a full OTP 28 installation.
Fixed Bugs and Malfunctions
A vulnerability has been resolved in the (undocumented, unsupported and unused in OTP) inet_dns_tsig module that leads to a validation bypass.
If a request contained an error code (forbidden by spec), it was treated as a response and skipped the verification of the MAC. The user of the module would then receive an "all ok" response, depending on the use case, this could lead to such things as AXFR or UPDATE being allowed.
The code has also been tightening up of the client side to make sure too large (bad) MAC sizes cannot be selected and the limit is the output size of the algorithm chosen.
Own Id: OTP-20012
Related Id(s): PR-10825
ssh-5.5.1
Note! The ssh-5.5.1 application cannot be applied independently of other applications on an arbitrary OTP 28 installation.
Fixed Bugs and Malfunctions
Fixed path traversal vulnerability in SFTP server's root option allowing authenticated users to access sibling directories with matching name prefixes. The root option used string prefix matching instead of path component validation. With {root, "/home/user1"}, attackers could access /home/user10/ or /home/user123/. Thanks to Luigino Camastra, Aisle Research.
Own Id: OTP-20009
Related Id(s): PR-10811, CVE-2026-23942
Fixed excessive memory usage vulnerability in SSH compression allowing attackers to consume system resources through decompression bombs. The 'zlib' and 'zlib@openssh.com' algorithms lacked decompression size limits, allowing 256 KB packets to expand to 255 MB (1029:1 ratio). This could lead to crashes on systems with limited memory.
The fix removes zlib from default compression algorithms and implements decompression size limits for both algorithms. Thanks to Igor Morgenstern at Aisle Research
Own Id: OTP-20011
Related Id(s): PR-10813, CVE-2026-23943
ssl-11.5.3
Note! The ssl-11.5.3 application cannot be applied independently of other applications on an arbitrary OTP 28 installation.
Fixed Bugs and Malfunctions
TLS-1.3 certificate request now preserves the order of signature algorithms in certificate request extension to be in the servers preferred order, which might affect the choice made by some TLS clients.
Own Id: OTP-20022
Related Id(s): ERIERL-1305, GH-10694, PR-10707
Improvements and New Features
Document that setting transport protocol specific socket options is not generally expected to work for TLS and if it happens to work it comes with consequences that should be understood an accepted by the user. Also retain some backwards compatibility with such an option that happened to work to buy time for people to come up with better solutions.
Own Id: OTP-20018
Related Id(s): ERIERL-1303, PR-10809
Thanks to
Alexander Clouter, Hewwho
nodejs/node (node)
v24.17.0: 2026-06-18, Version 24.17.0 'Krypton' (LTS), @aduh95Compare Source
This is a security release.
Notable Changes
Commits
9e4dfc7bba] - (CVE-2026-48933) crypto: guard WebCrypto cipher output length (Filip Skokan) nodejs-private/node-private#878cb2aed980c] - deps: update llhttp to 9.4.2 (Antoine du Hamel) nodejs-private/node-private#890a8a0d12875] - (CVE-2026-48937) deps: fix integration issues with the latest nghttp2 (Tim Perry) #6289166e6203c1c] - (SEMVER-MAJOR) deps: update nghttp2 to 1.69.0 (Node.js GitHub Bot) #62891dd627ced27] - deps: update archs files for openssl-3.5.7 (Node.js GitHub Bot) #63820684bae568f] - deps: upgrade openssl sources to openssl-3.5.7 (Node.js GitHub Bot) #638203a631e7f83] - deps: fix aix implicit declaration in OpenSSL (Abdirahim Musse) #62656cf44df3996] - deps: update undici to 7.28.0 (Node.js GitHub Bot) #63703138c70294b] - (CVE-2026-48930) dns,net: reject hostnames with embedded NUL bytes (Matteo Collina) nodejs-private/node-private#868be7e719c3f] - (CVE-2026-48931) http: fix response queue poisoning in http.Agent (Matteo Collina) nodejs-private/node-private#846cc7c11b4d1] - (CVE-2026-48619) http2: cap originSet size to prevent unbounded memory growth (Matteo Collina) nodejs-private/node-private#8559224427b92] - (CVE-2026-48615) lib,test: redact proxy credentials in tunnel errors (Matteo Collina) nodejs-private/node-private#867cf85d54839] - (CVE-2026-48935) permission: disable FileHandle utimes with permission model (RafaelGSS) nodejs-private/node-private#873a1bbc24f96] - (CVE-2026-48617) permission: handle process.chdir on writereport (RafaelGSS) nodejs-private/node-private#870e3723ff2d6] - test: add session reuse host verification regressions (Matteo Collina) nodejs-private/node-private#854a77af4867b] - (CVE-2026-48934) tls: bind reusable sessions to authenticated host (Matteo Collina) nodejs-private/node-private#85431beb4f707] - (CVE-2026-48928) tls: fix case-sensitive SNI context matching (Matteo Collina) nodejs-private/node-private#8578e75c73f91] - (CVE-2026-48618) tls: normalize hostname for server identity checks (Matteo Collina) nodejs-private/node-private#869v24.16.0: 2026-05-21, Version 24.16.0 'Krypton' (LTS), @aduh95Compare Source
Configuration
📅 Schedule: (in timezone Asia/Tokyo)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Mend Renovate.