Skip to content

Commit 8f949eb

Browse files
cmb69smalyshev
authored andcommitted
Fix #78559: Heap buffer overflow in mb_eregi
We backport kkos/oniguruma@d3e4029.
1 parent 8c9c584 commit 8f949eb

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

ext/mbstring/oniguruma/src/regexec.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4196,6 +4196,7 @@ str_lower_case_match(OnigEncoding enc, int case_fold_flag,
41964196
lowlen = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &p, end, lowbuf);
41974197
q = lowbuf;
41984198
while (lowlen > 0) {
4199+
if (t >= tend) return 0;
41994200
if (*t++ != *q++) return 0;
42004201
lowlen--;
42014202
}

ext/mbstring/tests/bug78559.phpt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
--TEST--
2+
Bug #78559 (#78559 Heap buffer overflow in mb_eregi)
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded('mbstring')) die('skip mbstring extension not available');
6+
if (!function_exists('mb_ereg')) die('skip mb_ereg() not available');
7+
?>
8+
--FILE--
9+
<?php
10+
$str = "5b5b5b5b5b5b5b492a5bce946b5c4b5d5c6b5c4b5d5c4b5d1cceb04b5d1cceb07a73717e4b1c52525252525252525252525252525252525252525252525252492a5bce946b5c4b5d5c6b5c4b5d5c4b5d1cceb04b5d1cceb07a73717e4b1c1cceb04b5d1cceb07a73717e4b1c302c36303030ceb07b7bd2a15c305c30663f436f6e74655c5238416711087b363030302c36303030ceb07b7b7b7b7b7b7b363030302c36303030ceb07b7b7b7b7b7b7b4a01";
11+
$str = hex2bin($str);
12+
var_dump(mb_eregi($str, $str));
13+
?>
14+
--EXPECT--
15+
bool(false)

0 commit comments

Comments
 (0)