tls: Check all bytes of the padding if they equal the padding length

This commit is contained in:
Martin Willi
2014-10-15 14:21:01 +02:00
parent fdeda63df0
commit c0bf721357
2 changed files with 16 additions and 0 deletions
+8
View File
@@ -106,6 +106,7 @@ METHOD(tls_aead_t, decrypt, bool,
chunk_t assoc, mac, iv;
u_int8_t bs, padlen;
sigheader_t hdr;
size_t i;
iv.len = this->crypter->get_iv_size(this->crypter);
if (data->len < iv.len)
@@ -126,6 +127,13 @@ METHOD(tls_aead_t, decrypt, bool,
padlen = data->ptr[data->len - 1];
if (padlen < data->len)
{ /* If padding looks valid, remove it */
for (i = data->len - padlen - 1; i < data->len - 1; i++)
{
if (data->ptr[i] != padlen)
{
return FALSE;
}
}
data->len -= padlen + 1;
}
+8
View File
@@ -100,6 +100,7 @@ METHOD(tls_aead_t, decrypt, bool,
chunk_t assoc, mac, iv;
u_int8_t bs, padlen;
sigheader_t hdr;
size_t i;
bs = this->crypter->get_block_size(this->crypter);
if (data->len < bs || data->len < this->iv.len || data->len % bs)
@@ -116,6 +117,13 @@ METHOD(tls_aead_t, decrypt, bool,
padlen = data->ptr[data->len - 1];
if (padlen < data->len)
{ /* If padding looks valid, remove it */
for (i = data->len - padlen - 1; i < data->len - 1; i++)
{
if (data->ptr[i] != padlen)
{
return FALSE;
}
}
data->len -= padlen + 1;
}