diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index e2bc3da122..9c1e53a4c6 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -3220,6 +3220,10 @@ int ssl_set_hostname( ssl_context *ssl, const char *hostname )
         return( POLARSSL_ERR_SSL_BAD_INPUT_DATA );
 
     ssl->hostname_len = strlen( hostname );
+
+    if( ssl->hostname_len + 1 == 0 )
+        return( POLARSSL_ERR_SSL_BAD_INPUT_DATA );
+
     ssl->hostname = (unsigned char *) polarssl_malloc( ssl->hostname_len + 1 );
 
     if( ssl->hostname == NULL )