From: Johannes Schlüter Date: Mon, 12 Jan 2009 14:01:47 +0000 (+0000) Subject: Fix #47050 mysqli_poll() modifies improper variables X-Git-Tag: php-5.4.0alpha1~191^2~4551 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9177d73c08033384b2520fe60b2037405e57fe07;p=php Fix #47050 mysqli_poll() modifies improper variables --- diff --git a/ext/mysqli/mysqli_fe.c b/ext/mysqli/mysqli_fe.c index 45c5d599a9..808453bda3 100644 --- a/ext/mysqli/mysqli_fe.c +++ b/ext/mysqli/mysqli_fe.c @@ -44,6 +44,13 @@ ZEND_END_ARG_INFO(); ZEND_BEGIN_ARG_INFO(all_args_force_by_ref, 1) ZEND_END_ARG_INFO(); +ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_poll, 0, 0, 4) + ZEND_ARG_ARRAY_INFO(1, read, 1) + ZEND_ARG_ARRAY_INFO(1, write, 1) + ZEND_ARG_ARRAY_INFO(1, error, 1) + ZEND_ARG_INFO(0, sec) + ZEND_ARG_INFO(0, usec) +ZEND_END_ARG_INFO(); /* {{{ mysqli_functions[] * @@ -116,7 +123,7 @@ const zend_function_entry mysqli_functions[] = { PHP_FE(mysqli_options, NULL) PHP_FE(mysqli_ping, NULL) #if defined(MYSQLI_USE_MYSQLND) - PHP_FE(mysqli_poll, NULL) + PHP_FE(mysqli_poll, arginfo_mysqli_poll) #endif PHP_FE(mysqli_prepare, NULL) PHP_FE(mysqli_report, NULL) diff --git a/ext/mysqli/tests/bug47050.phpt b/ext/mysqli/tests/bug47050.phpt new file mode 100644 index 0000000000..7d936e71d6 --- /dev/null +++ b/ext/mysqli/tests/bug47050.phpt @@ -0,0 +1,31 @@ +--TEST-- +Bug #47050 (mysqli_poll() modifies improper variables) +--SKIPIF-- + +--FILE-- +query("SELECT 'test'", MYSQLI_ASYNC); + $all_links = array($link1); + $links = $errors = $reject = $all_links; + mysqli_poll($links, $errors, $reject, 1); + + echo "links: ", sizeof($links), "\n"; + echo "errors: ", sizeof($errors), "\n"; + echo "reject: ", sizeof($reject), "\n"; + echo "all_links: ", sizeof($all_links), "\n"; + + $link1->close(); +?> +--EXPECT-- +links: 1 +errors: 0 +reject: 0 +all_links: 1