From: Felipe Pena Date: Tue, 7 Oct 2008 15:31:48 +0000 (+0000) Subject: - MFH: Fixed bug #46247 (ibase_set_event_handler() is allowing to pass callback witho... X-Git-Tag: php-5.2.7RC1~4 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=afc82532cccdf3709fc544ab53314ec626934736;p=php - MFH: Fixed bug #46247 (ibase_set_event_handler() is allowing to pass callback without event) --- diff --git a/NEWS b/NEWS index d05761ae27..07b1bd60c9 100644 --- a/NEWS +++ b/NEWS @@ -18,6 +18,8 @@ PHP NEWS (Scott) - Fixed a crash on invalid method in ReflectionParameter constructor. (Christian Seiler) +- Fixed bug #46247 (ibase_set_event_handler() is allowing to pass callback + without event). (Felipe) - Fixed bug #46215 (json_encode mutates its parameter and has some class-specific state). (Felipe) - Fixed bug #46206 (pg_query_params/pg_execute convert passed values to diff --git a/ext/interbase/ibase_events.c b/ext/interbase/ibase_events.c index f5d303c2db..e4408142f8 100644 --- a/ext/interbase/ibase_events.c +++ b/ext/interbase/ibase_events.c @@ -268,8 +268,8 @@ PHP_FUNCTION(ibase_set_event_handler) int link_res_id; RESET_ERRMSG; - - /* no more than 15 events */ + + /* Minimum and maximum number of arguments allowed */ if (ZEND_NUM_ARGS() < 2 || ZEND_NUM_ARGS() > 17) { WRONG_PARAM_COUNT; } @@ -280,6 +280,12 @@ PHP_FUNCTION(ibase_set_event_handler) /* get a working link */ if (Z_TYPE_PP(args[0]) != IS_STRING) { + /* resource, callback, event_1 [, ... event_15] + * No more than 15 events + */ + if (ZEND_NUM_ARGS() < 3 || ZEND_NUM_ARGS() > 17) { + WRONG_PARAM_COUNT; + } cb_arg = args[1]; i = 2; @@ -291,8 +297,10 @@ PHP_FUNCTION(ibase_set_event_handler) link_res_id = Z_LVAL_PP(args[0]); } else { - - if (ZEND_NUM_ARGS() > 16) { + /* callback, event_1 [, ... event_15] + * No more than 15 events + */ + if (ZEND_NUM_ARGS() < 2 || ZEND_NUM_ARGS() > 16) { WRONG_PARAM_COUNT; } diff --git a/ext/interbase/tests/bug46247.phpt b/ext/interbase/tests/bug46247.phpt new file mode 100644 index 0000000000..ffd153b5f1 --- /dev/null +++ b/ext/interbase/tests/bug46247.phpt @@ -0,0 +1,36 @@ +--TEST-- +Bug #46247 (ibase_set_event_handler() is allowing to pass callback without event) +--SKIPIF-- + +--FILE-- + +--EXPECTF-- + +Warning: Wrong parameter count for ibase_set_event_handler() in %s on line %d + +Warning: ibase_set_event_handler(): supplied argument is not a valid InterBase link resource in %s on line %d + +Warning: ibase_set_event_handler(): Callback argument foo is not a callable function in %s on line %d + +Warning: ibase_set_event_handler(): Callback argument foo is not a callable function in %s on line %d + +Warning: ibase_set_event_handler(): supplied argument is not a valid InterBase link resource in %s on line %d