From b15b851d6d741b409d038f38df6b23875aa56bb3 Mon Sep 17 00:00:00 2001 From: Paul Bakker Date: Fri, 13 Jan 2012 13:44:06 +0000 Subject: [PATCH] - Check for failed malloc() in ssl_set_hostname() and x509_get_entries() (Closes ticket #47, found by Hugo Leisink) --- ChangeLog | 5 +++++ include/polarssl/ssl.h | 2 +- library/ssl_tls.c | 3 +++ library/x509parse.c | 4 ++++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 49e48491e..51e9f9fca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ PolarSSL ChangeLog += Version Trunk +Bugfix + * Check for failed malloc() in ssl_set_hostname() and x509_get_entries() + (Closes ticket #47, found by Hugo Leisink) + = Version 1.1.0 released on 2011-12-22 Features * Added ssl_session_reset() to allow better multi-connection pools of diff --git a/include/polarssl/ssl.h b/include/polarssl/ssl.h index c897a1e3e..74c5d2df7 100644 --- a/include/polarssl/ssl.h +++ b/include/polarssl/ssl.h @@ -562,7 +562,7 @@ int ssl_set_dh_param_ctx( ssl_context *ssl, dhm_context *dhm_ctx ); * \param ssl SSL context * \param hostname the server hostname * - * \return 0 if successful + * \return 0 if successful or POLARSSL_ERR_SSL_MALLOC_FAILED */ int ssl_set_hostname( ssl_context *ssl, const char *hostname ); diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 545317ab8..44e972cf9 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -1913,6 +1913,9 @@ int ssl_set_hostname( ssl_context *ssl, const char *hostname ) ssl->hostname_len = strlen( hostname ); ssl->hostname = (unsigned char *) malloc( ssl->hostname_len + 1 ); + if( ssl->hostname == NULL ) + return( POLARSSL_ERR_SSL_MALLOC_FAILED ); + memcpy( ssl->hostname, (unsigned char *) hostname, ssl->hostname_len ); diff --git a/library/x509parse.c b/library/x509parse.c index f561754eb..ec4fffc93 100644 --- a/library/x509parse.c +++ b/library/x509parse.c @@ -968,6 +968,10 @@ static int x509_get_entries( unsigned char **p, if ( *p < end ) { cur_entry->next = malloc( sizeof( x509_crl_entry ) ); + + if( cur_entry->next == NULL ) + return( POLARSSL_ERR_X509_MALLOC_FAILED ); + cur_entry = cur_entry->next; memset( cur_entry, 0, sizeof( x509_crl_entry ) ); }