Index: ext/iconv/tests/bug51250.phpt =================================================================== --- ext/iconv/tests/bug51250.phpt (revision 0) +++ ext/iconv/tests/bug51250.phpt (revision 0) @@ -0,0 +1,29 @@ +--TEST-- +Bug #51250 (iconv_mime_decode() does not ignore malformed Q-encoded words) +--SKIPIF-- + +--FILE-- + +--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) Index: ext/iconv/iconv.c =================================================================== --- ext/iconv/iconv.c (revision 305885) +++ ext/iconv/iconv.c (working copy) @@ -1698,10 +1698,10 @@ 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); + encoded_word = NULL; if (err != PHP_ICONV_ERR_SUCCESS) { - goto out; + break; } - encoded_word = NULL; } else { goto out; }