Skip to content

Commit ed8b901

Browse files
committed
jit: fixed "Uninitialized string offset" warning being emitted at the same time as invalid offset Error
1 parent 6a914cb commit ed8b901

File tree

3 files changed

+27
-0
lines changed

3 files changed

+27
-0
lines changed

NEWS

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ PHP NEWS
2929
. Fixed bug GH-12791 (Possible dereference of NULL in MySQLnd debug code).
3030
(nielsdos)
3131

32+
- Opcache:
33+
. Fixed JIT bug (Function JIT emits "Uninitialized string offset" warning
34+
at the same time as invalid offset Error). (Girgias)
35+
3236
- OpenSSL:
3337
. Fixed bug #50713 (openssl_pkcs7_verify() may ignore untrusted CAs).
3438
(Jakub Zelenka)

ext/opcache/jit/zend_jit_helpers.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1106,6 +1106,9 @@ static zend_string* ZEND_FASTCALL zend_jit_fetch_dim_str_r_helper(zend_string *s
11061106
} else {
11071107
offset = Z_LVAL_P(dim);
11081108
}
1109+
if (UNEXPECTED(EG(exception) != NULL)) {
1110+
return ZSTR_EMPTY_ALLOC();
1111+
}
11091112
return zend_jit_fetch_dim_str_offset(str, offset);
11101113
}
11111114

ext/opcache/tests/jit/gh12723-A.phpt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
--TEST--
2+
GH-12723: Function JIT emits "Uninitialized string offset" warning at the same time as invalid offset Error
3+
--INI--
4+
opcache.enable=1
5+
opcache.enable_cli=1
6+
--FILE--
7+
<?php
8+
9+
$container = '';
10+
$dimension = [];
11+
12+
try {
13+
var_dump($container[$dimension]);
14+
} catch (\Throwable $e) {
15+
echo $e->getMessage(), "\n";
16+
}
17+
18+
?>
19+
--EXPECT--
20+
Cannot access offset of type array on string

0 commit comments

Comments
 (0)