Verify TLS MAC even if padding is invalid to prevent timing attacks

This commit is contained in:
Martin Willi
2011-09-28 17:16:09 +02:00
parent 21ee300d5c
commit b79bb79a66
+4 -6
View File
@@ -154,13 +154,11 @@ METHOD(tls_protection_t, process, status_t,
}
padding_length = data.ptr[data.len - 1];
if (padding_length >= data.len)
{
DBG1(DBG_TLS, "invalid TLS record padding");
this->alert->add(this->alert, TLS_FATAL, TLS_BAD_RECORD_MAC);
return NEED_MORE;
if (padding_length < data.len)
{ /* remove padding if it looks valid. Continue with no padding, try
* to prevent timing attacks. */
data.len -= padding_length + 1;
}
data.len -= padding_length + 1;
}
if (this->signer_in)
{