felipe Mon Oct 6 14:33:35 2008 UTC Added files: (Branch: PHP_5_3) /php-src/ext/interbase/tests bug45373.phpt
Modified files: /php-src/ext/interbase ibase_query.c Log: - MFH: Fixed bug #45373 (php crash on query with errors in params) http://cvs.php.net/viewvc.cgi/php-src/ext/interbase/ibase_query.c?r1=1.23.2.1.2.10.2.5&r2=1.23.2.1.2.10.2.6&diff_format=u Index: php-src/ext/interbase/ibase_query.c diff -u php-src/ext/interbase/ibase_query.c:1.23.2.1.2.10.2.5 php-src/ext/interbase/ibase_query.c:1.23.2.1.2.10.2.6 --- php-src/ext/interbase/ibase_query.c:1.23.2.1.2.10.2.5 Mon Dec 31 07:17:09 2007 +++ php-src/ext/interbase/ibase_query.c Mon Oct 6 14:33:34 2008 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ibase_query.c,v 1.23.2.1.2.10.2.5 2007/12/31 07:17:09 sebastian Exp $ */ +/* $Id: ibase_query.c,v 1.23.2.1.2.10.2.6 2008/10/06 14:33:34 felipe Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -1862,16 +1862,17 @@ 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((expected_n + 1) * sizeof(zval **), use_heap); - if (FAILURE == zend_get_parameters_array_ex(ZEND_NUM_ARGS(), args)) { - break; - } + if (FAILURE == zend_get_parameters_array_ex((expected_n + 1), args)) { + break; } /* Have we used this cursor before and it's still open (exec proc has no cursor) ? */ http://cvs.php.net/viewvc.cgi/php-src/ext/interbase/tests/bug45373.phpt?view=markup&rev=1.1 Index: php-src/ext/interbase/tests/bug45373.phpt +++ php-src/ext/interbase/tests/bug45373.phpt --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) -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php