Skip to content

Commit 0f6c41c

Browse files
committed
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3: Fix mysqli_expire_password test for mariadb
2 parents 5d5c1ce + 0697a64 commit 0f6c41c

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');
@@ -14,22 +14,34 @@ if (!$link = @my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
1414
if ($link->server_version < 50610)
1515
die(sprintf("SKIP Needs MySQL 5.6.10 or newer, found MySQL %s\n", $link->server_info));
1616

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

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

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

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

5668
/* default */
57-
if (!$link = my_mysqli_connect($host, 'expiretest', "", $db, $port, $socket)) {
69+
if (!$link = my_mysqli_connect($host, 'expiretest', 'expiredpassword', $db, $port, $socket)) {
5870
printf("[001] Cannot connect [%d] %s\n",
5971
mysqli_connect_errno(), mysqli_connect_error());
6072
} else {
6173
$link->query("SELECT id FROM test WHERE id = 1");
6274
printf("[002] Connect should fail, [%d] %s\n", $link->errno, $link->error);
6375
}
76+
6477
/* explicitly requesting default */
6578
$link = mysqli_init();
6679
$link->options(MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, 0);
67-
if (!my_mysqli_real_connect($link, $host, 'expiretest', "", $db, $port, $socket)) {
80+
if (!my_mysqli_real_connect($link, $host, 'expiretest', 'expiredpassword', $db, $port, $socket)) {
6881
printf("[003] Cannot connect [%d] %s\n",
6982
mysqli_connect_errno(), mysqli_connect_error());
7083
} else {
@@ -75,7 +88,7 @@ if (!mysqli_query($link, sprintf("GRANT SELECT ON TABLE %s.test TO expiretest@'%
7588
/* allow connect */
7689
$link = mysqli_init();
7790
$link->options(MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, 1);
78-
if (!my_mysqli_real_connect($link, $host, 'expiretest', "", $db, $port, $socket)) {
91+
if (!my_mysqli_real_connect($link, $host, 'expiretest', 'expiredpassword', $db, $port, $socket)) {
7992
printf("[005] Cannot connect [%d] %s\n",
8093
mysqli_connect_errno(), mysqli_connect_error());
8194
} else {
@@ -87,7 +100,7 @@ if (!mysqli_query($link, sprintf("GRANT SELECT ON TABLE %s.test TO expiretest@'%
87100
/* allow connect, fix pw */
88101
$link = mysqli_init();
89102
$link->options(MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, 1);
90-
if (!my_mysqli_real_connect($link, $host, 'expiretest', "", $db, $port, $socket)) {
103+
if (!my_mysqli_real_connect($link, $host, 'expiretest', 'expiredpassword', $db, $port, $socket)) {
91104
printf("[007] Cannot connect [%d] %s\n",
92105
mysqli_connect_errno(), mysqli_connect_error());
93106
} else {
@@ -123,11 +136,11 @@ if (!mysqli_query($link, sprintf("GRANT SELECT ON TABLE %s.test TO expiretest@'%
123136
mysqli_query($link, 'DROP USER expiretest@localhost');
124137
?>
125138
--EXPECTF--
126-
Warning: mysqli%sconnect(): (HY000/1862): %s in %s on line %d
127-
[001] Cannot connect [1862] %s
139+
Warning: mysqli%sconnect(): (HY000/%d): %s in %s on line %d
140+
[001] Cannot connect [%d] %s
128141

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

0 commit comments

Comments
 (0)