summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Hristov <andrey@php.net>2010-04-20 18:04:24 +0000
committerAndrey Hristov <andrey@php.net>2010-04-20 18:04:24 +0000
commit804b950562a93d5538b722ed202005cdc64bc01e (patch)
tree52c028324ac2c287518c462af0b971cc258c0bbd
parent0cbfc91628cd8c2cf7f97dcac95e4b0238fe6677 (diff)
downloadphp-git-804b950562a93d5538b722ed202005cdc64bc01e.tar.gz
It is possible that change user tries an user who has old password.
Instead of error message that doesn't say much there is more information now.
-rw-r--r--ext/mysqlnd/mysqlnd.c4
-rw-r--r--ext/mysqlnd/mysqlnd_wireprotocol.c1
-rw-r--r--ext/mysqlnd/mysqlnd_wireprotocol.h1
3 files changed, 6 insertions, 0 deletions
diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c
index 0cfcf3f988..69c294368e 100644
--- a/ext/mysqlnd/mysqlnd.c
+++ b/ext/mysqlnd/mysqlnd.c
@@ -1863,6 +1863,10 @@ MYSQLND_METHOD(mysqlnd_conn, change_user)(MYSQLND * const conn,
}
conn->charset = conn->greet_charset;
memset(&conn->upsert_status, 0, sizeof(conn->upsert_status));
+ } else if (ret == FAIL && chg_user_resp->server_asked_323_auth == TRUE) {
+ /* old authentication with new server !*/
+ DBG_ERR(mysqlnd_old_passwd);
+ SET_CLIENT_ERROR(conn->error_info, CR_UNKNOWN_ERROR, UNKNOWN_SQLSTATE, mysqlnd_old_passwd);
}
SET_ERROR_AFF_ROWS(conn);
diff --git a/ext/mysqlnd/mysqlnd_wireprotocol.c b/ext/mysqlnd/mysqlnd_wireprotocol.c
index 1922a55628..650ce38f96 100644
--- a/ext/mysqlnd/mysqlnd_wireprotocol.c
+++ b/ext/mysqlnd/mysqlnd_wireprotocol.c
@@ -1693,6 +1693,7 @@ php_mysqlnd_chg_user_read(void *_packet, MYSQLND *conn TSRMLS_DC)
}
if (ERROR_MARKER == packet->field_count) {
+ packet->server_asked_323_auth = TRUE;
php_mysqlnd_read_error_from_line(p, packet->header.size - 1,
packet->error_info.error,
sizeof(packet->error_info.error),
diff --git a/ext/mysqlnd/mysqlnd_wireprotocol.h b/ext/mysqlnd/mysqlnd_wireprotocol.h
index d037b6b677..f4f79af469 100644
--- a/ext/mysqlnd/mysqlnd_wireprotocol.h
+++ b/ext/mysqlnd/mysqlnd_wireprotocol.h
@@ -245,6 +245,7 @@ typedef struct st_mysqlnd_packet_chg_user_resp {
uint16_t server_capabilities;
/* If error packet, we use these */
MYSQLND_ERROR_INFO error_info;
+ zend_bool server_asked_323_auth;
} MYSQLND_PACKET_CHG_USER_RESPONSE;