]> granicus.if.org Git - php/commitdiff
Add support for caching_sha2_password in change user authentication
authorNikita Popov <nikita.ppv@gmail.com>
Fri, 27 Dec 2019 13:40:54 +0000 (14:40 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 27 Dec 2019 16:27:45 +0000 (17:27 +0100)
Same as for connection handshakes.

ext/mysqlnd/mysqlnd_auth.c
ext/mysqlnd/mysqlnd_auth.h

index a1aaebd9dab1724bb1fa19532648b0229ed3b73e..c4bd53d8c322746f36acd2e312352fa3aa2d5871 100644 (file)
@@ -138,6 +138,7 @@ mysqlnd_run_authentication(
                                ret = mysqlnd_auth_change_user(conn, user, strlen(user), passwd, passwd_len, db, db_len, silent,
                                                                                           first_call,
                                                                                           requested_protocol,
+                                                                                          auth_plugin, plugin_data, plugin_data_len,
                                                                                           scrambled_data, scrambled_data_len,
                                                                                           &switch_to_auth_protocol, &switch_to_auth_protocol_len,
                                                                                           &switch_to_auth_protocol_data, &switch_to_auth_protocol_data_len
@@ -377,6 +378,9 @@ mysqlnd_auth_change_user(MYSQLND_CONN_DATA * const conn,
                                                                const zend_bool silent,
                                                                const zend_bool use_full_blown_auth_packet,
                                                                const char * const auth_protocol,
+                                                               struct st_mysqlnd_authentication_plugin * auth_plugin,
+                                                               const zend_uchar * const orig_auth_plugin_data,
+                                                               const size_t orig_auth_plugin_data_len,
                                                                const zend_uchar * const auth_plugin_data,
                                                                const size_t auth_plugin_data_len,
                                                                char ** switch_to_auth_protocol,
@@ -442,6 +446,15 @@ mysqlnd_auth_change_user(MYSQLND_CONN_DATA * const conn,
                PACKET_FREE(&auth_packet);
        }
 
+       if (auth_plugin && auth_plugin->methods.handle_server_response) {
+               if (FAIL == auth_plugin->methods.handle_server_response(auth_plugin, conn,
+                               orig_auth_plugin_data, orig_auth_plugin_data_len, passwd, passwd_len,
+                               switch_to_auth_protocol, switch_to_auth_protocol_len,
+                               switch_to_auth_protocol_data, switch_to_auth_protocol_data_len)) {
+                       goto end;
+               }
+       }
+
        ret = PACKET_READ(conn, &chg_user_resp);
        COPY_CLIENT_ERROR(conn->error_info, chg_user_resp.error_info);
 
index e66737547646e53302abc4681810732e834ee089..54fac21bdece38bed8120c3bc0e42c0d6878f9e7 100644 (file)
@@ -53,6 +53,9 @@ mysqlnd_auth_change_user(MYSQLND_CONN_DATA * const conn,
                                                                const zend_bool silent,
                                                                const zend_bool use_full_blown_auth_packet,
                                                                const char * const auth_protocol,
+                                                               struct st_mysqlnd_authentication_plugin * auth_plugin,
+                                                               const zend_uchar * const orig_auth_plugin_data,
+                                                               const size_t orig_auth_plugin_data_len,
                                                                const zend_uchar * auth_plugin_data,
                                                                const size_t auth_plugin_data_len,
                                                                char ** switch_to_auth_protocol,