Merge branch 'PHP-8.4'

* PHP-8.4:
  Fix GH-16397: Segmentation fault when comparing FFI object (#16401)
This commit is contained in:
Niels Dossche 2024-10-14 19:24:23 +02:00
commit 8f1543a76e
No known key found for this signature in database
GPG Key ID: B8A8AD166DF0E2E5
2 changed files with 22 additions and 1 deletions

View File

@ -2938,6 +2938,12 @@ static zend_function *zend_ffi_get_func(zend_object **obj, zend_string *name, co
}
/* }}} */
static int zend_fake_compare_objects(zval *o1, zval *o2)
{
zend_throw_error(zend_ffi_exception_ce, "Cannot compare FFI objects");
return ZEND_UNCOMPARABLE;
}
static zend_never_inline int zend_ffi_disabled(void) /* {{{ */
{
zend_throw_error(zend_ffi_exception_ce, "FFI API is restricted by \"ffi.enable\" configuration directive");
@ -5443,7 +5449,7 @@ ZEND_MINIT_FUNCTION(ffi)
zend_ffi_handlers.has_dimension = zend_fake_has_dimension;
zend_ffi_handlers.unset_dimension = zend_fake_unset_dimension;
zend_ffi_handlers.get_method = zend_ffi_get_func;
zend_ffi_handlers.compare = NULL;
zend_ffi_handlers.compare = zend_fake_compare_objects;
zend_ffi_handlers.cast_object = zend_fake_cast_object;
zend_ffi_handlers.get_debug_info = NULL;
zend_ffi_handlers.get_closure = NULL;

View File

@ -0,0 +1,15 @@
--TEST--
GH-16397 (Segmentation fault when comparing FFI object)
--EXTENSIONS--
ffi
--FILE--
<?php
$ffi = FFI::cdef();
try {
var_dump($ffi != 1);
} catch (FFI\Exception $e) {
echo $e->getMessage(), "\n";
}
?>
--EXPECT--
Cannot compare FFI objects