From e4a348d7825dfd4d1af6440be9e33add246ca881 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Johannes=20Schl=C3=BCter?= Date: Mon, 12 Jan 2009 14:04:32 +0000 Subject: [PATCH] MFH: Fix #47050 mysqli_poll() modifies improper variables --- NEWS | 1 + ext/mysqli/mysqli_fe.c | 9 ++++++++- ext/mysqli/tests/bug47050.phpt | 31 +++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 ext/mysqli/tests/bug47050.phpt diff --git a/NEWS b/NEWS index 1c0df85f48..ad2e107eb3 100644 --- a/NEWS +++ b/NEWS @@ -27,6 +27,7 @@ PHP NEWS - Added ICU support to SQLite3 when using the bundled version. (Scott) - Enabled the salsa hashing functions. (Scott) +- Fixed bug #47050 (mysqli_poll() modifies improper variables). (Johannes) - Fixed bug #46957 (The tokenizer returns deprecated values). (Felipe) - Fixed bug #46944 (UTF-8 characters outside the BMP aren't encoded correctly). (Scott) diff --git a/ext/mysqli/mysqli_fe.c b/ext/mysqli/mysqli_fe.c index 057b5f0915..c4724f4a36 100644 --- a/ext/mysqli/mysqli_fe.c +++ b/ext/mysqli/mysqli_fe.c @@ -42,6 +42,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[] * @@ -114,7 +121,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 -- 2.50.1