Enforce the right number of params for mysql_fetch_*() functions, related to bug 9839.

This commit is contained in:
Matt McClanahan 2001-04-26 08:22:12 +00:00
parent 25ad8d38f3
commit cb9db291c7

View File

@ -1467,7 +1467,7 @@ PHP_FUNCTION(mysql_num_fields)
/* }}} */ /* }}} */
static void php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type) static void php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type, int expected_args)
{ {
zval **result, **arg2; zval **result, **arg2;
MYSQL_RES *mysql_result; MYSQL_RES *mysql_result;
@ -1478,6 +1478,10 @@ static void php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type)
int i; int i;
PLS_FETCH(); PLS_FETCH();
if (ZEND_NUM_ARGS() > expected_args) {
WRONG_PARAM_COUNT;
}
switch (ZEND_NUM_ARGS()) { switch (ZEND_NUM_ARGS()) {
case 1: case 1:
if (zend_get_parameters_ex(1, &result)==FAILURE) { if (zend_get_parameters_ex(1, &result)==FAILURE) {
@ -1551,7 +1555,7 @@ static void php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int result_type)
Get a result row as an enumerated array */ Get a result row as an enumerated array */
PHP_FUNCTION(mysql_fetch_row) PHP_FUNCTION(mysql_fetch_row)
{ {
php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, MYSQL_NUM); php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, MYSQL_NUM, 1);
} }
/* }}} */ /* }}} */
@ -1560,7 +1564,7 @@ PHP_FUNCTION(mysql_fetch_row)
Fetch a result row as an object */ Fetch a result row as an object */
PHP_FUNCTION(mysql_fetch_object) PHP_FUNCTION(mysql_fetch_object)
{ {
php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, MYSQL_ASSOC); php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, MYSQL_ASSOC, 2);
if (return_value->type==IS_ARRAY) { if (return_value->type==IS_ARRAY) {
return_value->type=IS_OBJECT; return_value->type=IS_OBJECT;
return_value->value.obj.properties = return_value->value.ht; return_value->value.obj.properties = return_value->value.ht;
@ -1574,7 +1578,7 @@ PHP_FUNCTION(mysql_fetch_object)
Fetch a result row as an array (associative, numeric or both)*/ Fetch a result row as an array (associative, numeric or both)*/
PHP_FUNCTION(mysql_fetch_array) PHP_FUNCTION(mysql_fetch_array)
{ {
php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0); php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0, 2);
} }
/* }}} */ /* }}} */
@ -1583,7 +1587,7 @@ PHP_FUNCTION(mysql_fetch_array)
Fetch a result row as an associative array */ Fetch a result row as an associative array */
PHP_FUNCTION(mysql_fetch_assoc) PHP_FUNCTION(mysql_fetch_assoc)
{ {
php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, MYSQL_ASSOC); php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, MYSQL_ASSOC, 1);
} }
/* }}} */ /* }}} */