From 88c2d227e47e39e977ae64157b2e04954e8bd412 Mon Sep 17 00:00:00 2001 From: Brian J Murray <bmurray7jhu@gmail.com> Date: Thu, 23 Jun 2016 12:57:03 -0700 Subject: [PATCH 1/2] Fixed unchecked calls to mbedtls_md_setup in rsa.c (#502) * Fixed unchecked calls to mbedtls_md_setup in rsa.c: * style fixes --- library/rsa.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/library/rsa.c b/library/rsa.c index 119431d8f..1d48709f3 100644 --- a/library/rsa.c +++ b/library/rsa.c @@ -553,7 +553,11 @@ int mbedtls_rsa_rsaes_oaep_encrypt( mbedtls_rsa_context *ctx, memcpy( p, input, ilen ); mbedtls_md_init( &md_ctx ); - mbedtls_md_setup( &md_ctx, md_info, 0 ); + if( ( ret = mbedtls_md_setup( &md_ctx, md_info, 0 ) ) != 0 ) + { + mbedtls_md_free( &md_ctx ); + return( ret ); + } // maskedDB: Apply dbMask to DB // @@ -728,7 +732,12 @@ int mbedtls_rsa_rsaes_oaep_decrypt( mbedtls_rsa_context *ctx, * Unmask data and generate lHash */ mbedtls_md_init( &md_ctx ); - mbedtls_md_setup( &md_ctx, md_info, 0 ); + if( ( ret = mbedtls_md_setup( &md_ctx, md_info, 0 ) ) != 0 ) + { + mbedtls_md_free( &md_ctx ); + return( ret ); + } + /* Generate lHash */ mbedtls_md( md_info, label, label_len, lhash ); @@ -974,7 +983,11 @@ int mbedtls_rsa_rsassa_pss_sign( mbedtls_rsa_context *ctx, p += slen; mbedtls_md_init( &md_ctx ); - mbedtls_md_setup( &md_ctx, md_info, 0 ); + if( ( ret = mbedtls_md_setup( &md_ctx, md_info, 0 ) ) != 0 ) + { + mbedtls_md_free( &md_ctx ); + return( ret ); + } // Generate H = Hash( M' ) // @@ -1247,7 +1260,11 @@ int mbedtls_rsa_rsassa_pss_verify_ext( mbedtls_rsa_context *ctx, return( MBEDTLS_ERR_RSA_BAD_INPUT_DATA ); mbedtls_md_init( &md_ctx ); - mbedtls_md_setup( &md_ctx, md_info, 0 ); + if( ( ret = mbedtls_md_setup( &md_ctx, md_info, 0 ) ) != 0 ) + { + mbedtls_md_free( &md_ctx ); + return( ret ); + } mgf_mask( p, siglen - hlen - 1, p + siglen - hlen - 1, hlen, &md_ctx ); From 8df1bee06f732ba91b68b7864b6a5ab6a6352b5b Mon Sep 17 00:00:00 2001 From: Andres AG <andres.amayagarcia@arm.com> Date: Mon, 5 Sep 2016 14:03:20 +0100 Subject: [PATCH 2/2] Add ChangeLog entry for unchecked calls fix --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index e503d7562..1b456c9e5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -10,6 +10,10 @@ Bugfix when GCM is used. #441 * Fix for key exchanges based on ECDH-RSA or ECDH-ECDSA which weren't enabled unless others were also present. Found by David Fernandez. #428 + * Fix missing return code check after call to mbedtls_md_setup() that could + result in usage of invalid md_ctx in mbedtls_rsa_rsaes_oaep_encrypt(), + mbedtls_rsa_rsaes_oaep_decrypt(), mbedtls_rsa_rsassa_pss_sign() and + mbedtls_rsa_rsassa_pss_verify_ext(). Fixed by Brian J. Murray. = mbed TLS 2.1.5 branch released 2016-06-28