mirror of
https://github.com/strongswan/strongswan.git
synced 2025-10-08 00:02:03 -04:00
tls-server: Fix invalid signature algorithm and supported groups parsing
The extension's content length field was wrongly added to the content data. Fixes: 06109c4717 ("Implemented "signature algorithm" hello extension")
This commit is contained in:
parent
3767a4a655
commit
0dfe1590b6
@ -357,10 +357,28 @@ static status_t process_client_hello(private_tls_server_t *this,
|
|||||||
switch (extension_type)
|
switch (extension_type)
|
||||||
{
|
{
|
||||||
case TLS_EXT_SIGNATURE_ALGORITHMS:
|
case TLS_EXT_SIGNATURE_ALGORITHMS:
|
||||||
|
if (!extension->read_data16(extension, &extension_data))
|
||||||
|
{
|
||||||
|
DBG1(DBG_TLS, "invalid %N extension",
|
||||||
|
tls_extension_names, extension_type);
|
||||||
|
this->alert->add(this->alert, TLS_FATAL, TLS_DECODE_ERROR);
|
||||||
|
extensions->destroy(extensions);
|
||||||
|
extension->destroy(extension);
|
||||||
|
return NEED_MORE;
|
||||||
|
}
|
||||||
chunk_free(&this->hashsig);
|
chunk_free(&this->hashsig);
|
||||||
this->hashsig = chunk_clone(extension_data);
|
this->hashsig = chunk_clone(extension_data);
|
||||||
break;
|
break;
|
||||||
case TLS_EXT_SUPPORTED_GROUPS:
|
case TLS_EXT_SUPPORTED_GROUPS:
|
||||||
|
if (!extension->read_data16(extension, &extension_data))
|
||||||
|
{
|
||||||
|
DBG1(DBG_TLS, "invalid %N extension",
|
||||||
|
tls_extension_names, extension_type);
|
||||||
|
this->alert->add(this->alert, TLS_FATAL, TLS_DECODE_ERROR);
|
||||||
|
extensions->destroy(extensions);
|
||||||
|
extension->destroy(extension);
|
||||||
|
return NEED_MORE;
|
||||||
|
}
|
||||||
chunk_free(&this->curves);
|
chunk_free(&this->curves);
|
||||||
this->curves_received = TRUE;
|
this->curves_received = TRUE;
|
||||||
this->curves = chunk_clone(extension_data);
|
this->curves = chunk_clone(extension_data);
|
||||||
@ -370,8 +388,7 @@ static status_t process_client_hello(private_tls_server_t *this,
|
|||||||
{
|
{
|
||||||
DBG1(DBG_TLS, "invalid %N extension",
|
DBG1(DBG_TLS, "invalid %N extension",
|
||||||
tls_extension_names, extension_type);
|
tls_extension_names, extension_type);
|
||||||
this->alert->add(this->alert, TLS_FATAL,
|
this->alert->add(this->alert, TLS_FATAL, TLS_DECODE_ERROR);
|
||||||
TLS_DECODE_ERROR);
|
|
||||||
extensions->destroy(extensions);
|
extensions->destroy(extensions);
|
||||||
extension->destroy(extension);
|
extension->destroy(extension);
|
||||||
return NEED_MORE;
|
return NEED_MORE;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user