Forbid setting max_frag_len > MAX_CONTENT_LEN

This commit is contained in:
Manuel Pégourié-Gonnard 2013-07-17 14:33:38 +02:00
parent 30dc7ef3ad
commit 6b4f237f6a

View file

@ -3119,29 +3119,35 @@ void ssl_set_min_version( ssl_context *ssl, int major, int minor )
int ssl_set_max_frag_len( ssl_context *ssl, unsigned char mfl_code ) int ssl_set_max_frag_len( ssl_context *ssl, unsigned char mfl_code )
{ {
uint16_t max_frag_len;
switch( mfl_code ) switch( mfl_code )
{ {
case SSL_MAX_FRAG_LEN_512: case SSL_MAX_FRAG_LEN_512:
ssl->max_frag_len = 512; max_frag_len = 512;
break; break;
case SSL_MAX_FRAG_LEN_1024: case SSL_MAX_FRAG_LEN_1024:
ssl->max_frag_len = 1024; max_frag_len = 1024;
break; break;
case SSL_MAX_FRAG_LEN_2048: case SSL_MAX_FRAG_LEN_2048:
ssl->max_frag_len = 2048; max_frag_len = 2048;
break; break;
case SSL_MAX_FRAG_LEN_4096: case SSL_MAX_FRAG_LEN_4096:
ssl->max_frag_len = 4096; max_frag_len = 4096;
break; break;
default: default:
return( POLARSSL_ERR_SSL_BAD_INPUT_DATA ); return( POLARSSL_ERR_SSL_BAD_INPUT_DATA );
} }
if( max_frag_len > SSL_MAX_CONTENT_LEN )
return( POLARSSL_ERR_SSL_BAD_INPUT_DATA );
ssl->mfl_code = mfl_code; ssl->mfl_code = mfl_code;
ssl->max_frag_len = max_frag_len;
return( 0 ); return( 0 );
} }