Fixed bug #55273 (base64_decode() with strict rejects whitespace after pad)

This commit is contained in:
Ilia Alshanetsky 2011-09-12 17:20:24 +00:00
parent 1e4dac2d58
commit 3d3a6a3b96
2 changed files with 33 additions and 0 deletions

View File

@ -153,6 +153,14 @@ PHPAPI unsigned char *php_base64_decode_ex(const unsigned char *str, int length,
while ((ch = *current++) != '\0' && length-- > 0) {
if (ch == base64_pad) {
if (*current != '=' && ((i % 4) == 1 || (strict && length > 0))) {
if ((i % 4) != 1) {
while (isspace(*(++current))) {
continue;
}
if (*current == '\0') {
continue;
}
}
efree(result);
return NULL;
}

View File

@ -0,0 +1,25 @@
--TEST--
Bug #55273 (base64_decode() with strict rejects whitespace after pad)
--FILE--
<?php
function test($s) {
$v = chunk_split(base64_encode($s));
$r = base64_decode($v, True);
var_dump($v, $r);
}
test('PHP');
test('PH');
test('P');
?>
--EXPECT--
string(6) "UEhQ
"
string(3) "PHP"
string(6) "UEg=
"
string(2) "PH"
string(6) "UA==
"
string(1) "P"