diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2019-12-30 16:18:46 +0100 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2019-12-30 17:40:16 +0100 |
commit | 55fd97c576f2d0f2a6e964d14b913b7ea2d88caa (patch) | |
tree | 2a61f845b93c11cef2135920d483210d456dab67 | |
parent | e1b57310b1ec15b24e5ead8b63e58f74a0dbc988 (diff) | |
download | php-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.c | 12 | ||||
-rw-r--r-- | ext/mysqli/mysqli_fe.c | 6 | ||||
-rw-r--r-- | ext/mysqli/tests/bug74737.phpt | 2 |
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 |