Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

MFH: Fix #47050 mysqli_poll() modifies improper variables

  • Loading branch information...
commit e4a348d7825dfd4d1af6440be9e33add246ca881 1 parent b6f3208
Johannes Schlüter johannes authored
Showing with 40 additions and 1 deletion.
  1. +1 −0  NEWS
  2. +8 −1 ext/mysqli/mysqli_fe.c
  3. +31 −0 ext/mysqli/tests/bug47050.phpt
1  NEWS
View
@@ -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)
9 ext/mysqli/mysqli_fe.c
View
@@ -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)
31 ext/mysqli/tests/bug47050.phpt
View
@@ -0,0 +1,31 @@
+--TEST--
+Bug #47050 (mysqli_poll() modifies improper variables)
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+require_once('skipifconnectfailure.inc');
+?>
+--FILE--
+<?php
+ include ("connect.inc");
+
+ $link1 = mysqli_connect($host, $user, $passwd, null, $port, $socket);
+ mysqli_select_db($link1, $db);
+
+ $link1->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
Please sign in to comment.
Something went wrong with that request. Please try again.