mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
ext/pgsql fixing further calls with flexible arguments number.
continuation of GH-17161 close GH-17165
This commit is contained in:
2
NEWS
2
NEWS
@@ -24,6 +24,8 @@ PHP NEWS
|
|||||||
- PgSql:
|
- PgSql:
|
||||||
. Fixed bug GH-17158 (pg_fetch_result Shows Incorrect ArgumentCountError
|
. Fixed bug GH-17158 (pg_fetch_result Shows Incorrect ArgumentCountError
|
||||||
Message when Called With 1 Argument). (nielsdos)
|
Message when Called With 1 Argument). (nielsdos)
|
||||||
|
. Fixed further ArgumentCountError for calls with flexible
|
||||||
|
number of arguments. (David Carlier)
|
||||||
|
|
||||||
- Phar:
|
- Phar:
|
||||||
. Fixed bug GH-17137 (Segmentation fault ext/phar/phar.c). (nielsdos)
|
. Fixed bug GH-17137 (Segmentation fault ext/phar/phar.c). (nielsdos)
|
||||||
|
|||||||
@@ -984,12 +984,15 @@ PHP_FUNCTION(pg_query)
|
|||||||
}
|
}
|
||||||
link = FETCH_DEFAULT_LINK();
|
link = FETCH_DEFAULT_LINK();
|
||||||
CHECK_DEFAULT_LINK(link);
|
CHECK_DEFAULT_LINK(link);
|
||||||
} else {
|
} else if (ZEND_NUM_ARGS() == 2) {
|
||||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "Os", &pgsql_link, pgsql_link_ce, &query, &query_len) == FAILURE) {
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "Os", &pgsql_link, pgsql_link_ce, &query, &query_len) == FAILURE) {
|
||||||
RETURN_THROWS();
|
RETURN_THROWS();
|
||||||
}
|
}
|
||||||
link = Z_PGSQL_LINK_P(pgsql_link);
|
link = Z_PGSQL_LINK_P(pgsql_link);
|
||||||
CHECK_PGSQL_LINK(link);
|
CHECK_PGSQL_LINK(link);
|
||||||
|
} else {
|
||||||
|
zend_wrong_parameters_count_error(1, 2);
|
||||||
|
RETURN_THROWS();
|
||||||
}
|
}
|
||||||
|
|
||||||
pgsql = link->conn;
|
pgsql = link->conn;
|
||||||
@@ -1078,12 +1081,15 @@ PHP_FUNCTION(pg_query_params)
|
|||||||
}
|
}
|
||||||
link = FETCH_DEFAULT_LINK();
|
link = FETCH_DEFAULT_LINK();
|
||||||
CHECK_DEFAULT_LINK(link);
|
CHECK_DEFAULT_LINK(link);
|
||||||
} else {
|
} else if (ZEND_NUM_ARGS() == 3) {
|
||||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "Osa", &pgsql_link, pgsql_link_ce, &query, &query_len, &pv_param_arr) == FAILURE) {
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "Osa", &pgsql_link, pgsql_link_ce, &query, &query_len, &pv_param_arr) == FAILURE) {
|
||||||
RETURN_THROWS();
|
RETURN_THROWS();
|
||||||
}
|
}
|
||||||
link = Z_PGSQL_LINK_P(pgsql_link);
|
link = Z_PGSQL_LINK_P(pgsql_link);
|
||||||
CHECK_PGSQL_LINK(link);
|
CHECK_PGSQL_LINK(link);
|
||||||
|
} else {
|
||||||
|
zend_wrong_parameters_count_error(2, 3);
|
||||||
|
RETURN_THROWS();
|
||||||
}
|
}
|
||||||
|
|
||||||
pgsql = link->conn;
|
pgsql = link->conn;
|
||||||
@@ -1183,12 +1189,15 @@ PHP_FUNCTION(pg_prepare)
|
|||||||
}
|
}
|
||||||
link = FETCH_DEFAULT_LINK();
|
link = FETCH_DEFAULT_LINK();
|
||||||
CHECK_DEFAULT_LINK(link);
|
CHECK_DEFAULT_LINK(link);
|
||||||
} else {
|
} else if (ZEND_NUM_ARGS() == 3) {
|
||||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "Oss", &pgsql_link, pgsql_link_ce, &stmtname, &stmtname_len, &query, &query_len) == FAILURE) {
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "Oss", &pgsql_link, pgsql_link_ce, &stmtname, &stmtname_len, &query, &query_len) == FAILURE) {
|
||||||
RETURN_THROWS();
|
RETURN_THROWS();
|
||||||
}
|
}
|
||||||
link = Z_PGSQL_LINK_P(pgsql_link);
|
link = Z_PGSQL_LINK_P(pgsql_link);
|
||||||
CHECK_PGSQL_LINK(link);
|
CHECK_PGSQL_LINK(link);
|
||||||
|
} else {
|
||||||
|
zend_wrong_parameters_count_error(2, 3);
|
||||||
|
RETURN_THROWS();
|
||||||
}
|
}
|
||||||
|
|
||||||
pgsql = link->conn;
|
pgsql = link->conn;
|
||||||
@@ -1264,12 +1273,15 @@ PHP_FUNCTION(pg_execute)
|
|||||||
}
|
}
|
||||||
link = FETCH_DEFAULT_LINK();
|
link = FETCH_DEFAULT_LINK();
|
||||||
CHECK_DEFAULT_LINK(link);
|
CHECK_DEFAULT_LINK(link);
|
||||||
} else {
|
} else if (ZEND_NUM_ARGS() == 3) {
|
||||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "Osa", &pgsql_link, pgsql_link_ce, &stmtname, &stmtname_len, &pv_param_arr) == FAILURE) {
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "Osa", &pgsql_link, pgsql_link_ce, &stmtname, &stmtname_len, &pv_param_arr) == FAILURE) {
|
||||||
RETURN_THROWS();
|
RETURN_THROWS();
|
||||||
}
|
}
|
||||||
link = Z_PGSQL_LINK_P(pgsql_link);
|
link = Z_PGSQL_LINK_P(pgsql_link);
|
||||||
CHECK_PGSQL_LINK(link);
|
CHECK_PGSQL_LINK(link);
|
||||||
|
} else {
|
||||||
|
zend_wrong_parameters_count_error(2, 3);
|
||||||
|
RETURN_THROWS();
|
||||||
}
|
}
|
||||||
|
|
||||||
pgsql = link->conn;
|
pgsql = link->conn;
|
||||||
@@ -2024,7 +2036,7 @@ static void php_pgsql_data_info(INTERNAL_FUNCTION_PARAMETERS, int entry_type, bo
|
|||||||
Z_PARAM_OBJECT_OF_CLASS(result, pgsql_result_ce)
|
Z_PARAM_OBJECT_OF_CLASS(result, pgsql_result_ce)
|
||||||
Z_PARAM_STR_OR_LONG(field_name, field_offset)
|
Z_PARAM_STR_OR_LONG(field_name, field_offset)
|
||||||
ZEND_PARSE_PARAMETERS_END();
|
ZEND_PARSE_PARAMETERS_END();
|
||||||
} else {
|
} else if (ZEND_NUM_ARGS() == 3) {
|
||||||
ZEND_PARSE_PARAMETERS_START(3, 3)
|
ZEND_PARSE_PARAMETERS_START(3, 3)
|
||||||
Z_PARAM_OBJECT_OF_CLASS(result, pgsql_result_ce)
|
Z_PARAM_OBJECT_OF_CLASS(result, pgsql_result_ce)
|
||||||
if (nullable_row) {
|
if (nullable_row) {
|
||||||
@@ -2034,6 +2046,9 @@ static void php_pgsql_data_info(INTERNAL_FUNCTION_PARAMETERS, int entry_type, bo
|
|||||||
}
|
}
|
||||||
Z_PARAM_STR_OR_LONG(field_name, field_offset)
|
Z_PARAM_STR_OR_LONG(field_name, field_offset)
|
||||||
ZEND_PARSE_PARAMETERS_END();
|
ZEND_PARSE_PARAMETERS_END();
|
||||||
|
} else {
|
||||||
|
zend_wrong_parameters_count_error(2, 3);
|
||||||
|
RETURN_THROWS();
|
||||||
}
|
}
|
||||||
|
|
||||||
pg_result = Z_PGSQL_RESULT_P(result);
|
pg_result = Z_PGSQL_RESULT_P(result);
|
||||||
@@ -2849,12 +2864,15 @@ PHP_FUNCTION(pg_set_error_verbosity)
|
|||||||
}
|
}
|
||||||
link = FETCH_DEFAULT_LINK();
|
link = FETCH_DEFAULT_LINK();
|
||||||
CHECK_DEFAULT_LINK(link);
|
CHECK_DEFAULT_LINK(link);
|
||||||
} else {
|
} else if (ZEND_NUM_ARGS() == 2) {
|
||||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "Ol", &pgsql_link, pgsql_link_ce, &verbosity) == FAILURE) {
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "Ol", &pgsql_link, pgsql_link_ce, &verbosity) == FAILURE) {
|
||||||
RETURN_THROWS();
|
RETURN_THROWS();
|
||||||
}
|
}
|
||||||
link = Z_PGSQL_LINK_P(pgsql_link);
|
link = Z_PGSQL_LINK_P(pgsql_link);
|
||||||
CHECK_PGSQL_LINK(link);
|
CHECK_PGSQL_LINK(link);
|
||||||
|
} else {
|
||||||
|
zend_wrong_parameters_count_error(1, 2);
|
||||||
|
RETURN_THROWS();
|
||||||
}
|
}
|
||||||
|
|
||||||
pgsql = link->conn;
|
pgsql = link->conn;
|
||||||
@@ -2907,12 +2925,15 @@ PHP_FUNCTION(pg_set_client_encoding)
|
|||||||
}
|
}
|
||||||
link = FETCH_DEFAULT_LINK();
|
link = FETCH_DEFAULT_LINK();
|
||||||
CHECK_DEFAULT_LINK(link);
|
CHECK_DEFAULT_LINK(link);
|
||||||
} else {
|
} else if (ZEND_NUM_ARGS() == 2) {
|
||||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "Os", &pgsql_link, pgsql_link_ce, &encoding, &encoding_len) == FAILURE) {
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "Os", &pgsql_link, pgsql_link_ce, &encoding, &encoding_len) == FAILURE) {
|
||||||
RETURN_THROWS();
|
RETURN_THROWS();
|
||||||
}
|
}
|
||||||
link = Z_PGSQL_LINK_P(pgsql_link);
|
link = Z_PGSQL_LINK_P(pgsql_link);
|
||||||
CHECK_PGSQL_LINK(link);
|
CHECK_PGSQL_LINK(link);
|
||||||
|
} else {
|
||||||
|
zend_wrong_parameters_count_error(1, 2);
|
||||||
|
RETURN_THROWS();
|
||||||
}
|
}
|
||||||
|
|
||||||
pgsql = link->conn;
|
pgsql = link->conn;
|
||||||
@@ -2996,12 +3017,15 @@ PHP_FUNCTION(pg_put_line)
|
|||||||
}
|
}
|
||||||
link = FETCH_DEFAULT_LINK();
|
link = FETCH_DEFAULT_LINK();
|
||||||
CHECK_DEFAULT_LINK(link);
|
CHECK_DEFAULT_LINK(link);
|
||||||
} else {
|
} else if (ZEND_NUM_ARGS() == 2) {
|
||||||
if (zend_parse_parameters(ZEND_NUM_ARGS(), "Os", &pgsql_link, pgsql_link_ce, &query, &query_len) == FAILURE) {
|
if (zend_parse_parameters(ZEND_NUM_ARGS(), "Os", &pgsql_link, pgsql_link_ce, &query, &query_len) == FAILURE) {
|
||||||
RETURN_THROWS();
|
RETURN_THROWS();
|
||||||
}
|
}
|
||||||
link = Z_PGSQL_LINK_P(pgsql_link);
|
link = Z_PGSQL_LINK_P(pgsql_link);
|
||||||
CHECK_PGSQL_LINK(link);
|
CHECK_PGSQL_LINK(link);
|
||||||
|
} else {
|
||||||
|
zend_wrong_parameters_count_error(1, 2);
|
||||||
|
RETURN_THROWS();
|
||||||
}
|
}
|
||||||
|
|
||||||
pgsql = link->conn;
|
pgsql = link->conn;
|
||||||
|
|||||||
65
ext/pgsql/tests/gh17165.phpt
Normal file
65
ext/pgsql/tests/gh17165.phpt
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
--TEST--
|
||||||
|
Fix pg_query()/pg_query_params()/pg_prepare()/pg_execute()/pg_set_error_verbosity()/pg_set_client_encoding()/pg_put_line() pg field infos calls ArgumentCountError message.
|
||||||
|
--EXTENSIONS--
|
||||||
|
pgsql
|
||||||
|
--SKIPIF--
|
||||||
|
<?php
|
||||||
|
include("skipif.inc");
|
||||||
|
?>
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
include "config.inc";
|
||||||
|
|
||||||
|
$db = pg_connect($conn_str);
|
||||||
|
try {
|
||||||
|
pg_query("a", "b", "c");
|
||||||
|
} catch (ArgumentCountError $e) {
|
||||||
|
echo $e->getMessage(), PHP_EOL;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
pg_query_params($db, "b", array(), "d");
|
||||||
|
} catch (ArgumentCountError $e) {
|
||||||
|
echo $e->getMessage(), PHP_EOL;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
pg_prepare($db, "a", "b", "c");
|
||||||
|
} catch (ArgumentCountError $e) {
|
||||||
|
echo $e->getMessage(), PHP_EOL;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
pg_set_error_verbosity($db, 0, PHP_INT_MAX);
|
||||||
|
} catch (ArgumentCountError $e) {
|
||||||
|
echo $e->getMessage(), PHP_EOL;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
pg_set_client_encoding($db, "foo", "bar");
|
||||||
|
} catch (ArgumentCountError $e) {
|
||||||
|
echo $e->getMessage(), PHP_EOL;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
pg_put_line($db, "my", "data");
|
||||||
|
} catch (ArgumentCountError $e) {
|
||||||
|
echo $e->getMessage(), PHP_EOL;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
pg_field_is_null($db, false, "myfield", new stdClass());
|
||||||
|
} catch (ArgumentCountError $e) {
|
||||||
|
echo $e->getMessage(), PHP_EOL;
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
--EXPECT--
|
||||||
|
pg_query() expects at most 2 arguments, 3 given
|
||||||
|
pg_query_params() expects at most 3 arguments, 4 given
|
||||||
|
pg_prepare() expects at most 3 arguments, 4 given
|
||||||
|
pg_set_error_verbosity() expects at most 2 arguments, 3 given
|
||||||
|
pg_set_client_encoding() expects at most 2 arguments, 3 given
|
||||||
|
pg_put_line() expects at most 2 arguments, 3 given
|
||||||
|
pg_field_is_null() expects at most 3 arguments, 4 given
|
||||||
Reference in New Issue
Block a user