]> git.ipfire.org Git - thirdparty/openssl.git/log
thirdparty/openssl.git
36 hours agoImprove PBKDF2 password strength too weak error message with arguments master
Jun Aruga [Mon, 30 Mar 2026 17:21:18 +0000 (18:21 +0100)] 
Improve PBKDF2 password strength too weak error message with arguments

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Wed Apr  8 10:34:20 2026
(Merged from https://github.com/openssl/openssl/pull/30628)

36 hours agoevp_skey_test.c: Add test for EVP_SKEY_to_provider cross-provider transfer
Joshua Rogers [Sat, 4 Apr 2026 10:28:46 +0000 (18:28 +0800)] 
evp_skey_test.c: Add test for EVP_SKEY_to_provider cross-provider transfer

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
Reviewed-by: Frederik Wedel-Heinen <fwh.openssl@gmail.com>
MergeDate: Wed Apr  8 10:27:04 2026
(Merged from https://github.com/openssl/openssl/pull/30650)

36 hours agoevp_skey_test.c: Add test for EVP_SKEY_to_provider same-provider path
Joshua Rogers [Sat, 4 Apr 2026 09:55:34 +0000 (17:55 +0800)] 
evp_skey_test.c: Add test for EVP_SKEY_to_provider same-provider path

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
Reviewed-by: Frederik Wedel-Heinen <fwh.openssl@gmail.com>
MergeDate: Wed Apr  8 10:27:03 2026
(Merged from https://github.com/openssl/openssl/pull/30650)

36 hours agos_lib.c: Fix refcount leak in EVP_SKEY_to_provider
Joshua Rogers [Tue, 31 Mar 2026 16:02:11 +0000 (00:02 +0800)] 
s_lib.c: Fix refcount leak in EVP_SKEY_to_provider

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
Reviewed-by: Frederik Wedel-Heinen <fwh.openssl@gmail.com>
MergeDate: Wed Apr  8 10:27:02 2026
(Merged from https://github.com/openssl/openssl/pull/30650)

36 hours agoOPENSSL_secure_malloc.pod: mention CRYPTO_secure_actual_size()
Eugene Syromiatnikov [Mon, 30 Mar 2026 08:30:41 +0000 (10:30 +0200)] 
OPENSSL_secure_malloc.pod: mention CRYPTO_secure_actual_size()

Add mentions to NAME, SYNOPSIS, and RETURN VALUES, and provide a short
description (that it is identical to its OPENSSL_* counterpart)
to DESCRIPTION.

Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Wed Apr  8 10:23:57 2026
(Merged from https://github.com/openssl/openssl/pull/30623)

36 hours agoOPENSSL_malloc.pod: mention CRYPTO_memdup()
Eugene Syromiatnikov [Mon, 30 Mar 2026 08:27:35 +0000 (10:27 +0200)] 
OPENSSL_malloc.pod: mention CRYPTO_memdup()

Add its mentions to NAME, SYNOPSIS, and RETURN VALUES sections.
Also, while at it, put OPENSSL_{str,strn,mem}dup() with the other
OPENSSL_* interfaces, and add mentions of OPENSSL_str{,n}dup()
to RETURN VALUES.

Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Wed Apr  8 10:23:55 2026
(Merged from https://github.com/openssl/openssl/pull/30623)

36 hours agoOPENSSL_malloc.pod: mention CRYPTO_aligned_alloc{,_array}() in RETURN VALUES
Eugene Syromiatnikov [Mon, 30 Mar 2026 08:10:35 +0000 (10:10 +0200)] 
OPENSSL_malloc.pod: mention CRYPTO_aligned_alloc{,_array}() in RETURN VALUES

Addition of those has been originally overlooked.

Complements: cc4ea5e00028 "Introduce new internal hashtable implementation"
Complements: fa9b7b930e3e "Add array memory allocation routines"
Complements: 14a24fd14ff7 "doc/man3/OPENSSL_malloc.pod: explicitly document freeptr value on failures"
Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Wed Apr  8 10:23:55 2026
(Merged from https://github.com/openssl/openssl/pull/30623)

36 hours agoquic: remove unused scid from port_default_packet_handler
Sunwoo Lee [Fri, 27 Mar 2026 23:58:41 +0000 (08:58 +0900)] 
quic: remove unused scid from port_default_packet_handler

  Remove the scid variable entirely from port_default_packet_handler()
  and all functions that accept it as a parameter. The scid was never
  used meaningfully — cur_remote_dcid is set later during the handshake.

  Remove scid parameter from:
    - port_bind_channel()
    - port_validate_token()
    - ossl_quic_channel_on_new_conn()
    - ossl_quic_bind_channel()
    - ch_on_new_conn_common()

  Remove the cur_remote_dcid = *peer_scid assignment in
  ch_on_new_conn_common() as it wrote dead data.

  CWE-457

Reported-by: Sunwoo Lee <sunwoolee@kentech.ac.kr>
  CLA: trivial

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Frederik Wedel-Heinen <fwh.openssl@gmail.com>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Wed Apr  8 10:21:55 2026
(Merged from https://github.com/openssl/openssl/pull/30611)

36 hours agocrypto/pkcs12/p12_add.c: Restore ERR_set_mark and ERR_pop_to_mark
Jun Aruga [Fri, 27 Mar 2026 18:16:55 +0000 (18:16 +0000)] 
crypto/pkcs12/p12_add.c: Restore ERR_set_mark and ERR_pop_to_mark

The commit <2ea6e785f526f88f913cc6f49372aae9dc54bc63> removed the
ERR_set_mark and ERR_pop_to_mark calls before and after the EVP_CIPHER_fetch
call in several files.

However, in PKCS12_pack_p7encdata_ex, crypto/pkcs12/p12_add.c, there is a valid
case that EVP_CIPHER_fetch returns NULL, raising an error, and calls
PKCS5_pbe_set_ex. The case is such as PBE-SHA1-3DES.

PKCS12_pack_p7encdata_ex, crypto/pkcs12/p12_add.c:
```
...
    pbe_ciph = EVP_CIPHER_fetch(ctx, OBJ_nid2sn(pbe_nid), propq);

    if (pbe_ciph != NULL) {
        pbe = PKCS5_pbe2_set_iv_ex(pbe_ciph, iter, salt, saltlen, NULL, -1, ctx);
    } else {
        pbe = PKCS5_pbe_set_ex(pbe_nid, iter, salt, saltlen, ctx);
    }
...
```

So, we need to restore ERR_set_mark and ERR_pop_to_mark calls before and after
the EVP_CIPHER_fetch call for this case.

A reproducer is below.

```
$ openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -nodes \
  -subj "/CN=Test" 2> /dev/null
$ openssl pkcs12 \
    -export -in cert.pem -inkey key.pem -out test.p12 -passout pass: \
    -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES
40276EC7677F0000:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported:crypto/evp/evp_fetch.c:376:Global default library context, Algorithm (PBE-SHA1-3DES : 0), Properties (<null>)
$ echo $?
0
```

80-test_pkcs12.t: Add test_pkcs12_passcerts_legacy_outerr2_empty test to test
this change.

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
MergeDate: Wed Apr  8 10:09:07 2026
(Merged from https://github.com/openssl/openssl/pull/30607)

36 hours agoquic_channel.c: avoid clipping in ack_delay_exponent/disable_active_migration setters
Eugene Syromiatnikov [Wed, 18 Mar 2026 09:13:26 +0000 (10:13 +0100)] 
quic_channel.c: avoid clipping in ack_delay_exponent/disable_active_migration setters

Avoid clipping of the provided values in setters due to type casting
by checking the values agains the type-specific maximum beforehand.

Fixes: 35dc6c353bfe "QUIC: Make more transport parameters configurable"
Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Wed Apr  8 10:05:27 2026
(Merged from https://github.com/openssl/openssl/pull/30485)

36 hours agoquic_channel.c: avoid integer overflow in ossl_quic_channel_set_max_data_request
Eugene Syromiatnikov [Wed, 18 Mar 2026 09:03:08 +0000 (10:03 +0100)] 
quic_channel.c: avoid integer overflow in ossl_quic_channel_set_max_data_request

Check that DEFAULT_CONN_RXFC_MAX_WND_MUL * max_data multiplication
will not overflow uint64_t data type before performing it.

Fixes: 35dc6c353bfe "QUIC: Make more transport parameters configurable"
Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Wed Apr  8 10:05:26 2026
(Merged from https://github.com/openssl/openssl/pull/30485)

36 hours agoquic_channel.c: check the setters return values
Eugene Syromiatnikov [Wed, 18 Mar 2026 08:59:31 +0000 (09:59 +0100)] 
quic_channel.c: check the setters return values

...and call them before updating QUIC_CHANNEL parameters.
Unchecked return value has been initially reported by Coverity
for ossl_quic_rxfc_init() call in ossl_quic_channel_set_max_data_request(),
but also seems to be relevant for ossl_quic_channel_set_max_streams_request()
and ossl_quic_channel_set_ack_delay_exponent_request().

Resolves: https://scan5.scan.coverity.com/#/project-view/65248/10222?selectedIssue=1689768
Fixes: 35dc6c353bfe "QUIC: Make more transport parameters configurable"
Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Wed Apr  8 10:05:25 2026
(Merged from https://github.com/openssl/openssl/pull/30485)

36 hours agoDeprecate EVP_CIPHER_CTX_get_num() and EVP_CIPHER_CTX_set_num().
slontis [Tue, 10 Mar 2026 03:17:55 +0000 (14:17 +1100)] 
Deprecate EVP_CIPHER_CTX_get_num() and EVP_CIPHER_CTX_set_num().

Suggested to be added in OpenSSL 4.1.
Since engines have been removed, these are redundant functions.
End users should not generally be accessing this internal field.

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Frederik Wedel-Heinen <fwh.openssl@gmail.com>
Reviewed-by: Norbert Pocs <norbertp@openssl.org>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Wed Apr  8 10:02:58 2026
(Merged from https://github.com/openssl/openssl/pull/30335)

37 hours agoNEWS.md: Update 3.6.0 release date
Eugene Syromiatnikov [Sun, 5 Apr 2026 11:28:27 +0000 (13:28 +0200)] 
NEWS.md: Update 3.6.0 release date

Original-Commit: 7b371d80d959 "Prepare for release of 3.6.0"

Reviewed-by: Paul Yang <paulyang.inf@gmail.com>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Wed Apr  8 10:00:08 2026
(Merged from https://github.com/openssl/openssl/pull/30686)

37 hours agoCHANGES.md: move SSL_{add,set}1_{dnsname,ipaddr} entry to 4.0 section
Eugene Syromiatnikov [Sun, 5 Apr 2026 11:20:41 +0000 (13:20 +0200)] 
CHANGES.md: move SSL_{add,set}1_{dnsname,ipaddr} entry to 4.0 section

Also reword it to match the style of other entries.

Complements: cb1645e83bd9 "Add a changes entry"
Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Paul Yang <paulyang.inf@gmail.com>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Wed Apr  8 10:00:06 2026
(Merged from https://github.com/openssl/openssl/pull/30686)

37 hours agoCHANGES.md: move SSL_CTX_is_server() entry to the 4.0 section
Eugene Syromiatnikov [Sun, 5 Apr 2026 11:18:25 +0000 (13:18 +0200)] 
CHANGES.md: move SSL_CTX_is_server() entry to the 4.0 section

Also reword it to match the style of other entries.

Complements: ca20e54e8674 "SSL_CTX_is_server() was added."
Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Paul Yang <paulyang.inf@gmail.com>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Wed Apr  8 10:00:05 2026
(Merged from https://github.com/openssl/openssl/pull/30686)

37 hours agoMake ext argument of X509V3_EXT_print_fp const
Arne Schwabe [Wed, 25 Mar 2026 15:28:46 +0000 (16:28 +0100)] 
Make ext argument of X509V3_EXT_print_fp const

Commit e75bd84ffc7 made the ext argument of 509V3_EXT_print const
but did not give 509V3_EXT_print_fp which is essentially is a wrapper
around X509V3_EXT_print the same treatment.

This commit aligns the two functions again.

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Wed Apr  8 09:15:11 2026
(Merged from https://github.com/openssl/openssl/pull/30572)

37 hours agoFix documentation of SSL_ech_get1_status() return values
Tomas Mraz [Fri, 3 Apr 2026 14:18:52 +0000 (16:18 +0200)] 
Fix documentation of SSL_ech_get1_status() return values

Also do minor formatting cleanups on the man page.

Reviewed-by: Matt Caswell <matt@openssl.foundation>
Reviewed-by: Paul Yang <paulyang.inf@gmail.com>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Wed Apr  8 09:13:38 2026
(Merged from https://github.com/openssl/openssl/pull/30673)

38 hours agoECH: conformance test changes for echspec test tool
sftcd [Tue, 17 Mar 2026 21:10:34 +0000 (21:10 +0000)] 
ECH: conformance test changes for echspec test tool

Reviewed-by: Matt Caswell <matt@openssl.foundation>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Wed Apr  8 08:59:20 2026
(Merged from https://github.com/openssl/openssl/pull/30419)

38 hours agoECH: Conformance test changes in response to AISLE review
sftcd [Tue, 17 Mar 2026 21:08:36 +0000 (21:08 +0000)] 
ECH: Conformance test changes in response to AISLE review

Reviewed-by: Matt Caswell <matt@openssl.foundation>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Wed Apr  8 08:59:19 2026
(Merged from https://github.com/openssl/openssl/pull/30419)

3 days ago80-test_cms.t: Accept success in malformed RSA decryption
Tomas Mraz [Mon, 6 Apr 2026 20:09:20 +0000 (22:09 +0200)] 
80-test_cms.t: Accept success in malformed RSA decryption

The decryption of the malformed encrypted message might succeed
with some probability. We accept that as the testcase tries to
trigger a crash which does not happen.

Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
MergeDate: Tue Apr  7 07:16:44 2026

3 days agorsa_kem: test RSA_public_encrypt() result in RSASVE
Nikola Pajkovsky [Thu, 19 Mar 2026 11:17:45 +0000 (12:17 +0100)] 
rsa_kem: test RSA_public_encrypt() result in RSASVE

RSA_public_encrypt() returns the number of bytes written on success and
-1 on failure.

Add regression coverage in evp_extra_test using custom low-level RSA
methods to exercise the provider/legacy boundary. The new tests verify
that encapsulation fails when RSA_public_encrypt() returns:

  * -1, which is the documented failure result, and
  * a short positive length, which is also invalid for RSASVE with
    RSA_NO_PADDING because the ciphertext must be exactly nlen bytes.

Signed-off-by: Nikola Pajkovsky <nikolap@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.foundation>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Mon Apr  6 19:45:39 2026

3 days agorsa_kem: validate RSA_public_encrypt() result in RSASVE
Nikola Pajkovsky [Thu, 19 Mar 2026 11:16:08 +0000 (12:16 +0100)] 
rsa_kem: validate RSA_public_encrypt() result in RSASVE

RSA_public_encrypt() returns the number of bytes written on success and
-1 on failure. With the existing `if (ret)` check, a provider-side RSA KEM
encapsulation can incorrectly succeed when the underlying RSA public
encrypt operation fails. In that case the code reports success, returns
lengths as if encapsulation completed normally, and leaves the freshly
generated secret available instead of discarding it.

Tighten the success condition so RSASVE only succeeds when
RSA_public_encrypt() returns a positive value equal to the modulus-sized
output expected for RSA_NO_PADDING. Any other return value is treated as
failure, and the generated secret is cleansed before returning.

Fixes CVE-2026-31790
Signed-off-by: Nikola Pajkovsky <nikolap@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.foundation>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Mon Apr  6 19:45:38 2026

3 days agoAvoid possible buffer overflow in buf2hex conversion
Igor Ustinov [Thu, 5 Mar 2026 14:47:34 +0000 (15:47 +0100)] 
Avoid possible buffer overflow in buf2hex conversion

Fixes CVE-2026-31789

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Mon Apr  6 19:39:23 2026

3 days agoAdded test for CVE-2026-28388
Daniel Kubec [Tue, 17 Mar 2026 10:14:56 +0000 (11:14 +0100)] 
Added test for CVE-2026-28388

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Mon Apr  6 19:27:17 2026

3 days agoFix NULL Dereference When Delta CRL Lacks CRL Number Extension
Daniel Kubec [Tue, 17 Mar 2026 10:11:22 +0000 (11:11 +0100)] 
Fix NULL Dereference When Delta CRL Lacks CRL Number Extension

Fixes CVE-2026-28388

Co-authored-by: Igor Morgenstern <igor.morgenstern@aisle.com>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Mon Apr  6 19:27:16 2026

3 days agoOut-of-bounds read in AES-CFB-128 on X86-64 with AVX-512 support
Daniel Kubec [Wed, 18 Mar 2026 10:27:52 +0000 (11:27 +0100)] 
Out-of-bounds read in AES-CFB-128 on X86-64 with AVX-512 support

The partial-block pre-processing code in ossl_aes_cfb128_vaes_enc and
ossl_aes_cfb128_vaes_dec unconditionally loads 16 bytes from the input buffer
using unmasked vmovdqu8 instructions, even when fewer bytes are valid.
This can read 1–15 bytes beyond the provided buffer. The post-processing code
in the same file correctly uses masked loads to avoid this issue.

Fixes CVE-2026-28386

Co-Authored-by: Stanislav Fort <stanislav.fort@aisle.com>
Co-Authored-by: Pavel Kohout <pavel.kohout@aisle.com>
Co-Authored-by: Alex Gaynor <gaynor@anthropic.com>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Mon Apr  6 19:16:26 2026

3 days agoAdd test for CMS decryption with RSA keys
Neil Horman [Sun, 29 Mar 2026 14:47:03 +0000 (10:47 -0400)] 
Add test for CMS decryption with RSA keys

Ensure we don't encounter a segfault when decrypting CMS messages with
malformed EnvelopedData when using RSA-OAEP.

Co-authored-by: Tomas Mraz <tomas@openssl.foundation>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.foundation>
MergeDate: Mon Apr  6 18:58:32 2026

3 days agoFix NULL deref in rsa_cms_decrypt
Neil Horman [Wed, 1 Apr 2026 08:56:44 +0000 (10:56 +0200)] 
Fix NULL deref in rsa_cms_decrypt

Very simmilar to CVE-2026-28389, ensure that if we are missing
parameters in RSA-OAEP SourceFunc in CMS KeyTransportRecipientInfo,
we don't segfault when decrypting.

Co-authored-by: Tomas Mraz <tomas@openssl.foundation>
Fixes CVE-2026-28390

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.foundation>
MergeDate: Mon Apr  6 18:58:30 2026

3 days agoTest for DH/ECDH CMS KARI processing NULL pointer dereference
Neil Horman [Tue, 31 Mar 2026 18:38:03 +0000 (14:38 -0400)] 
Test for DH/ECDH CMS KARI processing NULL pointer dereference

Test to ensure that, if we attempt to decrypt a CMS message with a
missing parameter field of KeyEncryptionAlgorithmIdentifier
we fail, rather than segfault.

Co-authored-by: Tomas Mraz <tomas@openssl.foundation>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.foundation>
MergeDate: Mon Apr  6 18:58:29 2026

3 days agoFix NULL deref in [ec]dh_cms_set_shared_info
Neil Horman [Mon, 16 Mar 2026 17:49:07 +0000 (13:49 -0400)] 
Fix NULL deref in [ec]dh_cms_set_shared_info

Multiple independent reports indicated a SIGSEGV was possible in CMS
processing when a crafted CMS EnvelopedData message using A Key
Agreement Recipient Info field.  If the
KeyEncryptionAlgorithmIdentifier omits the optional parameter field, the
referenced functions above will attempt to dereference the
alg->parameter data prior to checking if the parameter field is NULL.

Confirmed to resolve the issues using the reproducers provided in the
security reports.

Co-authored-by: Tomas Mraz <tomas@openssl.foundation>
Fixes CVE-2026-28389

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.foundation>
MergeDate: Mon Apr  6 18:58:28 2026

6 days ago.github/workflows/windows.yml: Fix typo breaking the Windows CI
Tomas Mraz [Fri, 3 Apr 2026 16:04:21 +0000 (18:04 +0200)] 
.github/workflows/windows.yml: Fix typo breaking the Windows CI

Reviewed-by: Frederik Wedel-Heinen <fwh.openssl@gmail.com>
Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Sat Apr  4 06:28:16 2026
(Merged from https://github.com/openssl/openssl/pull/30674)

6 days agodoc: document PKCS12 password prompting for certificates
kovan [Mon, 2 Feb 2026 14:47:35 +0000 (15:47 +0100)] 
doc: document PKCS12 password prompting for certificates

Document that commands reading certificates from PKCS#12 files may
prompt for a password. The existing documentation only mentioned
password prompting for private keys.

Fixes #21292

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Apr  3 15:52:28 2026
(Merged from https://github.com/openssl/openssl/pull/29918)

6 days agoevp_test.c: Check error stack for new errors and not stale ones
Tomas Mraz [Thu, 2 Apr 2026 09:08:56 +0000 (11:08 +0200)] 
evp_test.c: Check error stack for new errors and not stale ones

The error stack might have stale entries but
we are interested only in those coming from the
EVP call being tested.

Fixes #30454

Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
MergeDate: Fri Apr  3 15:49:52 2026
(Merged from https://github.com/openssl/openssl/pull/30669)

6 days agoFix a CHANGES.md entry added to the wrong section
Matt Caswell [Thu, 2 Apr 2026 08:01:00 +0000 (09:01 +0100)] 
Fix a CHANGES.md entry added to the wrong section

This fixes the CHANGES.md entry added via #30225 which erroneously added
the entry in the "Changes between 3.6 and 4.0" section instead of the
"Changes between 4.0 and 4.1" section

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Apr  3 15:48:20 2026
(Merged from https://github.com/openssl/openssl/pull/30668)

6 days agoquic: fix NULL deref in ossl_quic_new_from_listener()
Abhinav Agarwal [Thu, 2 Apr 2026 05:58:30 +0000 (22:58 -0700)] 
quic: fix NULL deref in ossl_quic_new_from_listener()

ossl_quic_port_create_outgoing() can return NULL under memory pressure.
The result was used immediately by ossl_quic_channel_set_msg_callback()
without a NULL check, causing a crash on the SSL_new_from_listener()
API path.

The correct pattern already exists in create_channel() (same file): check
the return value and raise a non-normal error before jumping to cleanup.
Apply the same pattern here.

Fixes: 0b15147a37c ("Implement SSL_new_from_listener()")
Signed-off-by: Abhinav Agarwal <abhinavagarwal1996@gmail.com>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Apr  3 15:46:54 2026
(Merged from https://github.com/openssl/openssl/pull/30667)

6 days agoci: Fix CYGWIN build
Milan Broz [Wed, 1 Apr 2026 12:24:44 +0000 (14:24 +0200)] 
ci: Fix CYGWIN build

The build should run with -j4 option, but this option
was never propagated to run command (lost in Powershell).

Just set bash as shell here. This speedups CYGWIN CI build
significantly.

Signed-off-by: Milan Broz <gmazyland@gmail.com>
Reviewed-by: Dmitry Misharov <dmitry@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Norbert Pocs <norbertp@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Apr  3 15:45:11 2026
(Merged from https://github.com/openssl/openssl/pull/30661)

6 days agoutil/platform_symbols/windows-symbols.txt: add __stdio_common_vsnprintf_s
Eugene Syromiatnikov [Tue, 31 Mar 2026 10:47:20 +0000 (12:47 +0200)] 
util/platform_symbols/windows-symbols.txt: add __stdio_common_vsnprintf_s

Apparently, it has not been caught after a29d157fdb6d "Replace homebrewed
implementation of *printf*() functions with libc" due to non-working symbol
checks.

Fixes: a29d157fdb6d "Replace homebrewed implementation of *printf*() functions with libc"
Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Apr  3 15:42:24 2026
(Merged from https://github.com/openssl/openssl/pull/30635)

6 days agoUpdate Windows CI workflow to supply correct DLLs to checkplatformsyms.pl
Eugene Syromiatnikov [Tue, 31 Mar 2026 03:10:42 +0000 (05:10 +0200)] 
Update Windows CI workflow to supply correct DLLs to checkplatformsyms.pl

The check was broken in several ways, which was concealed by the fact
that checkplatformsyms.pl returned success in many cases before:
  * Hard-coded file name suffixes (-3-x64) meant that the check
    was not performed on OpenSSL 4.0+ and never for 32-bit builds.
  * dumpbin also wasn't in PATH in some configurations, which also led
    to skipped checks.
Fix that by supplying proper file names based on OpenSSL major version
and ABI, add missing VCVars calls and working dir setups.

Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Apr  3 15:42:23 2026
(Merged from https://github.com/openssl/openssl/pull/30635)

6 days ago.github/workflows/windows_comp.yml: drop platform symbol usage check
Eugene Syromiatnikov [Tue, 31 Mar 2026 17:13:55 +0000 (19:13 +0200)] 
.github/workflows/windows_comp.yml: drop platform symbol usage check

It has never worked, as an attempt to make it work leads to this error:

    Symbol ZSTD_compressStream2 not in the allowed platform symbols list
    Symbol ZSTD_CStreamInSize not in the allowed platform symbols list
    Symbol ZSTD_initCStream not in the allowed platform symbols list
    Symbol ZSTD_freeCStream not in the allowed platform symbols list
    Symbol ZSTD_endStream not in the allowed platform symbols list
    Symbol ZSTD_freeDStream not in the allowed platform symbols list
    Symbol ZSTD_initDStream not in the allowed platform symbols list
    Symbol ZSTD_decompressStream not in the allowed platform symbols list
    Symbol ZSTD_getErrorName not in the allowed platform symbols list
    Symbol ZSTD_DStreamInSize not in the allowed platform symbols list
    Symbol ZSTD_decompress not in the allowed platform symbols list
    Symbol ZSTD_flushStream not in the allowed platform symbols list
    Symbol ZSTD_isError not in the allowed platform symbols list
    Symbol ZSTD_createCStream_advanced not in the allowed platform symbols list
    Symbol ZSTD_createDStream_advanced not in the allowed platform symbols list
    Symbol ZSTD_compress not in the allowed platform symbols list

Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Apr  3 15:42:22 2026
(Merged from https://github.com/openssl/openssl/pull/30635)

6 days agoutil/checkplatformsyms.pl: do not hard-code "libcrypto-3-x64" library name
Eugene Syromiatnikov [Tue, 31 Mar 2026 10:19:37 +0000 (12:19 +0200)] 
util/checkplatformsyms.pl: do not hard-code "libcrypto-3-x64" library name

Ideally, it should probably passed to the script as a parameter,
but, in the meantime, follow the relaxed attitude of the Unix
counterpart and match against any version and all expected arch
suffixes.

Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Apr  3 15:42:21 2026
(Merged from https://github.com/openssl/openssl/pull/30635)

6 days agoutil/checkplatformsyms.pl: update the Unix symbol filtering
Eugene Syromiatnikov [Tue, 31 Mar 2026 10:17:51 +0000 (12:17 +0200)] 
util/checkplatformsyms.pl: update the Unix symbol filtering

Replace the grep|grep|awk|sed|sort|uniq abomination with a simple
and elegant awk script.

Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Apr  3 15:42:20 2026
(Merged from https://github.com/openssl/openssl/pull/30635)

6 days agoutil/checkplatformsyms.pl: do not exit after the first symbol
Eugene Syromiatnikov [Tue, 31 Mar 2026 04:00:59 +0000 (06:00 +0200)] 
util/checkplatformsyms.pl: do not exit after the first symbol

If there are several offending symbols, using the checker becomes quite
tedious.

Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Apr  3 15:42:18 2026
(Merged from https://github.com/openssl/openssl/pull/30635)

6 days agoutil/checkplatformsyms.pl: handle command exit code
Eugene Syromiatnikov [Tue, 31 Mar 2026 03:44:30 +0000 (05:44 +0200)] 
util/checkplatformsyms.pl: handle command exit code

Error out if the executed command (dumpbin/objdump) hasn't been
successful.

Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Apr  3 15:42:17 2026
(Merged from https://github.com/openssl/openssl/pull/30635)

6 days agoutil/checkplatformsyms.pl: syntax nit fix
Eugene Syromiatnikov [Tue, 31 Mar 2026 03:13:08 +0000 (05:13 +0200)] 
util/checkplatformsyms.pl: syntax nit fix

Address the following complaint:

    \2 better written as $2 at ../util/checkplatformsyms.pl line 39.

Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Apr  3 15:42:16 2026
(Merged from https://github.com/openssl/openssl/pull/30635)

6 days agoutil/checkplatformsyms.pl: check that supplied files exist
Eugene Syromiatnikov [Tue, 31 Mar 2026 03:11:59 +0000 (05:11 +0200)] 
util/checkplatformsyms.pl: check that supplied files exist

Otherwise their absense is seemingly ignored, which leads to overlooked
symbol additions.

Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Apr  3 15:42:15 2026
(Merged from https://github.com/openssl/openssl/pull/30635)

6 days agoDoc: "ML-DSA external mu" clarify security categories
slontis [Mon, 30 Mar 2026 23:31:36 +0000 (10:31 +1100)] 
Doc: "ML-DSA external mu" clarify security categories

Clarify which digest algorithms correspond to the 3
security categories for ML-DSA key types.

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Apr  3 15:40:25 2026
(Merged from https://github.com/openssl/openssl/pull/30632)

6 days agocrypto/err/err_all.c: load SM2 error strings
Eugene Syromiatnikov [Mon, 30 Mar 2026 09:23:31 +0000 (11:23 +0200)] 
crypto/err/err_all.c: load SM2 error strings

The function ossl_err_load_SM2_strings() exists, but wasn't called
in ossl_err_load_crypto_strings().  Rescind this omission.

Fixes: 3d328a445c2a "Add SM2 signature and ECIES schemes"
Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Apr  3 15:32:47 2026
(Merged from https://github.com/openssl/openssl/pull/30625)

6 days agoevp_decodeblock_int(): Bugfix of padding check
Igor Ustinov [Sat, 28 Mar 2026 12:49:00 +0000 (13:49 +0100)] 
evp_decodeblock_int(): Bugfix of padding check

The padding check didn't take into account that by this point the f pointer
had already shifted by 4 positions. Luckily, the original f[2] and f[3]
were saved in c and d .

This code is not reachable in normal operation, but that is not a reason
not to fix it.

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Apr  3 15:31:13 2026
(Merged from https://github.com/openssl/openssl/pull/30618)

6 days agoEVP_MD_CTX_gettable_params(): Add NULL check before dereference
Drokovar Dmitriy [Tue, 10 Mar 2026 05:38:57 +0000 (01:38 -0400)] 
EVP_MD_CTX_gettable_params(): Add NULL check before dereference

Found by Linux Verification Center (linuxtesting.org) with SVACE.

CLA:trivial

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Fri Apr  3 15:24:39 2026
(Merged from https://github.com/openssl/openssl/pull/30589)

6 days agoAdd INT_MAX bounds check to d2i_ASN1_UINTEGER before (int)len cast
Koda Reef [Sun, 22 Mar 2026 21:44:21 +0000 (21:44 +0000)] 
Add INT_MAX bounds check to d2i_ASN1_UINTEGER before (int)len cast

d2i_ASN1_UINTEGER uses (int)len for OPENSSL_malloc, memcpy, and
ASN1_STRING_set0 where len is a long. On LP64 platforms (long is
64-bit, int is 32-bit), values exceeding INT_MAX are silently
truncated, causing undersized allocation and heap buffer overflow.

The sibling function ossl_c2i_ASN1_BIT_STRING in a_bitstr.c already
has this guard (line 92: if (len > INT_MAX)). This adds the same
check to d2i_ASN1_UINTEGER for consistency.

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Frederik Wedel-Heinen <fwh.openssl@gmail.com>
MergeDate: Fri Apr  3 15:22:30 2026
(Merged from https://github.com/openssl/openssl/pull/30532)

6 days agoUpdated broken documentation links in various files
Stacey Zheng [Thu, 19 Mar 2026 22:59:38 +0000 (18:59 -0400)] 
Updated broken documentation links in various files

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Fri Apr  3 15:18:46 2026
(Merged from https://github.com/openssl/openssl/pull/30516)

6 days agoUpdate manuals and demos to consider OSSL_PARAM_clear_free() vs OSSL_PARAM_free()
Emmalee Carpenter [Thu, 19 Mar 2026 20:04:49 +0000 (16:04 -0400)] 
Update manuals and demos to consider OSSL_PARAM_clear_free() vs OSSL_PARAM_free()

Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
MergeDate: Fri Apr  3 15:14:25 2026
(Merged from https://github.com/openssl/openssl/pull/30506)

6 days agoAdd a test for an early DTLS CCS with extra data on the last record
Matt Caswell [Thu, 19 Mar 2026 11:44:48 +0000 (11:44 +0000)] 
Add a test for an early DTLS CCS with extra data on the last record

We move the DTLS CCS early, and then add extra trailing data on the
last record before the epoch change. We expect to see an unexpected
message error.

Reviewed-by: Frederik Wedel-Heinen <fwh.openssl@gmail.com>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Apr  3 15:06:52 2026
(Merged from https://github.com/openssl/openssl/pull/30503)

6 days agoFix a Use-After-Free bug in the DTLS code
Matt Caswell [Thu, 19 Mar 2026 10:38:22 +0000 (10:38 +0000)] 
Fix a Use-After-Free bug in the DTLS code

The newly added #30225 introduced a UAF bug in the master branch found
by the dtlsserver fuzzer. If a CCS arrives early and there is trailing
data left in the current record at the point that we change epoch then
the buffer holding the trailing data is freed as part of setting up the
new record layer, but we still have dangling references into that buffer
causing the UAF.

Fixes #30487

Reviewed-by: Frederik Wedel-Heinen <fwh.openssl@gmail.com>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Apr  3 15:06:50 2026
(Merged from https://github.com/openssl/openssl/pull/30503)

6 days agocrypto/x509/pcy_tree.c: fix leak of tree in X509_policy_check()
huanghuihui0904 [Mon, 16 Mar 2026 03:05:36 +0000 (11:05 +0800)] 
crypto/x509/pcy_tree.c: fix leak of tree in X509_policy_check()

When init_ret indicates both X509_PCY_TREE_EXPLICIT and X509_PCY_TREE_EMPTY,
the function returns without freeing the initialized policy tree.
Free the tree before returning, consistent with the earlier TREE_EMPTY branch.

Also defer *ptree = tree assignment and free the tree when user policies
are empty to avoid returning invalid memory.

Fixes #30435

Signed-off-by: huanghuihui0904 <625173@qq.com>
Reviewed-by: Frederik Wedel-Heinen <fwh.openssl@gmail.com>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Fri Apr  3 15:03:37 2026
(Merged from https://github.com/openssl/openssl/pull/30436)

6 days agodoc: clarify X509_STORE thread safety and lifetime contract
Herman Malik [Wed, 11 Mar 2026 21:49:18 +0000 (14:49 -0700)] 
doc: clarify X509_STORE thread safety and lifetime contract

Improve the description of X509_STORE_lock() in X509_STORE_new.pod to
emphasize it acquires an exclusive write lock.

Add a NOTES section to X509_STORE_new.pod covering which operations are
internally thread-safe and which are not, as well as documentation on
lifetime management and reference counting.

Add a NOTES section to X509_STORE_CTX_get_by_subject.pod explaining
that the store's internal lock is released before the found object's
reference count is incremented, so the caller must ensure the store
outlives the lookup.

Clarify the reference counting and the caller's responsibilities.
Remove internal details for conciseness.

Related to #30310

Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Fri Apr  3 15:00:55 2026
(Merged from https://github.com/openssl/openssl/pull/30382)

6 days agoFix integer overflow in EVP_ENCODE_LENGTH and base64 encoding paths
eclipse07077 [Mon, 9 Mar 2026 12:35:43 +0000 (21:35 +0900)] 
Fix integer overflow in EVP_ENCODE_LENGTH and base64 encoding paths

The EVP_ENCODE_LENGTH macro performs all arithmetic in the type of
its argument. When the argument is int and exceeds approximately
1.6 billion, intermediate results overflow signed int, potentially
wrapping to a smaller positive value rather than a negative one.

In b64_write() (crypto/evp/bio_b64.c), this causes OPENSSL_malloc
to allocate a buffer smaller than the actual encoded output size.
EVP_EncodeUpdate then writes past the end of the undersized buffer.

Changes:
- Cast macro argument to size_t in EVP_ENCODE_LENGTH to prevent
  signed integer overflow
- Change encoded_length in b64_write() from int to size_t and add
  an explicit overflow sanity check before allocation
- Change return type of evp_encodeblock_int() and
  encode_base64_avx2() from int to size_t so that large encoded
  output lengths are not truncated
- Update EVP_EncodeUpdate() to use size_t for the encoder return
  value accumulator (j), consistent with the existing size_t total
- Add explicit (int) casts in EVP_EncodeBlock() and EVP_EncodeFinal()
  where the public API requires int return values

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Apr  3 14:55:29 2026
(Merged from https://github.com/openssl/openssl/pull/30321)

7 days agoRevert "Make cpuid_setup non-constructor"
Bob Beck [Tue, 24 Mar 2026 18:26:37 +0000 (12:26 -0600)] 
Revert "Make cpuid_setup non-constructor"

This reverts commit 1d770fc6a9a0a7d6e20f3232180b80c366c2d4df.

Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
MergeDate: Thu Apr  2 07:18:05 2026
(Merged from https://github.com/openssl/openssl/pull/30557)

7 days agoMake riscv cpucap not use BIO_snprintf
Bob Beck [Tue, 24 Mar 2026 18:24:14 +0000 (12:24 -0600)] 
Make riscv cpucap not use BIO_snprintf

Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
MergeDate: Thu Apr  2 07:18:03 2026
(Merged from https://github.com/openssl/openssl/pull/30557)

7 days agoAdd test for NULL uri handling in OSSL_STORE_delete()
Weidong Wang [Tue, 24 Mar 2026 17:10:28 +0000 (12:10 -0500)] 
Add test for NULL uri handling in OSSL_STORE_delete()

Verify that passing NULL as the uri parameter to OSSL_STORE_delete()
returns 0 rather than crashing with a NULL pointer dereference.

Reviewed-by: Frederik Wedel-Heinen <fwh.openssl@gmail.com>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
MergeDate: Thu Apr  2 07:14:09 2026
(Merged from https://github.com/openssl/openssl/pull/30512)

7 days agoFix NULL pointer dereference in OSSL_STORE_delete()
Weidong Wang [Fri, 20 Mar 2026 12:00:10 +0000 (07:00 -0500)] 
Fix NULL pointer dereference in OSSL_STORE_delete()

Add a NULL check for the uri parameter before passing it to
OPENSSL_strlcpy(), matching the guard already present in
OSSL_STORE_open_ex().

Fixes: 0a8807b4a838 "Store: API for deletion"
Reviewed-by: Frederik Wedel-Heinen <fwh.openssl@gmail.com>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
MergeDate: Thu Apr  2 07:14:08 2026
(Merged from https://github.com/openssl/openssl/pull/30512)

8 days agoFix names of X509_V_ERR_ERROR_IN_CERT_* constants in man page
Arne Schwabe [Tue, 31 Mar 2026 11:30:38 +0000 (13:30 +0200)] 
Fix names of X509_V_ERR_ERROR_IN_CERT_* constants in man page

The names of the X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD and
X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD in the man page have
the first _ERR_ spelt out as _ERROR_ instead.

Signed-off-by: Arne Schwabe <arne@rfc2549.org>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Frederik Wedel-Heinen <fwh.openssl@gmail.com>
MergeDate: Wed Apr  1 17:06:53 2026
(Merged from https://github.com/openssl/openssl/pull/30643)

(cherry picked from commit e39a6de5c8ba43f95073cd3f88cdb86bd131825e)

8 days agoapps/lib/apps.c: use fstat on an opened fd in app_mmap_file()
Eugene Syromiatnikov [Mon, 30 Mar 2026 08:52:07 +0000 (10:52 +0200)] 
apps/lib/apps.c: use fstat on an opened fd in app_mmap_file()

Coverity has rightfully complained that using stat() before opening file
leads to TOCTOU issues, refactor the code to open the file first and
then perform stat checks on the opened file descriptor.  It is still far
from foolproof, as the file is not locked, and stat() is used elsewhere,
but at least it seems to be a step in the right direction.

Resolves: https://scan5.scan.coverity.com/#/project-view/65248/10222?selectedIssue=1690686
Fixes: 80b7e49c273f "Use mmap for pkeyutl -rawin and dgst one-shot input"
Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
MergeDate: Wed Apr  1 12:46:08 2026
(Merged from https://github.com/openssl/openssl/pull/30624)

9 days agoFix loongarch64 build and clean up include paths
openssl-machine [Mon, 23 Mar 2026 10:24:34 +0000 (11:24 +0100)] 
Fix loongarch64 build and clean up include paths

Fixes #30418

Add ../crypto to INCLUDE[p_ossltest].
Remove useless .. from various INCLUDE[] - this was necessary when e_os.h was
placed in the SRCDIR root.

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Norbert Pocs <norbertp@openssl.org>
Reviewed-by: Neil Horman <nhorman@openssl.org>
MergeDate: Tue Mar 31 15:51:53 2026
(Merged from https://github.com/openssl/openssl/pull/30536)

9 days agoutil/platform_symbols/windows-symbols.txt: add _get_osfhandle
Eugene Syromiatnikov [Tue, 31 Mar 2026 02:46:29 +0000 (04:46 +0200)] 
util/platform_symbols/windows-symbols.txt: add _get_osfhandle

Its usage is introduced in commit b238d36c50a1 "Fix certificate read
from stdin on Windows".

Fixes: b238d36c50a1 "Fix certificate read from stdin on Windows"
Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Norbert Pocs <norbertp@openssl.org>
MergeDate: Tue Mar 31 11:55:26 2026
(Merged from https://github.com/openssl/openssl/pull/30634)

9 days agoutil/platform_symbols/windows-symbols.txt: sort in lexicographical order
Eugene Syromiatnikov [Tue, 31 Mar 2026 02:45:27 +0000 (04:45 +0200)] 
util/platform_symbols/windows-symbols.txt: sort in lexicographical order

Sort using "LC_ALL=C sort -u".

Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Norbert Pocs <norbertp@openssl.org>
MergeDate: Tue Mar 31 11:55:25 2026
(Merged from https://github.com/openssl/openssl/pull/30634)

9 days agoDon't eat a NULL if a queryfile is not provided
Bob Beck [Fri, 27 Mar 2026 21:34:16 +0000 (15:34 -0600)] 
Don't eat a NULL if a queryfile is not provided

Fixes: 18cd23df8a8f2 "Remove "noise" comments from TS files."
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Tue Mar 31 09:51:38 2026
(Merged from https://github.com/openssl/openssl/pull/30608)

9 days agoRefactor ML-KEM decap, also cleanse failure_key
Viktor Dukhovni [Thu, 26 Mar 2026 17:02:34 +0000 (04:02 +1100)] 
Refactor ML-KEM decap, also cleanse failure_key

Pedantically cleanse the typically unused decap failure_key's stack
copy.

When actually used, it is copied into the caller's shared secret result,
perhaps to be cleansed there after use, or not, that's the callers
business.

While at it, slightly refactor the internal decap() implementation to
consolidate all the data to be cleansed into a single buffer, but now
avoid copying the public key hash, instead, when computing "K || r" as
"G(m || h)" include "h" via a separate EVP_DigestUpdate() call.

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Tue Mar 31 05:19:40 2026
(Merged from https://github.com/openssl/openssl/pull/30598)

9 days agoFix -Wdiscarded-qualifiers warnings shown when glibc-2.43 is used
Collin Funk [Sat, 28 Mar 2026 07:41:01 +0000 (00:41 -0700)] 
Fix -Wdiscarded-qualifiers warnings shown when glibc-2.43 is used

When building with glibc-2.43 there is the following warning:

    crypto/x509/x509_vpm.c: In function 'validate_email_name':
    crypto/x509/x509_vpm.c:317:13: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
      317 |     if ((at = memchr(name, '@', len)) == NULL)
          |             ^

This is due to a change described in the NEWS file of glibc-2.43:

    * For ISO C23, the functions bsearch, memchr, strchr, strpbrk, strrchr,
      strstr, wcschr, wcspbrk, wcsrchr, wcsstr and wmemchr that return
      pointers into their input arrays now have definitions as macros that
      return a pointer to a const-qualified type when the input argument is
      a pointer to a const-qualified type.

Systems using this recent glibc version will likely also be using GCC 15
or later which default to `-std=gnu23`, meaning that this warning will
show up without modifying `CFLAGS`.

We can make these pointers const since we never write to them.

Complements: f584ae959cbc "Let's support multiple names for certificate verification"

Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
MergeDate: Tue Mar 31 02:38:14 2026
(Merged from https://github.com/openssl/openssl/pull/30613)

9 days agoAdd negative length validation in EVP_EncryptUpdate and EVP_DecryptUpdate
Pranavjeet-Naidu [Tue, 24 Mar 2026 23:45:30 +0000 (05:15 +0530)] 
Add negative length validation in EVP_EncryptUpdate and EVP_DecryptUpdate

Added input length validation checks to prevent potential security issues
when negative values are passed to EVP_EncryptUpdate and EVP_DecryptUpdate.
These functions cast inl (int) to size_t without validation, which could lead
to unexpectedly large buffer allocation attempts or unintended behavior with
negative inputs.

Validation is performed early in both functions to ensure only valid,
non-negative lengths are processed. Error is reported via EVP_R_INVALID_LENGTH.

Fixes: https://github.com/openssl/openssl/issues/30486
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Tue Mar 31 02:10:52 2026
(Merged from https://github.com/openssl/openssl/pull/30560)

9 days agoConfigurations/10-main.conf: minimum NASM version needs to be 2.09 on Windows
Tomas Mraz [Wed, 25 Mar 2026 17:54:18 +0000 (18:54 +0100)] 
Configurations/10-main.conf: minimum NASM version needs to be 2.09 on Windows

Otherwise some assembler code might be miscompiled.

Fixes: https://github.com/openssl/openssl/issues/20529
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
MergeDate: Tue Mar 31 01:47:41 2026
(Merged from https://github.com/openssl/openssl/pull/30576)

9 days agoFix certificate read from stdin on Windows
Milan Broz [Tue, 24 Mar 2026 13:50:21 +0000 (14:50 +0100)] 
Fix certificate read from stdin on Windows

On Windows, reading certificate from stdin could fail like

    > type cert.der| openssl.exe x509 -inform DER -outform PEM
    Could not find or decode certificate from <stdin>

The decoder already tries to insert BIO_f_readbuffer
in this case, unfortunately it depends on undefined behavior
of ftell() on Windows.

Fix it by adding check for non-seekable input case
to BIO file control.

Note, the added testcase tests binary input certificate,
but does not trigger this issue explicitly.

Fixes: https://github.com/openssl/openssl/issues/19508
Signed-off-by: Milan Broz <gmazyland@gmail.com>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
Reviewed-by: Viktor Dukhovni <viktor@openssl.org>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Tue Mar 31 01:38:21 2026
(Merged from https://github.com/openssl/openssl/pull/30559)

9 days agoRemove superfluous volatile for RCU on Windows
Milan Broz [Fri, 27 Mar 2026 09:38:52 +0000 (10:38 +0100)] 
Remove superfluous volatile for RCU on Windows

When compiling on the MINGW platform, there are many warnings like this:

  warning: passing argument 1 of 'CRYPTO_atomic_add64' discards 'volatile'
  qualifier from pointer target type [-Wdiscarded-qualifiers]
  CRYPTO_atomic_add64(&lock->qp_group[qp_idx].users, (uint64_t)1, &tmp64,
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The warning actually shows several issues with volatile in struct rcu_qp:

 - all handling functions using it do not use the volatile modifier,
   so that the compiler can treat this pointer as non-volatile already
   (Posix pthread variant does not use volatile here at all.)

 - thread safety is already guaranteed by using locks
   (NO_INTERLOCKEDOR64) or Interlocked*64 Win32 API functions.

 - the volatile removal modifier should always be explicit

In short, I think the volatile in struct rcu_qp on Windows
has no additional value and can be removed.

This also fixes the warnings mentioned above :-)

Signed-off-by: Milan Broz <gmazyland@gmail.com>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Tue Mar 31 01:25:56 2026
(Merged from https://github.com/openssl/openssl/pull/30602)

9 days agodoc: fix -signcert grouping in CA.pl documentation
kovan [Tue, 27 Jan 2026 11:11:08 +0000 (12:11 +0100)] 
doc: fix -signcert grouping in CA.pl documentation

The -signcert option was incorrectly grouped with -sign and -xsign at
line 109, which implied they were equivalent. However, -signcert is
different: it expects a self-signed certificate (not a certificate
request) in newreq.pem, and converts it to a request before signing.

This is correctly documented in its own separate section at line 123,
which states "-signcert is the same as -sign except it expects a self
signed certificate".

Remove -signcert from the -sign/-xsign grouping to eliminate the
contradiction.

Resolves: https://github.com/openssl/openssl/issues/29165
Fixes: 022696cab014 "Allow CA.pl script user to pass extra arguments to openssl command"
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Tue Mar 31 01:10:50 2026
(Merged from https://github.com/openssl/openssl/pull/29794)

9 days agoDocument X509V3_EXT_print API const change in manual page
Arne Schwabe [Wed, 25 Mar 2026 15:28:46 +0000 (16:28 +0100)] 
Document X509V3_EXT_print API const change in manual page

Commit e75bd84ffc7 made the ext argument of 509V3_EXT_print const
but did not update the man page to match the implementation.

Complements: e75bd84ffc73 "Constify X509_get_ext() and friends.."
Signed-off-by: Arne Schwabe <arne@rfc2549.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Tue Mar 31 01:01:51 2026
(Merged from https://github.com/openssl/openssl/pull/30595)

9 days agoX509_EXTENSION_set_object.pod, X509v3_get_ext_by_NID.pod: add missing const
Eugene Syromiatnikov [Fri, 27 Mar 2026 11:05:39 +0000 (12:05 +0100)] 
X509_EXTENSION_set_object.pod, X509v3_get_ext_by_NID.pod: add missing const

Update the documentation to include that added const qualifiers
to the arguments of X509_EXTENSION_get_object(), X509_EXTENSION_get_data(),
and X509v3_add_ext().

References: https://github.com/openssl/openssl/pull/30595
Complements: e75bd84ffc73 "Constify X509_get_ext() and friends.."
Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
MergeDate: Tue Mar 31 00:47:35 2026
(Merged from https://github.com/openssl/openssl/pull/30601)

9 days agoikev2kdf.c: expand missing secret check in kdf_ikev2kdf_derive()
Eugene Syromiatnikov [Wed, 25 Mar 2026 11:45:27 +0000 (12:45 +0100)] 
ikev2kdf.c: expand missing secret check in kdf_ikev2kdf_derive()

The seemingly impossible (and erroneous) case of (secret == NULL &&
secret_len != 0) is not accounted for in sanity checks, which provoked
Coverity to report potential NULL dereference in ikev2_check_secret_and_pad()
afterwards.  Placate it by expanding the check to cover that improbable
situation and echo the seedkey check from the previous case.

Resolves: https://scan5.scan.coverity.com/#/project-view/65248/10222?selectedIssue=1690439
Complements: 0dd1c50fc070 "Add IKEV2KDF implementation"
Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Frederik Wedel-Heinen <fwh.openssl@gmail.com>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
MergeDate: Tue Mar 31 00:33:22 2026
(Merged from https://github.com/openssl/openssl/pull/30566)

9 days agocrypto/property/property.c: avoid NULL dereference in impl_cache_free()
Eugene Syromiatnikov [Wed, 25 Mar 2026 11:41:32 +0000 (12:41 +0100)] 
crypto/property/property.c: avoid NULL dereference in impl_cache_free()

Dereference elem only after checking it for NULL.  Reported by Coverity,
CID 1690442.

Resolves: https://scan5.scan.coverity.com/#/project-view/65248/10222?selectedIssue=1690442
Fixes: 95ac190979ec "convert ALGORITHM cache to use internal hashtable"
Signed-off-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Frederik Wedel-Heinen <fwh.openssl@gmail.com>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
MergeDate: Tue Mar 31 00:33:21 2026
(Merged from https://github.com/openssl/openssl/pull/30566)

9 days agoUse OPENSSL_assert for Windows RCU for missing lock
Milan Broz [Sat, 28 Mar 2026 11:37:32 +0000 (12:37 +0100)] 
Use OPENSSL_assert for Windows RCU for missing lock

If NO_INTERLOCKEDOR64 is define, Windows RCU code must
use thread locks.

The lock *must* be provided in that case otherwise it is
an internal code error, not a runtime error.
Use OPENSSL_assert here.

This also fixes several unititialized variable warnings
as analyzer no longer see this impossible paths in code.

Signed-off-by: Milan Broz <gmazyland@gmail.com>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Frederik Wedel-Heinen <fwh.openssl@gmail.com>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Tue Mar 31 00:28:20 2026
(Merged from https://github.com/openssl/openssl/pull/30619)

9 days agoSilence MINGW warning about INVALID_SOCKET
Milan Broz [Fri, 27 Mar 2026 09:40:35 +0000 (10:40 +0100)] 
Silence MINGW warning about INVALID_SOCKET

On Windows, SOCKET is defined as unsigned (UINT_PTR).

In OpenSSL, the socket abstraction uses int, see
discussion in https://github.com/openssl/openssl/issues/7282.

MINGW for some time uses a signed definition of INVALID_SOCKET,
then switched back to unsigned, see for example
https://sourceforge.net/p/mingw-w64/discussion/723797/thread/71522d10/
Currently, it is defined as unsigned, creating many warnings like

  warning: overflow in conversion from 'long long unsigned int' to 'int'
  changes value from '18446744073709551615' to '-1' [-Woverflow]
  *sock = INVALID_SOCKET;

As we use INVALID_SOCKET only in our code, we can safely silence
this warning just by redefining INVALID_SOCKET to signed
(version that is commented out in MINGW headers).

While this is only a workaround, it has been here for years and
allows focus on more important warnings.

Signed-off-by: Milan Broz <gmazyland@gmail.com>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Tue Mar 31 00:22:27 2026
(Merged from https://github.com/openssl/openssl/pull/30616)

9 days agoDefine static set_cloexec() only when really used
Milan Broz [Fri, 27 Mar 2026 09:39:56 +0000 (10:39 +0100)] 
Define static set_cloexec() only when really used

Statically defined set_cloexec helper is used only
if RIO_NOTIFIER_METHOD_SOCKET is set (for non-Windows branch)
and if RIO_NOTIFIER_METHOD_SOCKETPAIR is set
(always).

This avoids unused code warnings.

Signed-off-by: Milan Broz <gmazyland@gmail.com>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Tue Mar 31 00:22:26 2026
(Merged from https://github.com/openssl/openssl/pull/30616)

9 days agoMake ssl dir const in get_windows_default_path
Milan Broz [Fri, 27 Mar 2026 09:39:18 +0000 (10:39 +0100)] 
Make ssl dir const in get_windows_default_path

Signed-off-by: Milan Broz <gmazyland@gmail.com>
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Tue Mar 31 00:22:24 2026
(Merged from https://github.com/openssl/openssl/pull/30616)

9 days agoChange !BN_copy() to BN_copy() == NULL
Alyssa Sfravara [Thu, 26 Mar 2026 15:36:20 +0000 (11:36 -0400)] 
Change !BN_copy() to BN_copy() == NULL

Per the coding style guide, Chapter 15, "Expressions"[1]:

    Do not use implicit checks for numbers (not) being 0 or pointers
    (not) being NULL.

Change occurrences of "!BN_copy(a, b)" checks to "BN_copy() == NULL"
to align with the coding style guide.

[1] https://www.openssl.org/policies/technical/coding-style.html#expressions

Resolves: https://github.com/openssl/openssl/issues/30565
CLA: trivial

Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Tue Mar 31 00:10:41 2026
(Merged from https://github.com/openssl/openssl/pull/30573)

9 days agoConfigure: Remove extensive debug output by default
Orgad Shaneh [Thu, 6 Nov 2025 11:43:21 +0000 (13:43 +0200)] 
Configure: Remove extensive debug output by default

These debug logs were added in 6e0fd246e7a (#24687), probably for
debugging the script, but they remained active by default.

Change them to appear only if OPENSSL_MKINSTALLVARS_DEBUG env var
is set.

References: 6e0fd246e7a6 "Give util/mkinstallvars.pl more fine grained control over var dependencies"

Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
MergeDate: Tue Mar 31 00:03:14 2026
(Merged from https://github.com/openssl/openssl/pull/29083)

13 days agoFixed missing subjectAltName when issuing a cert with mkcert.sh genee
K1 [Thu, 26 Mar 2026 12:14:37 +0000 (20:14 +0800)] 
Fixed missing subjectAltName when issuing a cert with mkcert.sh genee

Just add %s to make subjectAltName appear before [alts].

Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Mar 27 16:53:28 2026
(Merged from https://github.com/openssl/openssl/pull/30585)

13 days agoUpdate ordinals from 4.0.0-beta1
openssl-machine [Tue, 24 Mar 2026 15:13:42 +0000 (15:13 +0000)] 
Update ordinals from 4.0.0-beta1

This is a partial forward-port of commit 3c4194022cc4 "make update"
from the openssl-4.0 branch, that includes updates to util/libcrypto.num
and util/libssl.num files.

References: 3c4194022cc4 "make update"

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Mar 27 16:52:22 2026
(Merged from https://github.com/openssl/openssl/pull/30555)

13 days agoquic: add missing return 0 after raise_protocol_error for NEW_CONN_ID
Abhinav Agarwal [Tue, 24 Mar 2026 02:17:04 +0000 (19:17 -0700)] 
quic: add missing return 0 after raise_protocol_error for NEW_CONN_ID

Every other frame type handler in depack_process_frames() returns 0
after calling ossl_quic_channel_raise_protocol_error(), but the
NEW_CONN_ID case falls through to depack_do_frame_new_conn_id().

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Fri Mar 27 16:48:44 2026
(Merged from https://github.com/openssl/openssl/pull/30550)

13 days agoAdd NULL checks for the arguments in OSSL_PARAM_BLD_push_*() functions
Igor Ustinov [Mon, 23 Mar 2026 13:35:30 +0000 (14:35 +0100)] 
Add NULL checks for the arguments in OSSL_PARAM_BLD_push_*() functions

Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
MergeDate: Fri Mar 27 16:46:48 2026
(Merged from https://github.com/openssl/openssl/pull/30542)

13 days agoCMS_verify(): Fix leak of tmpin in an error path
openssl-machine [Mon, 23 Mar 2026 08:09:03 +0000 (09:09 +0100)] 
CMS_verify(): Fix leak of tmpin in an error path

Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Mar 27 16:43:44 2026
(Merged from https://github.com/openssl/openssl/pull/30535)

13 days agoDoc: clarify AAD out1 semantics in EVP_EncryptInit
William Faber [Sun, 22 Mar 2026 21:29:27 +0000 (17:29 -0400)] 
Doc: clarify AAD out1 semantics in EVP_EncryptInit

Fixes #29761

Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Mar 27 16:40:23 2026
(Merged from https://github.com/openssl/openssl/pull/30533)

13 days agoAdds NULL checks for EVP_MD_CTX_get_pkey_ctx() return values
Chris Baudouin, Jr. [Sat, 21 Mar 2026 18:08:01 +0000 (18:08 +0000)] 
Adds NULL checks for EVP_MD_CTX_get_pkey_ctx() return values

Guard against potential NULL pointer dereferences when
EVP_MD_CTX_get_pkey_ctx() is called and its result is used
without validation. Store the return value in a local variable,
check for NULL before passing it to subsequent functions, and
remove redundant repeated calls.

Fixes #27735

Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Mar 27 16:39:04 2026
(Merged from https://github.com/openssl/openssl/pull/30522)

13 days agos390x: set minimum architecture level to z10
Amaan Qureshi [Fri, 20 Mar 2026 00:40:20 +0000 (20:40 -0400)] 
s390x: set minimum architecture level to z10

The keccak1600 perlasm file (`keccak1600-s390x.pl`) emits `cijne`, a
z10 compare-immediate-and-branch instruction, without declaring a
minimum architecture level. GCC defaults to `-march=z900` on s390x,
causing assembler errors when building with the default toolchain
flags:

    keccak1600-s390x.S:399: Error: Unrecognized opcode: `cijne'

z900 has been out of service since 2014, the Linux kernel requires
z196 minimum, and clang already defaults to z10 on s390x. A
`.machine "z10"` GAS directive in the generated assembly resolves the
error by declaring the architecture level the file already requires.

Ref: #27323

Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Nikola Pajkovsky <nikolap@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Mar 27 16:32:22 2026
(Merged from https://github.com/openssl/openssl/pull/30507)

13 days agoImprove bad FFC parameters error messages with L, N arguments
Jun Aruga [Tue, 17 Mar 2026 17:01:58 +0000 (17:01 +0000)] 
Improve bad FFC parameters error messages with L, N arguments

Improve the finite field cryptography (FFC) messages with L, N arguments.

Fixes #17108

Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Mar 27 16:29:59 2026
(Merged from https://github.com/openssl/openssl/pull/30493)

13 days agoUse mmap for pkeyutl -rawin and dgst one-shot input
herbenderbler [Wed, 25 Mar 2026 06:49:06 +0000 (00:49 -0600)] 
Use mmap for pkeyutl -rawin and dgst one-shot input

When using openssl pkeyutl -rawin or openssl dgst for one-shot sign/verify
(e.g. Ed25519, Ed448), file input is now read via mmap() on Unix where
supported, avoiding a full buffer allocation and copy. Large files are
supported without doubling memory use; on failure of the mmap path we
do not fall back to the buffer path.

- Add app_mmap_file() in apps/lib/apps.c: stat/open/mmap/close, tri-state
  return (1 mapped, 0 size zero, -1 error). Parameter err_bio avoids
  shadowing global bio_err (-Wshadow).
- apps/pkeyutl.c and apps/dgst.c: use app_mmap_file(); single exit for
  mmap path in pkeyutl; dgst includes apps.h first for _FILE_OFFSET_BITS;
  do_fp_oneshot_sign returns EXIT_SUCCESS/EXIT_FAILURE like do_fp(); no
  fallback when mmap attempted but fails.
- pkeyutl mmap/buffer path: pass filesize to EVP_DigestVerify and
  EVP_DigestSign (review suggestion, avoids casting buf_len).
- Error messages: per-file messages for stat/size (dgst, pkeyutl); CHANGES.md
  "Unix-like" and "16 MB" (documentation style).
- Centralize _FILE_OFFSET_BITS and mmap includes in apps/include/apps.h.
- Tests: pkeyutl/dgst oneshot from file, no-fallback regression tests;
  use srctop_dir for test paths; stderr patterns for mmap errors.
- Docs: man pages and CHANGES.md.

CI fixes: return failure from dgst one-shot sign when mmap fails; treat
non-regular paths as mmap errors in app_mmap_file() and pkeyutl; reject
directories before mmap.

Addresses review feedback from DDvO, npajkovsky, and vdukhovni (PR #30429).

Fixes #11677

Co-authored-by: Viktor Dukhovni <viktor1ghub@dukhovni.org>
Co-authored-by: David von Oheimb <DDvO@users.noreply.github.com>
Reviewed-by: David von Oheimb <david.von.oheimb@siemens.com>
Reviewed-by: Viktor Dukhovni <viktor@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
MergeDate: Fri Mar 27 16:25:33 2026
(Merged from https://github.com/openssl/openssl/pull/30429)

13 days agodoc: Clarify wording in PKCS5_PBE_keyivgen.pod
Zoey Chapell [Sun, 15 Feb 2026 00:39:20 +0000 (19:39 -0500)] 
doc: Clarify wording in PKCS5_PBE_keyivgen.pod

Resolves #12519 by adding to the DESCRIPTION section. Documentation only change.

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Mar 27 16:17:02 2026
(Merged from https://github.com/openssl/openssl/pull/29984)

13 days agoFix missing EVP_CIPHER_get_iv_length() guard in PKCS5_pbe2_set_scrypt
Weidong Wang [Sat, 21 Mar 2026 15:41:49 +0000 (10:41 -0500)] 
Fix missing EVP_CIPHER_get_iv_length() guard in PKCS5_pbe2_set_scrypt

Store the return value of EVP_CIPHER_get_iv_length() in a local variable
and guard with (ivlen > 0) before passing to memcpy/RAND_bytes, matching
the pattern already used in p5_pbev2.c. Without this, a negative return
value (-1) is implicitly converted to SIZE_MAX when cast to size_t,
causing a stack buffer overflow on iv[EVP_MAX_IV_LENGTH].

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Fri Mar 27 16:14:09 2026
(Merged from https://github.com/openssl/openssl/pull/30510)

13 days agoRemove bioprinttest
slontis [Wed, 25 Mar 2026 05:38:57 +0000 (16:38 +1100)] 
Remove bioprinttest

Bioprinttest is redundant since internally it just calls c library
functions such as vsnprintf. This was a slow test.

Reviewed-by: Saša Nedvědický <sashan@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.foundation>
MergeDate: Fri Mar 27 07:17:04 2026
(Merged from https://github.com/openssl/openssl/pull/30561)

13 days agoCMS/PKCS#7 doc: Fix inconsistencies and missing detail w.r.t. smimesign and smimeencr...
Dr. David von Oheimb [Wed, 4 Feb 2026 09:36:31 +0000 (10:36 +0100)] 
CMS/PKCS#7 doc: Fix inconsistencies and missing detail w.r.t. smimesign and smimeencrypt purposes

* Fix inconsistent doc (so far using purpose names smime_sign and smime_encrypt) vs. implementation
* Add the info that "smimesign" is the default purpose here.

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
MergeDate: Fri Mar 27 06:25:20 2026
(Merged from https://github.com/openssl/openssl/pull/18914)

13 days agoCMS/PKCS#7: Add missing verification method "smime_encrypt" in crypto/x509/x509_vpm...
Dr. David von Oheimb [Sat, 30 Jul 2022 19:11:51 +0000 (21:11 +0200)] 
CMS/PKCS#7: Add missing verification method "smime_encrypt" in crypto/x509/x509_vpm.c and doc

Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
MergeDate: Fri Mar 27 06:25:19 2026
(Merged from https://github.com/openssl/openssl/pull/18914)