summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2019-12-30 16:18:46 +0100
committerChristoph M. Becker <cmbecker69@gmx.de>2019-12-30 17:40:16 +0100
commit55fd97c576f2d0f2a6e964d14b913b7ea2d88caa (patch)
tree2a61f845b93c11cef2135920d483210d456dab67
parente1b57310b1ec15b24e5ead8b63e58f74a0dbc988 (diff)
downloadphp-git-55fd97c576f2d0f2a6e964d14b913b7ea2d88caa.tar.gz
Fix #78790: mysqli_get_client_info() expects exactly 0 parameters, 1 given
Although the `mysqli` parameter is unused, it had been accepted so far, and the documentation even claims that parameter would be required. To not break BC, we allow it again.
-rw-r--r--ext/mysqli/mysqli_api.c12
-rw-r--r--ext/mysqli/mysqli_fe.c6
-rw-r--r--ext/mysqli/tests/bug74737.phpt2
3 files changed, 16 insertions, 4 deletions
diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c
index aac3134a59..206b00dfb6 100644
--- a/ext/mysqli/mysqli_api.c
+++ b/ext/mysqli/mysqli_api.c
@@ -1374,8 +1374,16 @@ PHP_FUNCTION(mysqli_free_result)
Get MySQL client info */
PHP_FUNCTION(mysqli_get_client_info)
{
- if (zend_parse_parameters_none() == FAILURE) {
- return;
+ if (getThis()) {
+ if (zend_parse_parameters_none() == FAILURE) {
+ return;
+ }
+ } else {
+ zval *mysql_link;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "|O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
+ return;
+ }
}
const char * info = mysql_get_client_info();
diff --git a/ext/mysqli/mysqli_fe.c b/ext/mysqli/mysqli_fe.c
index 5badb8b38b..97e92e9438 100644
--- a/ext/mysqli/mysqli_fe.c
+++ b/ext/mysqli/mysqli_fe.c
@@ -74,6 +74,10 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_only_link, 0, 0, 1)
MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
ZEND_END_ARG_INFO()
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_optional_link, 0, 0, 0)
+ MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
+ZEND_END_ARG_INFO()
+
ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_autocommit, 0, 0, 2)
MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
ZEND_ARG_INFO(0, mode)
@@ -445,7 +449,7 @@ const zend_function_entry mysqli_functions[] = {
#ifdef HAVE_MYSQLI_GET_CHARSET
PHP_FE(mysqli_get_charset, arginfo_mysqli_only_link)
#endif
- PHP_FE(mysqli_get_client_info, arginfo_mysqli_no_options)
+ PHP_FE(mysqli_get_client_info, arginfo_mysqli_optional_link)
PHP_FE(mysqli_get_client_version, arginfo_mysqli_no_options)
PHP_FE(mysqli_get_links_stats, arginfo_mysqli_no_options)
PHP_FE(mysqli_get_host_info, arginfo_mysqli_only_link)
diff --git a/ext/mysqli/tests/bug74737.phpt b/ext/mysqli/tests/bug74737.phpt
index e3aca90ea7..d270c198fd 100644
--- a/ext/mysqli/tests/bug74737.phpt
+++ b/ext/mysqli/tests/bug74737.phpt
@@ -13,5 +13,5 @@ echo PHP_EOL;
echo $rf->getNumberOfRequiredParameters();
?>
--EXPECT--
-0
+1
0