diff --git a/include/polarssl/ssl.h b/include/polarssl/ssl.h index e31b77629..7aad9f90a 100644 --- a/include/polarssl/ssl.h +++ b/include/polarssl/ssl.h @@ -121,6 +121,8 @@ #define SSL_LEGACY_ALLOW_RENEGOTIATION 1 #define SSL_LEGACY_BREAK_HANDSHAKE 2 +#define SSL_MAX_HOST_NAME_LEN 255 /*!< Maximum host name defined in RFC 1035 */ + /* * Size of the input / output buffer. * Note: the RFC defines the default size of SSL / TLS messages. If you diff --git a/library/ssl_tls.c b/library/ssl_tls.c index 734bc8f32..bed42869c 100644 --- a/library/ssl_tls.c +++ b/library/ssl_tls.c @@ -3350,6 +3350,9 @@ int ssl_set_hostname( ssl_context *ssl, const char *hostname ) if( ssl->hostname_len + 1 == 0 ) return( POLARSSL_ERR_SSL_BAD_INPUT_DATA ); + if( ssl->hostname_len > SSL_MAX_HOST_NAME_LEN ) + return( POLARSSL_ERR_SSL_BAD_INPUT_DATA ); + ssl->hostname = (unsigned char *) malloc( ssl->hostname_len + 1 ); if( ssl->hostname == NULL )