Make sure no random pointer occur during failed malloc()'s
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index f38802d..681b7c3 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -3318,6 +3318,9 @@
{
ssl->transform_negotiate =
(ssl_transform *) polarssl_malloc( sizeof(ssl_transform) );
+
+ if( ssl->transform_negotiate != NULL )
+ memset( ssl->transform_negotiate, 0, sizeof(ssl_transform) );
}
if( ssl->session_negotiate )
@@ -3326,6 +3329,9 @@
{
ssl->session_negotiate =
(ssl_session *) polarssl_malloc( sizeof(ssl_session) );
+
+ if( ssl->session_negotiate != NULL )
+ memset( ssl->session_negotiate, 0, sizeof(ssl_session) );
}
if( ssl->handshake )
@@ -3334,6 +3340,9 @@
{
ssl->handshake = (ssl_handshake_params *)
polarssl_malloc( sizeof(ssl_handshake_params) );
+
+ if( ssl->handshake != NULL )
+ memset( ssl->handshake, 0, sizeof(ssl_handshake_params) );
}
if( ssl->handshake == NULL ||
@@ -3344,10 +3353,6 @@
return( POLARSSL_ERR_SSL_MALLOC_FAILED );
}
- memset( ssl->handshake, 0, sizeof(ssl_handshake_params) );
- memset( ssl->transform_negotiate, 0, sizeof(ssl_transform) );
- memset( ssl->session_negotiate, 0, sizeof(ssl_session) );
-
#if defined(POLARSSL_SSL_PROTO_SSL3) || defined(POLARSSL_SSL_PROTO_TLS1) || \
defined(POLARSSL_SSL_PROTO_TLS1_1)
md5_starts( &ssl->handshake->fin_md5 );