mirror of
				https://github.com/cuberite/polarssl.git
				synced 2025-11-04 04:32:24 -05:00 
			
		
		
		
	Merge remote-tracking branch 'restricted/pr/491' into development-restricted
This commit is contained in:
		
						commit
						7f85563f9b
					
				@ -2,6 +2,11 @@ mbed TLS ChangeLog (Sorted per branch, date)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
= mbed TLS x.x.x branch released xxxx-xx-xx
 | 
					= mbed TLS x.x.x branch released xxxx-xx-xx
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Security
 | 
				
			||||||
 | 
					   * Fix a potential memory leak in mbedtls_ssl_setup( ) function. An allocation
 | 
				
			||||||
 | 
					     failure could leave an unreleased buffer. A handshake init failure would
 | 
				
			||||||
 | 
					     lead to leaving two unreleased buffers.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Features
 | 
					Features
 | 
				
			||||||
   * Add support for fragmentation of outgoing DTLS handshake messages. This
 | 
					   * Add support for fragmentation of outgoing DTLS handshake messages. This
 | 
				
			||||||
     is controlled by the maximum fragment length as set locally or negotiated
 | 
					     is controlled by the maximum fragment length as set locally or negotiated
 | 
				
			||||||
 | 
				
			|||||||
@ -6293,28 +6293,55 @@ int mbedtls_ssl_setup( mbedtls_ssl_context *ssl,
 | 
				
			|||||||
    /*
 | 
					    /*
 | 
				
			||||||
     * Prepare base structures
 | 
					     * Prepare base structures
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* Set to NULL in case of an error condition */
 | 
				
			||||||
 | 
					    ssl->out_buf = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ssl->in_buf = mbedtls_calloc( 1, MBEDTLS_SSL_IN_BUFFER_LEN );
 | 
					    ssl->in_buf = mbedtls_calloc( 1, MBEDTLS_SSL_IN_BUFFER_LEN );
 | 
				
			||||||
    if( ssl->in_buf == NULL )
 | 
					    if( ssl->in_buf == NULL )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%d bytes) failed", MBEDTLS_SSL_IN_BUFFER_LEN) );
 | 
					        MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%d bytes) failed", MBEDTLS_SSL_IN_BUFFER_LEN) );
 | 
				
			||||||
        return( MBEDTLS_ERR_SSL_ALLOC_FAILED );
 | 
					        ret = MBEDTLS_ERR_SSL_ALLOC_FAILED;
 | 
				
			||||||
 | 
					        goto error;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ssl->out_buf = mbedtls_calloc( 1, MBEDTLS_SSL_OUT_BUFFER_LEN );
 | 
					    ssl->out_buf = mbedtls_calloc( 1, MBEDTLS_SSL_OUT_BUFFER_LEN );
 | 
				
			||||||
    if( ssl->out_buf == NULL )
 | 
					    if( ssl->out_buf == NULL )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%d bytes) failed", MBEDTLS_SSL_OUT_BUFFER_LEN) );
 | 
					        MBEDTLS_SSL_DEBUG_MSG( 1, ( "alloc(%d bytes) failed", MBEDTLS_SSL_OUT_BUFFER_LEN) );
 | 
				
			||||||
        mbedtls_free( ssl->in_buf );
 | 
					        ret = MBEDTLS_ERR_SSL_ALLOC_FAILED;
 | 
				
			||||||
        ssl->in_buf = NULL;
 | 
					        goto error;
 | 
				
			||||||
        return( MBEDTLS_ERR_SSL_ALLOC_FAILED );
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ssl_reset_in_out_pointers( ssl );
 | 
					    ssl_reset_in_out_pointers( ssl );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if( ( ret = ssl_handshake_init( ssl ) ) != 0 )
 | 
					    if( ( ret = ssl_handshake_init( ssl ) ) != 0 )
 | 
				
			||||||
        return( ret );
 | 
					        goto error;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return( 0 );
 | 
					    return( 0 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					error:
 | 
				
			||||||
 | 
					    mbedtls_free( ssl->in_buf );
 | 
				
			||||||
 | 
					    mbedtls_free( ssl->out_buf );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ssl->conf = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ssl->in_buf = NULL;
 | 
				
			||||||
 | 
					    ssl->out_buf = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ssl->in_hdr = NULL;
 | 
				
			||||||
 | 
					    ssl->in_ctr = NULL;
 | 
				
			||||||
 | 
					    ssl->in_len = NULL;
 | 
				
			||||||
 | 
					    ssl->in_iv = NULL;
 | 
				
			||||||
 | 
					    ssl->in_msg = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ssl->out_hdr = NULL;
 | 
				
			||||||
 | 
					    ssl->out_ctr = NULL;
 | 
				
			||||||
 | 
					    ssl->out_len = NULL;
 | 
				
			||||||
 | 
					    ssl->out_iv = NULL;
 | 
				
			||||||
 | 
					    ssl->out_msg = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return( ret );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user