From c097b0fdedd82e5a9369fa418c3c785bd81250b9 Mon Sep 17 00:00:00 2001 From: Andrzej Kurek Date: Wed, 7 Nov 2018 09:30:50 -0500 Subject: [PATCH] pk_wrap: add a check for equal signature parts --- library/pk_wrap.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/library/pk_wrap.c b/library/pk_wrap.c index 6007a23c8..2e22ec9d3 100644 --- a/library/pk_wrap.c +++ b/library/pk_wrap.c @@ -542,10 +542,9 @@ static psa_algorithm_t translate_md_to_psa( mbedtls_md_type_t md_alg ) static int extract_ecdsa_sig( unsigned char **p, const unsigned char *end, mbedtls_asn1_buf *sig ) { - int ret; - size_t len_signature; - size_t len_partial; - int tag_type; + int ret, tag_type; + size_t len_signature, len_partial; + if( ( end - *p ) < 1 ) { return( MBEDTLS_ERR_X509_INVALID_SIGNATURE + @@ -590,6 +589,10 @@ static int extract_ecdsa_sig( unsigned char **p, const unsigned char *end, len_partial--; } + // Check if both parts are of the same size + if( len_partial != len_signature ) + return( MBEDTLS_ERR_X509_INVALID_SIGNATURE ); + memcpy( sig->p + len_partial, *p, len_partial ); len_signature += len_partial; sig->tag = tag_type;