diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2018-11-14 14:55:38 +0100 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2018-11-14 14:55:38 +0100 |
commit | a56cdd0a824d439920548aaeae757cb2341bd4ec (patch) | |
tree | 4ac36623620645f237243948a7f6903b84df10cc /ext/iconv | |
parent | ec2e7a2d480cfe51e5a234354a50bb4c85fae155 (diff) | |
download | php-git-a56cdd0a824d439920548aaeae757cb2341bd4ec.tar.gz |
Fix #77147: Fix for 60494 ignores ICONV_MIME_DECODE_CONTINUE_ON_ERROR
If the `ICONV_MIME_DECODE_CONTINUE_ON_ERROR` flag is set, parsing
should not fail, if there are illegal characters in the headers;
instead we silently ignore these like before.
Diffstat (limited to 'ext/iconv')
-rw-r--r-- | ext/iconv/iconv.c | 6 | ||||
-rw-r--r-- | ext/iconv/tests/bug77147.phpt | 21 |
2 files changed, 26 insertions, 1 deletions
diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c index ef27b20645..f86d0ae031 100644 --- a/ext/iconv/iconv.c +++ b/ext/iconv/iconv.c @@ -1546,7 +1546,11 @@ static php_iconv_err_t _php_iconv_mime_decode(smart_str *pretval, const char *st default: /* first letter of a non-encoded word */ err = _php_iconv_appendc(pretval, *p1, cd_pl); if (err != PHP_ICONV_ERR_SUCCESS) { - goto out; + if (mode & PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR) { + err = PHP_ICONV_ERR_SUCCESS; + } else { + goto out; + } } encoded_word = NULL; if ((mode & PHP_ICONV_MIME_DECODE_STRICT)) { diff --git a/ext/iconv/tests/bug77147.phpt b/ext/iconv/tests/bug77147.phpt new file mode 100644 index 0000000000..839f8972e3 --- /dev/null +++ b/ext/iconv/tests/bug77147.phpt @@ -0,0 +1,21 @@ +--TEST-- +Bug #77147 (Fixing 60494 ignored ICONV_MIME_DECODE_CONTINUE_ON_ERROR) +--SKIPIF-- +<?php +if (!extension_loaded('iconv')) die('skip iconv extension not available'); +?> +--FILE-- +<?php +$string = <<<EOF +Feedback-ID: 014a93e3-1f5e-4df6-b347-6b59f0f746b8:b5891053-55d1-45bc-a0b5-47a7a9b59687:email:epslh1� +EOF; +$headers = iconv_mime_decode_headers($string, ICONV_MIME_DECODE_CONTINUE_ON_ERROR); +var_dump($headers); +?> +===DONE=== +--EXPECT-- +array(1) { + ["Feedback-ID"]=> + string(86) "014a93e3-1f5e-4df6-b347-6b59f0f746b8:b5891053-55d1-45bc-a0b5-47a7a9b59687:email:epslh1" +} +===DONE=== |