Skip to content

Commit 10bbd95

Browse files
committed
Merge branch 'PHP-8.3' into PHP-8.4
* PHP-8.3: intl: Fix leak in umsg_format_helper()
2 parents 9cde911 + 9a7c09c commit 10bbd95

File tree

3 files changed

+13
-0
lines changed

3 files changed

+13
-0
lines changed

NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ PHP NEWS
2222
- GD:
2323
. Fixed bug GH-20622 (imagestring/imagestringup overflow). (David Carlier)
2424

25+
- Intl:
26+
. Fix leak in umsg_format_helper(). (ndossche)
27+
2528
- LDAP:
2629
. Fix memory leak in ldap_set_options(). (ndossche)
2730

ext/intl/msgformat/msgformat_helpers.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,7 @@ U_CFUNC void umsg_format_helper(MessageFormatter_object *mfo,
457457
char *message;
458458
spprintf(&message, 0, "Invalid UTF-8 data in string argument: "
459459
"'%s'", ZSTR_VAL(str));
460+
zend_tmp_string_release(tmp_str);
460461
intl_errors_set(&err, err.code, message, 1);
461462
efree(message);
462463
delete text;

ext/intl/tests/msgfmt_format_error4.phpt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,19 @@ $mf = new MessageFormatter('en_US', $fmt);
1414
var_dump($mf->format(array("foo" => 7, "\x80" => "bar")));
1515

1616
var_dump($mf->format(array("foo" => "\x80")));
17+
18+
var_dump($mf->format(array("foo" => new class {
19+
function __toString(): string {
20+
return str_repeat("\x80", random_int(1, 1));
21+
}
22+
})));
1723
?>
1824
--EXPECTF--
1925
Warning: MessageFormatter::format(): Invalid UTF-8 data in argument key: '€' in %s on line %d
2026
bool(false)
2127

2228
Warning: MessageFormatter::format(): Invalid UTF-8 data in string argument: '€' in %s on line %d
2329
bool(false)
30+
31+
Warning: MessageFormatter::format(): Invalid UTF-8 data in string argument: '€' in %s on line %d
32+
bool(false)

0 commit comments

Comments
 (0)