Skip to content

Commit d60833b

Browse files
committed
Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1: mb_encode_mimeheader does not crash if provided encoding has no MIME name set
2 parents 5087931 + 7c1ee5a commit d60833b

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

ext/mbstring/mbstring.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3012,6 +3012,9 @@ PHP_FUNCTION(mb_encode_mimeheader)
30123012
charset = php_mb_get_encoding(charset_name, 2);
30133013
if (!charset) {
30143014
RETURN_THROWS();
3015+
} else if (charset->mime_name == NULL || charset->mime_name[0] == '\0') {
3016+
zend_argument_value_error(2, "\"%s\" cannot be used for MIME header encoding", ZSTR_VAL(charset_name));
3017+
RETURN_THROWS();
30153018
}
30163019
} else {
30173020
const mbfl_language *lang = mbfl_no2language(MBSTRG(language));
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
--TEST--
2+
Test mb_encode_mimeheader() function : text encoding with no MIME name
3+
--EXTENSIONS--
4+
mbstring
5+
--SKIPIF--
6+
<?php
7+
function_exists('mb_encode_mimeheader') or die("skip mb_encode_mimeheader() is not available in this build");
8+
?>
9+
--FILE--
10+
<?php
11+
try {
12+
var_dump(mb_encode_mimeheader("abc", "UTF7-IMAP", "Q"));
13+
} catch (\ValueError $e) {
14+
echo $e->getMessage() . \PHP_EOL;
15+
}
16+
17+
echo "Done\n";
18+
?>
19+
--EXPECT--
20+
mb_encode_mimeheader(): Argument #2 ($charset) "UTF7-IMAP" cannot be used for MIME header encoding
21+
Done

0 commit comments

Comments
 (0)