From: Ilia Alshanetsky Date: Wed, 21 Jan 2009 15:38:37 +0000 (+0000) Subject: Fixed bug #47174 (base64_decode() interprets pad char in mid string as X-Git-Tag: php-5.3.0beta1~70 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bd9ad75f416825f9b670dd30bd7f861a2c13bf7d;p=php Fixed bug #47174 (base64_decode() interprets pad char in mid string as terminator) --- diff --git a/ext/standard/base64.c b/ext/standard/base64.c index 62083b3476..9b835409d1 100644 --- a/ext/standard/base64.c +++ b/ext/standard/base64.c @@ -151,7 +151,14 @@ PHPAPI unsigned char *php_base64_decode_ex(const unsigned char *str, int length, /* run through the whole string, converting as we go */ while ((ch = *current++) != '\0' && length-- > 0) { - if (ch == base64_pad) break; + if (ch == base64_pad) { + if (*current != '=' && (i % 4) == 1) { + efree(result); + return NULL; + } + i++; + continue; + } ch = base64_reverse_table[ch]; if ((!strict && ch < 0) || ch == -1) { /* a space or some other separator character, we simply skip over */