From 81957483d33b660bc5039360ea57911857f6d03c Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 8 Oct 2013 12:25:14 +0300 Subject: [PATCH] Embedded server with authenticaction fixed after connection attributes port. --- libmysqld/lib_sql.cc | 10 ++++++---- sql/sql_acl.cc | 5 ++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc index 458af24ce34..86b3bc6a283 100644 --- a/libmysqld/lib_sql.cc +++ b/libmysqld/lib_sql.cc @@ -701,6 +701,7 @@ err: } +#ifdef NO_EMBEDDED_ACCESS_CHECKS static void emb_transfer_connect_attrs(MYSQL *mysql) { @@ -723,7 +724,6 @@ emb_transfer_connect_attrs(MYSQL *mysql) } -#ifdef NO_EMBEDDED_ACCESS_CHECKS int check_embedded_connection(MYSQL *mysql, const char *db) { int result; @@ -766,8 +766,9 @@ int check_embedded_connection(MYSQL *mysql, const char *db) (mysql->options.extension) ? mysql->options.extension->connection_attributes_length : 0; - buf= my_alloca(USERNAME_LENGTH + SCRAMBLE_LENGTH + 1 + 2*NAME_LEN + 2 + - connect_attrs_len + 2); + buf= (char *)my_alloca(USERNAME_LENGTH + SCRAMBLE_LENGTH + 1 + + 2*NAME_LEN + 2 + + connect_attrs_len + 2); if (mysql->options.client_ip) { sctx->host= my_strdup(mysql->options.client_ip, MYF(0)); @@ -801,7 +802,8 @@ int check_embedded_connection(MYSQL *mysql, const char *db) int2store(end, (ushort) mysql->charset->number); end+= 2; - end= strmake(end, "mysql_native_password", NAME_LEN) + 1; + // There is no pluging compatibility in the embedded server + //end= strmake(end, "mysql_native_password", NAME_LEN) + 1; /* the server does the same as the client */ mysql->server_capabilities= mysql->client_flag; diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 89d7b413514..3e7564a1f25 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -8398,7 +8398,10 @@ static bool parse_com_change_user_packet(MPVIO_EXT *mpvio, uint packet_length) if ((mpvio->thd->client_capabilities & CLIENT_CONNECT_ATTRS) && read_client_connect_attrs(&next_field, end, mpvio->thd->charset())) - return packet_error; + { + my_message(ER_UNKNOWN_COM_ERROR, ER(ER_UNKNOWN_COM_ERROR), MYF(0)); + DBUG_RETURN(packet_error); + } DBUG_PRINT("info", ("client_plugin=%s, restart", client_plugin)); /*