Fix handling of long PSK identities
fixes #238
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 80dbe8a..793d241 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -5457,6 +5457,13 @@
if( psk_len > MBEDTLS_PSK_MAX_LEN )
return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA );
+ /* Identity len will be encoded on two bytes */
+ if( ( psk_identity_len >> 16 ) != 0 ||
+ psk_identity_len > MBEDTLS_SSL_MAX_CONTENT_LEN )
+ {
+ return( MBEDTLS_ERR_SSL_BAD_INPUT_DATA );
+ }
+
if( conf->psk != NULL || conf->psk_identity != NULL )
{
mbedtls_free( conf->psk );