Set peer CRT length only after successful allocation

This commit is contained in:
Hanno Becker 2019-02-25 10:06:59 +00:00
parent 257ef65d94
commit 9d64b789cf

View file

@ -398,15 +398,15 @@ int mbedtls_ssl_session_copy( mbedtls_ssl_session *dst,
#else /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ #else /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */
if( src->peer_cert_digest != NULL ) if( src->peer_cert_digest != NULL )
{ {
dst->peer_cert_digest_len = src->peer_cert_digest_len;
dst->peer_cert_digest = dst->peer_cert_digest =
mbedtls_calloc( 1, dst->peer_cert_digest_len ); mbedtls_calloc( 1, src->peer_cert_digest_len );
if( dst->peer_cert_digest == NULL ) if( dst->peer_cert_digest == NULL )
return( MBEDTLS_ERR_SSL_ALLOC_FAILED ); return( MBEDTLS_ERR_SSL_ALLOC_FAILED );
memcpy( dst->peer_cert_digest, src->peer_cert_digest, memcpy( dst->peer_cert_digest, src->peer_cert_digest,
src->peer_cert_digest_len ); src->peer_cert_digest_len );
dst->peer_cert_digest_type = src->peer_cert_digest_type; dst->peer_cert_digest_type = src->peer_cert_digest_type;
dst->peer_cert_digest_len = src->peer_cert_digest_len;
} }
#endif /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ #endif /* MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */