Skip to content

Commit 9a7c09c

Browse files
committed
intl: Fix leak in umsg_format_helper()
Closes GH-20756.
1 parent f89a350 commit 9a7c09c

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,9 +14,18 @@ $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
--EXPECTF--
1824
Warning: MessageFormatter::format(): Invalid UTF-8 data in argument key: '' in %s on line %d
1925
bool(false)
2026

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

0 commit comments

Comments
 (0)