From ed4ead3a980be1526f4bea58950b0127291cd598 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Wed, 18 Apr 2012 20:04:50 +0200 Subject: lp:982664 there are few broken clients that lie about their capabilities (for example, one of them sets client capabilities by copying server capabilities) We cannot fix them - let's tolerate them --- sql/sql_acl.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index f51de84d819..3eb7daab610 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -7654,14 +7654,16 @@ static ulong parse_client_handshake_packet(MPVIO_EXT *mpvio, return packet_error; } - if (thd->client_capabilities & CLIENT_PLUGIN_AUTH) + if ((thd->client_capabilities & CLIENT_PLUGIN_AUTH) && + (client_plugin < (char *)net->read_pos + pkt_len)) { - if (client_plugin >= (char *)net->read_pos + pkt_len) - return packet_error; client_plugin= fix_plugin_ptr(client_plugin); } else { + /* Some clients lie. Sad, but true */ + thd->client_capabilities &= ~CLIENT_PLUGIN_AUTH; + if (thd->client_capabilities & CLIENT_SECURE_CONNECTION) client_plugin= native_password_plugin_name.str; else -- cgit v1.2.1