mirror of
https://github.com/php/php-src.git
synced 2024-12-15 04:45:03 +08:00
- Fixed bug #45373 (php crash on query with errors in params)
This commit is contained in:
parent
00ac4cac45
commit
82eaeb6bfe
@ -1855,16 +1855,17 @@ PHP_FUNCTION(ibase_execute)
|
||||
if (bind_n != expected_n) {
|
||||
php_error_docref(NULL TSRMLS_CC, (bind_n < expected_n) ? E_WARNING : E_NOTICE,
|
||||
"Statement expects %d arguments, %d given", expected_n, bind_n);
|
||||
|
||||
if (bind_n < expected_n) {
|
||||
break;
|
||||
}
|
||||
|
||||
} else if (bind_n > 0) { /* have variables to bind */
|
||||
args = (zval ***) do_alloca(ZEND_NUM_ARGS() * sizeof(zval **), use_heap);
|
||||
}
|
||||
|
||||
/* have variables to bind */
|
||||
args = (zval ***) do_alloca(ZEND_NUM_ARGS() * sizeof(zval **), use_heap);
|
||||
|
||||
if (FAILURE == zend_get_parameters_array_ex(ZEND_NUM_ARGS(), args)) {
|
||||
break;
|
||||
}
|
||||
if (FAILURE == zend_get_parameters_array_ex(ZEND_NUM_ARGS(), args)) {
|
||||
break;
|
||||
}
|
||||
|
||||
/* Have we used this cursor before and it's still open (exec proc has no cursor) ? */
|
||||
|
47
ext/interbase/tests/bug45373.phpt
Normal file
47
ext/interbase/tests/bug45373.phpt
Normal file
@ -0,0 +1,47 @@
|
||||
--TEST--
|
||||
Bug #45373 (php crash on query with errors in params)
|
||||
--SKIPIF--
|
||||
<?php include("skipif.inc"); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
require("interbase.inc");
|
||||
|
||||
$db = ibase_connect($test_base);
|
||||
|
||||
|
||||
$sql = "select * from test1 where i = ? and c = ?";
|
||||
|
||||
$q = ibase_prepare($db, $sql);
|
||||
$r = ibase_execute($q, 1, 'test table not created with isql');
|
||||
var_dump(ibase_fetch_assoc($r));
|
||||
ibase_free_result($r);
|
||||
|
||||
$r = ibase_execute($q, 1, 'test table not created with isql', 1);
|
||||
var_dump(ibase_fetch_assoc($r));
|
||||
ibase_free_result($r);
|
||||
|
||||
$r = ibase_execute($q, 1);
|
||||
var_dump(ibase_fetch_assoc($r));
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
array(2) {
|
||||
["I"]=>
|
||||
int(1)
|
||||
["C"]=>
|
||||
string(32) "test table not created with isql"
|
||||
}
|
||||
|
||||
Notice: ibase_execute(): Statement expects 2 arguments, 3 given in %sbug45373.php on line %d
|
||||
array(2) {
|
||||
["I"]=>
|
||||
int(1)
|
||||
["C"]=>
|
||||
string(32) "test table not created with isql"
|
||||
}
|
||||
|
||||
Warning: ibase_execute(): Statement expects 2 arguments, 1 given in %sbug45373.php on line %d
|
||||
|
||||
Warning: ibase_fetch_assoc(): supplied argument is not a valid Firebird/InterBase result resource in %sbug45373.php on line %d
|
||||
bool(false)
|
Loading…
Reference in New Issue
Block a user