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)) {
|
if ((mode & PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR)) {
|
||||||
/* pass the entire chunk through the converter */
|
/* pass the entire chunk through the converter */
|
||||||
err = _php_iconv_appendl(pretval, encoded_word, (size_t)(p1 - encoded_word), cd_pl);
|
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;
|
encoded_word = NULL;
|
||||||
|
if (err != PHP_ICONV_ERR_SUCCESS) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
goto out;
|
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