From c8e48ac3a495ba8f0568acf3a32df25505cd1b55 Mon Sep 17 00:00:00 2001 From: Rafal Somla Date: Thu, 28 Apr 2011 21:17:29 +0200 Subject: Bug#11766631 (59780) - Move the client authentication_windows plugin into the server repository This patch adds client windows authentication plugin code to the client library libmysql (only on Windows platform). The plugin is compiled into the library and added to the list of built-in plugins. This way clients should be able to connect to a server which uses windows authentication plugin even as an SQL user which uses such authentication. Note: this makes the client library to depend on Secur32 Windows system library. When building clients, they must be linked against Secur32. Command mysql_config --libs correctly lists Secur32 as a required dependency. --- libmysql/authentication_win/plugin_client.cc | 58 ++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 libmysql/authentication_win/plugin_client.cc (limited to 'libmysql/authentication_win/plugin_client.cc') diff --git a/libmysql/authentication_win/plugin_client.cc b/libmysql/authentication_win/plugin_client.cc new file mode 100644 index 00000000000..72769ada8f6 --- /dev/null +++ b/libmysql/authentication_win/plugin_client.cc @@ -0,0 +1,58 @@ +/* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#include +#include +#include +#include + +#include "common.h" + +static int win_auth_client_plugin_init(char*, size_t, int, va_list) +{ + return 0; +} + + +static int win_auth_client_plugin_deinit() +{ + return 0; +} + + +int win_auth_handshake_client(MYSQL_PLUGIN_VIO *vio, MYSQL *mysql); + + +/* + Client plugin declaration. This is added to mysql_client_builtins[] + in sql-common/client.c +*/ + +extern "C" +st_mysql_client_plugin_AUTHENTICATION win_auth_client_plugin= +{ + MYSQL_CLIENT_AUTHENTICATION_PLUGIN, + MYSQL_CLIENT_AUTHENTICATION_PLUGIN_INTERFACE_VERSION, + "authentication_windows_client", + "Rafal Somla", + "Windows Authentication Plugin - client side", + {0,1,0}, + "GPL", + NULL, + win_auth_client_plugin_init, + win_auth_client_plugin_deinit, + NULL, // option handling + win_auth_handshake_client +}; -- cgit v1.2.1 From 8c6d569f2ae4f63dd34ef5c0f90fc3a3f617efbc Mon Sep 17 00:00:00 2001 From: Rafal Somla Date: Fri, 3 Jun 2011 13:44:33 +0200 Subject: Bug#12612143 - LIBMYSQL 5.5.13 BREAKS USER APPLICATION BUILD Since the Windows authentication support has been added to libmysql, this library depends on the system Secur32 library. Consequently, clients which are linked against libmysql should be also linked with Secur32 (in addition to ws2_32). In MS VC++ it is possible to embed information about required libraries into object file using #pragma directive. This patch adds such directive when the Windows authentiaction support is compiled. This is similar to analogous #pragma for ws2_32 library in my_init.c --- libmysql/authentication_win/plugin_client.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'libmysql/authentication_win/plugin_client.cc') diff --git a/libmysql/authentication_win/plugin_client.cc b/libmysql/authentication_win/plugin_client.cc index 72769ada8f6..30dc5b1493d 100644 --- a/libmysql/authentication_win/plugin_client.cc +++ b/libmysql/authentication_win/plugin_client.cc @@ -20,6 +20,16 @@ #include "common.h" +/* + The following MS C++ specific pragma embeds a comment in the resulting + object file. A "lib" comment tells the linker to use the specified + library, thus the dependency is handled automagically. +*/ + +#ifdef _MSC_VER +#pragma comment(lib, "Secur32") +#endif + static int win_auth_client_plugin_init(char*, size_t, int, va_list) { return 0; -- cgit v1.2.1