Skip to content

Commit 1a1eeee

Browse files
committed
Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4: Fix mysqli_expire_password test for mariadb
2 parents 98cccd3 + 0f6c41c commit 1a1eeee

File tree

1 file changed

+26
-13
lines changed

1 file changed

+26
-13
lines changed

ext/mysqli/tests/mysqli_expire_password.phpt

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
--TEST--
2-
MySQL 5.6 EXPIRE PASSWORD protocol change
2+
MySQL 5.6 / MariaDB 10.4.3 EXPIRE PASSWORD protocol change
33
--SKIPIF--
44
<?php
55
require_once('skipif.inc');
@@ -13,22 +13,34 @@ if (!$link = @my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
1313
if ($link->server_version < 50610)
1414
die(sprintf("SKIP Needs MySQL 5.6.10 or newer, found MySQL %s\n", $link->server_info));
1515

16+
if ($link->server_version >= 100000) {
17+
if ($link->server_version < 100403)
18+
die(sprintf("SKIP Needs MariaDB 10.4.3 or newer, found MariaDB %s\n", $link->server_info));
19+
$result = $link->query("select @@disconnect_on_expired_password");
20+
if (!$result)
21+
die("SKIP Failed to query MariaDB @@disconnect_on_expired_password value");
22+
$row = mysqli_fetch_row($result);
23+
if ($row[0] == 0)
24+
die("SKIP Cannot run in MariaDB @@disconnect_on_expired_password=OFF state");
25+
26+
}
27+
1628
if (!$IS_MYSQLND && (mysqli_get_client_version() < 50610)) {
1729
die(sprintf("SKIP Needs libmysql 5.6.10 or newer, found %s\n", mysqli_get_client_version()));
1830
}
1931

2032
mysqli_query($link, 'DROP USER expiretest');
2133
mysqli_query($link, 'DROP USER expiretest@localhost');
2234

23-
if (!mysqli_query($link, 'CREATE USER expiretest@"%"') ||
24-
!mysqli_query($link, 'CREATE USER expiretest@"localhost"')) {
35+
if (!mysqli_query($link, 'CREATE USER expiretest IDENTIFIED BY \'expiredpassword\'') ||
36+
!mysqli_query($link, 'CREATE USER expiretest@localhost IDENTIFIED BY \'expiredpassword\'')) {
2537
printf("skip Cannot create second DB user [%d] %s", mysqli_errno($link), mysqli_error($link));
2638
mysqli_close($link);
2739
die("skip CREATE USER failed");
2840
}
2941

30-
if (!mysqli_query($link, 'ALTER USER expiretest@"%" PASSWORD EXPIRE') ||
31-
!mysqli_query($link, 'ALTER USER expiretest@"localhost" PASSWORD EXPIRE')) {
42+
if (!mysqli_query($link, 'ALTER USER expiretest PASSWORD EXPIRE') ||
43+
!mysqli_query($link, 'ALTER USER expiretest@localhost PASSWORD EXPIRE')) {
3244
printf("skip Cannot modify second DB user [%d] %s", mysqli_errno($link), mysqli_error($link));
3345
mysqli_close($link);
3446
die("skip ALTER USER failed");
@@ -53,17 +65,18 @@ if (!mysqli_query($link, sprintf("GRANT SELECT ON TABLE %s.test TO expiretest@'%
5365
require_once('table.inc');
5466

5567
/* default */
56-
if (!$link = my_mysqli_connect($host, 'expiretest', "", $db, $port, $socket)) {
68+
if (!$link = my_mysqli_connect($host, 'expiretest', 'expiredpassword', $db, $port, $socket)) {
5769
printf("[001] Cannot connect [%d] %s\n",
5870
mysqli_connect_errno(), mysqli_connect_error());
5971
} else {
6072
$link->query("SELECT id FROM test WHERE id = 1");
6173
printf("[002] Connect should fail, [%d] %s\n", $link->errno, $link->error);
6274
}
75+
6376
/* explicitly requesting default */
6477
$link = mysqli_init();
6578
$link->options(MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, 0);
66-
if (!my_mysqli_real_connect($link, $host, 'expiretest', "", $db, $port, $socket)) {
79+
if (!my_mysqli_real_connect($link, $host, 'expiretest', 'expiredpassword', $db, $port, $socket)) {
6780
printf("[003] Cannot connect [%d] %s\n",
6881
mysqli_connect_errno(), mysqli_connect_error());
6982
} else {
@@ -74,7 +87,7 @@ if (!mysqli_query($link, sprintf("GRANT SELECT ON TABLE %s.test TO expiretest@'%
7487
/* allow connect */
7588
$link = mysqli_init();
7689
$link->options(MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, 1);
77-
if (!my_mysqli_real_connect($link, $host, 'expiretest', "", $db, $port, $socket)) {
90+
if (!my_mysqli_real_connect($link, $host, 'expiretest', 'expiredpassword', $db, $port, $socket)) {
7891
printf("[005] Cannot connect [%d] %s\n",
7992
mysqli_connect_errno(), mysqli_connect_error());
8093
} else {
@@ -86,7 +99,7 @@ if (!mysqli_query($link, sprintf("GRANT SELECT ON TABLE %s.test TO expiretest@'%
8699
/* allow connect, fix pw */
87100
$link = mysqli_init();
88101
$link->options(MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, 1);
89-
if (!my_mysqli_real_connect($link, $host, 'expiretest', "", $db, $port, $socket)) {
102+
if (!my_mysqli_real_connect($link, $host, 'expiretest', 'expiredpassword', $db, $port, $socket)) {
90103
printf("[007] Cannot connect [%d] %s\n",
91104
mysqli_connect_errno(), mysqli_connect_error());
92105
} else {
@@ -122,11 +135,11 @@ if (!mysqli_query($link, sprintf("GRANT SELECT ON TABLE %s.test TO expiretest@'%
122135
mysqli_query($link, 'DROP USER expiretest@localhost');
123136
?>
124137
--EXPECTF--
125-
Warning: mysqli%sconnect(): (HY000/1862): %s in %s on line %d
126-
[001] Cannot connect [1862] %s
138+
Warning: mysqli%sconnect(): (HY000/%d): %s in %s on line %d
139+
[001] Cannot connect [%d] %s
127140

128-
Warning: mysqli%sconnect(): (HY000/1862): %s in %s on line %d
129-
[003] Cannot connect [1862] %s
141+
Warning: mysqli%sconnect(): (HY000/%d): %s in %s on line %d
142+
[003] Cannot connect [%d] %s
130143
[006] Connect allowed, query fail, [1820] %s
131144
[008] Connect allowed, pw set, [0%A
132145
array(1) {

0 commit comments

Comments
 (0)