mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Merge branch 'PHP-8.4'
This commit is contained in:
@@ -376,6 +376,9 @@ static int php_sqlite_collation_callback(void *context, int string1_len, const v
|
||||
|
||||
zend_call_known_fcc(&collation->callback, &retval, /* argc */ 2, zargs, /* named_params */ NULL);
|
||||
|
||||
zval_ptr_dtor(&zargs[0]);
|
||||
zval_ptr_dtor(&zargs[1]);
|
||||
|
||||
if (!Z_ISUNDEF(retval)) {
|
||||
if (Z_TYPE(retval) != IS_LONG) {
|
||||
zend_string *func_name = get_active_function_or_method_name();
|
||||
@@ -392,9 +395,6 @@ static int php_sqlite_collation_callback(void *context, int string1_len, const v
|
||||
}
|
||||
}
|
||||
|
||||
zval_ptr_dtor(&zargs[0]);
|
||||
zval_ptr_dtor(&zargs[1]);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
--TEST--
|
||||
Pdo\Sqlite::createCollation() memory leaks on wrong callback return type
|
||||
--EXTENSIONS--
|
||||
pdo_sqlite
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
$db = new Pdo\Sqlite('sqlite::memory:');
|
||||
|
||||
$db->exec("CREATE TABLE test (c string)");
|
||||
$db->exec("INSERT INTO test VALUES('youwontseeme')");
|
||||
$db->exec("INSERT INTO test VALUES('neither')");
|
||||
$db->createCollation('NAT', function($a, $b): string { return $a . $b; });
|
||||
|
||||
try {
|
||||
$db->query("SELECT c FROM test ORDER BY c COLLATE NAT");
|
||||
} catch (\TypeError $e) {
|
||||
echo $e->getMessage(), PHP_EOL;
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
PDO::query(): Return value of the callback must be of type int, string returned
|
||||
Reference in New Issue
Block a user