chunk: Correctly parse Base64 text where four = follow in a row

That's not correct Base64 but invalid data could trigger this. Since
outlen would get reduced four times, but is only ever increased three
times per iteration, this could result in an integer underflow and then
a potential buffer overflow.
This commit is contained in:
Tobias Brunner
2017-05-23 18:29:12 +02:00
parent f5aef3a020
commit aed77b0961
+1 -1
View File
@@ -643,7 +643,7 @@ chunk_t chunk_from_base64(chunk_t base64, char *buf)
outlen += 3;
for (j = 0; j < 4; j++)
{
if (*pos == '=')
if (*pos == '=' && outlen > 0)
{
outlen--;
}