- Fixed bug #50363 (Invalid parsing in convert.quoted-printable-decode filter)

Patch by: slusarz at curecanti dot org
This commit is contained in:
Felipe Pena 2011-05-24 23:49:26 +00:00
parent b26fec954a
commit b2780241d7
2 changed files with 20 additions and 7 deletions

View File

@ -1050,20 +1050,16 @@ static php_conv_err_t php_conv_qprint_decode_convert(php_conv_qprint_decode *ins
}
} /* break is missing intentionally */
case 2: {
unsigned int nbl;
case 2: {
if (icnt <= 0) {
goto out;
}
nbl = (*ps >= 'A' ? *ps - 0x37 : *ps - 0x30);
if (nbl > 15) {
if (!isxdigit((int) *ps)) {
err = PHP_CONV_ERR_INVALID_SEQ;
goto out;
}
next_char = (next_char << 4) | nbl;
next_char = (next_char << 4) | (*ps >= 'A' ? *ps - 0x37 : *ps - 0x30);
scan_stat++;
ps++, icnt--;
if (scan_stat != 3) {

View File

@ -0,0 +1,17 @@
--TEST--
Bug #50363 (Invalid parsing in convert.quoted-printable-decode filter)
--FILE--
<?php
$foo = "Sauvegarder=C3=A9ussi(e) n=C3=A3o N=C3=83O\n";
$foo .= "Sauvegarder=c3=a9ussi(e) n=c3=a3o N=c3=83O\n"; // Does not work!
$b = fopen('php://temp', 'w+');
stream_filter_append($b, 'convert.quoted-printable-decode', STREAM_FILTER_WRITE);
fwrite($b, $foo);
rewind($b);
fpassthru($b);
?>
--EXPECTF--
Sauvegarderéussi(e) não NÃO
Sauvegarderéussi(e) não NÃO