1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

ext/mysqli: internal updates (#19072)

* global struct size reduction.

* connection port ini value sanity check addition.
This commit is contained in:
David CARLIER
2025-10-01 12:50:11 +01:00
committed by GitHub
parent 3ac2788ea7
commit 39dda7239f
3 changed files with 44 additions and 10 deletions

View File

@@ -424,6 +424,19 @@ static const MYSQLND_REVERSE_API mysqli_reverse_api = {
mysqli_convert_zv_to_mysqlnd
};
static PHP_INI_MH(OnUpdateDefaultPort)
{
zend_long value = ZEND_ATOL(ZSTR_VAL(new_value));
if (value < 0 || value > USHRT_MAX) {
return FAILURE;
}
MyG(default_port) = (unsigned short)value;
return SUCCESS;
}
/* {{{ PHP_INI_BEGIN */
PHP_INI_BEGIN()
STD_PHP_INI_ENTRY_EX("mysqli.max_links", "-1", PHP_INI_SYSTEM, OnUpdateLong, max_links, zend_mysqli_globals, mysqli_globals, display_link_numbers)
@@ -433,7 +446,7 @@ PHP_INI_BEGIN()
STD_PHP_INI_ENTRY("mysqli.default_host", NULL, PHP_INI_ALL, OnUpdateString, default_host, zend_mysqli_globals, mysqli_globals)
STD_PHP_INI_ENTRY("mysqli.default_user", NULL, PHP_INI_ALL, OnUpdateString, default_user, zend_mysqli_globals, mysqli_globals)
STD_PHP_INI_ENTRY("mysqli.default_pw", NULL, PHP_INI_ALL, OnUpdateString, default_pw, zend_mysqli_globals, mysqli_globals)
STD_PHP_INI_ENTRY("mysqli.default_port", "3306", PHP_INI_ALL, OnUpdateLong, default_port, zend_mysqli_globals, mysqli_globals)
STD_PHP_INI_ENTRY("mysqli.default_port", "3306", PHP_INI_ALL, OnUpdateDefaultPort, default_port, zend_mysqli_globals, mysqli_globals)
#ifdef PHP_MYSQL_UNIX_SOCK_ADDR
STD_PHP_INI_ENTRY("mysqli.default_socket", MYSQL_UNIX_ADDR,PHP_INI_ALL,OnUpdateStringUnempty, default_socket, zend_mysqli_globals, mysqli_globals)
#else

View File

@@ -236,21 +236,21 @@ extern void php_mysqli_fetch_into_hash_aux(zval *return_value, MYSQL_RES * resul
ZEND_BEGIN_MODULE_GLOBALS(mysqli)
unsigned short default_port;
bool allow_persistent;
bool allow_local_infile;
char *default_host;
char *default_user;
char *default_pw;
char *default_socket;
char *local_infile_directory;
char *error_msg;
zend_long num_links;
zend_long max_links;
zend_long num_active_persistent;
zend_long num_inactive_persistent;
zend_long max_persistent;
bool allow_persistent;
zend_ulong default_port;
char *default_host;
char *default_user;
char *default_pw;
char *default_socket;
bool allow_local_infile;
char *local_infile_directory;
zend_long error_no;
char *error_msg;
zend_long report_mode;
bool rollback_on_cached_plink;
ZEND_END_MODULE_GLOBALS(mysqli)

View File

@@ -0,0 +1,21 @@
--TEST--
default_port ini setting
--EXTENSIONS--
mysqli
--FILE--
<?php
$orig_port = ini_get("mysqli.default_port");
ini_set('mysqli.default_port', 65536);
$new_port = ini_get("mysqli.default_port");
var_dump($orig_port === $new_port);
ini_set('mysqli.default_port', -1);
$new_port = ini_get("mysqli.default_port");
var_dump($orig_port === $new_port);
ini_set('mysqli.default_port', $orig_port - 1);
$new_port = ini_get("mysqli.default_port");
var_dump($orig_port === $new_port);
?>
--EXPECT--
bool(true)
bool(true)
bool(false)