mirror of
				https://github.com/Mbed-TLS/mbedtls.git
				synced 2025-11-03 20:33:16 +03:00 
			
		
		
		
	Fix for memory leak in RSA-SSA signing
Fix in mbedtls_rsa_rsassa_pkcs1_v15_sign() in rsa.c
This commit is contained in:
		@@ -13,8 +13,10 @@ Bugfix
 | 
				
			|||||||
   * Fix bug in certificate validation that caused valid chains to be rejected
 | 
					   * Fix bug in certificate validation that caused valid chains to be rejected
 | 
				
			||||||
     when the first intermediate certificate has pathLenConstraint=0. Found by
 | 
					     when the first intermediate certificate has pathLenConstraint=0. Found by
 | 
				
			||||||
     Nicholas Wilson. Introduced in mbed TLS 2.2.0. #280
 | 
					     Nicholas Wilson. Introduced in mbed TLS 2.2.0. #280
 | 
				
			||||||
 | 
					   * Removed potential leak in mbedtls_rsa_rsassa_pkcs1_v15_sign(), found by 
 | 
				
			||||||
 | 
					     JayaraghavendranK. #372
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Changes
 | 
					Change
 | 
				
			||||||
   * To avoid dropping an entire DTLS datagram if a single record in a datagram
 | 
					   * To avoid dropping an entire DTLS datagram if a single record in a datagram
 | 
				
			||||||
     is invalid, we now only drop the record and look at subsequent records (if
 | 
					     is invalid, we now only drop the record and look at subsequent records (if
 | 
				
			||||||
     any are presemt) in the same datagram to avoid interoperability issues.
 | 
					     any are presemt) in the same datagram to avoid interoperability issues.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1086,10 +1086,16 @@ int mbedtls_rsa_rsassa_pkcs1_v15_sign( mbedtls_rsa_context *ctx,
 | 
				
			|||||||
     * temporary buffer and check it before returning it.
 | 
					     * temporary buffer and check it before returning it.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    sig_try = mbedtls_calloc( 1, ctx->len );
 | 
					    sig_try = mbedtls_calloc( 1, ctx->len );
 | 
				
			||||||
    verif   = mbedtls_calloc( 1, ctx->len );
 | 
					    if( sig_try == NULL )
 | 
				
			||||||
    if( sig_try == NULL || verif == NULL )
 | 
					 | 
				
			||||||
        return( MBEDTLS_ERR_MPI_ALLOC_FAILED );
 | 
					        return( MBEDTLS_ERR_MPI_ALLOC_FAILED );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    verif   = mbedtls_calloc( 1, ctx->len );
 | 
				
			||||||
 | 
					    if( verif == NULL )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        mbedtls_free( sig_try );
 | 
				
			||||||
 | 
					        return( MBEDTLS_ERR_MPI_ALLOC_FAILED );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    MBEDTLS_MPI_CHK( mbedtls_rsa_private( ctx, f_rng, p_rng, sig, sig_try ) );
 | 
					    MBEDTLS_MPI_CHK( mbedtls_rsa_private( ctx, f_rng, p_rng, sig, sig_try ) );
 | 
				
			||||||
    MBEDTLS_MPI_CHK( mbedtls_rsa_public( ctx, sig_try, verif ) );
 | 
					    MBEDTLS_MPI_CHK( mbedtls_rsa_public( ctx, sig_try, verif ) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user