mirror of
https://github.com/php/php-src.git
synced 2025-08-19 17:04:47 +02:00
Fixed bug #51250 (iconv_mime_decode() does not ignore malformed Q-encoded words)
This commit is contained in:
parent
a45631d966
commit
19a0263e65
2 changed files with 32 additions and 3 deletions
|
@ -1762,10 +1762,10 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st
|
|||
if ((mode & PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR)) {
|
||||
/* pass the entire chunk through the converter */
|
||||
err = _php_iconv_appendl(pretval, encoded_word, (size_t)(p1 - encoded_word), cd_pl);
|
||||
if (err != PHP_ICONV_ERR_SUCCESS) {
|
||||
goto out;
|
||||
}
|
||||
encoded_word = NULL;
|
||||
if (err != PHP_ICONV_ERR_SUCCESS) {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
goto out;
|
||||
}
|
||||
|
|
29
ext/iconv/tests/bug51250.phpt
Normal file
29
ext/iconv/tests/bug51250.phpt
Normal file
|
@ -0,0 +1,29 @@
|
|||
--TEST--
|
||||
Bug #51250 (iconv_mime_decode() does not ignore malformed Q-encoded words)
|
||||
--SKIPIF--
|
||||
<?php extension_loaded('iconv') or die('skip iconv extension is not available'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
$m = ICONV_MIME_DECODE_CONTINUE_ON_ERROR;
|
||||
|
||||
var_dump(iconv_mime_decode("Legal encoded-word: =?utf-8?B?Kg==?= .", $m));
|
||||
var_dump(iconv_mime_decode("Legal encoded-word: =?utf-8?Q?*?= .", $m));
|
||||
var_dump(iconv_mime_decode("Illegal encoded-word: =?utf-8?B?".chr(0xA1)."?= .", $m));
|
||||
var_dump(iconv_mime_decode("Illegal encoded-word: =?utf-8?Q?".chr(0xA1)."?= .", $m));
|
||||
|
||||
var_dump(iconv_mime_decode("Legal encoded-word: =?utf-8?B?Kg==?= ."));
|
||||
var_dump(iconv_mime_decode("Legal encoded-word: =?utf-8?Q?*?= ."));
|
||||
var_dump(iconv_mime_decode("Illegal encoded-word: =?utf-8?B?".chr(0xA1)."?= ."));
|
||||
var_dump(iconv_mime_decode("Illegal encoded-word: =?utf-8?Q?".chr(0xA1)."?= ."));
|
||||
?>
|
||||
--EXPECTF--
|
||||
string(23) "Legal encoded-word: * ."
|
||||
string(23) "Legal encoded-word: * ."
|
||||
string(24) "Illegal encoded-word: ."
|
||||
string(23) "Illegal encoded-word: ."
|
||||
string(23) "Legal encoded-word: * ."
|
||||
string(23) "Legal encoded-word: * ."
|
||||
string(24) "Illegal encoded-word: ."
|
||||
|
||||
Notice: iconv_mime_decode(): Detected an illegal character in input string in %s on line %d
|
||||
bool(false)
|
Loading…
Add table
Add a link
Reference in a new issue