summaryrefslogtreecommitdiff
path: root/providers
diff options
context:
space:
mode:
authorDaniel Fiala <daniel@openssl.org>2022-06-22 20:49:51 +0200
committerTomas Mraz <tomas@openssl.org>2022-06-27 10:58:40 +0200
commit08f876d0dea184b071a5aded4c55317e5a63c80e (patch)
tree46dc0f9b884681ea86057d9f36f0b1a3a54624b1 /providers
parent59196250cb45ecd128d2f8bbc47de612167606d3 (diff)
downloadopenssl-new-08f876d0dea184b071a5aded4c55317e5a63c80e.tar.gz
Improve checks for invalid saltlen in DER writer.
Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/18615)
Diffstat (limited to 'providers')
-rw-r--r--providers/common/der/der_rsa_key.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/providers/common/der/der_rsa_key.c b/providers/common/der/der_rsa_key.c
index 4bad32ee6d..2ae53a171d 100644
--- a/providers/common/der/der_rsa_key.c
+++ b/providers/common/der/der_rsa_key.c
@@ -305,7 +305,7 @@ int ossl_DER_w_RSASSA_PSS_params(WPACKET *pkt, int tag,
saltlen = ossl_rsa_pss_params_30_saltlen(pss);
trailerfield = ossl_rsa_pss_params_30_trailerfield(pss);
- if (saltlen < 0) {
+ if (saltlen < 0 || (unsigned int)saltlen > UINT32_MAX) {
ERR_raise(ERR_LIB_RSA, RSA_R_INVALID_SALT_LENGTH);
return 0;
}
@@ -347,8 +347,8 @@ int ossl_DER_w_RSASSA_PSS_params(WPACKET *pkt, int tag,
return ossl_DER_w_begin_sequence(pkt, tag)
&& (trailerfield == default_trailerfield
- || ossl_DER_w_uint32(pkt, 3, trailerfield))
- && (saltlen == default_saltlen || ossl_DER_w_uint32(pkt, 2, saltlen))
+ || ossl_DER_w_uint32(pkt, 3, (uint32_t)trailerfield))
+ && (saltlen == default_saltlen || ossl_DER_w_uint32(pkt, 2, (uint32_t)saltlen))
&& DER_w_MaskGenAlgorithm(pkt, 1, pss)
&& (hashalg_nid == default_hashalg_nid
|| ossl_DER_w_precompiled(pkt, 0, hashalg, hashalg_sz))