configure.ac | 22 ++++++++++ connectivity/Library_mysqlc.mk | 1 external/mariadb-connector-c/StaticLibrary_mariadb-connector-c.mk | 9 ++++ external/mariadb-connector-c/UnpackedTarball_mariadb-connector-c.mk | 6 ++ 4 files changed, 38 insertions(+)
New commits: commit 53ab6269215d4e37af3f9dfaae2a306e040c5b88 Author: Julien Nabet <serval2...@yahoo.fr> AuthorDate: Sat Nov 25 15:04:07 2023 +0100 Commit: Julien Nabet <serval2...@yahoo.fr> CommitDate: Mon Apr 22 19:56:48 2024 +0200 tdf#150082: LO Base MariaDB/MySQL connector don't accept auth via gssapi Exclude Windows since we're not sure gssapi.h is available (at least Jenkins Windows machine doesn't have it) Change-Id: Iba396f77b07dce4291de5eb0e6ad7c0c25e6c3c7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159954 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2...@yahoo.fr> diff --git a/configure.ac b/configure.ac index 8c434dd5243e..b1ace35b8d1f 100644 --- a/configure.ac +++ b/configure.ac @@ -2725,6 +2725,7 @@ AC_ARG_WITH(locales, ,) # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5 +# and also by Mariadb/Mysql since LibO 24.8 libo_FUZZ_ARG_WITH(krb5, AS_HELP_STRING([--with-krb5], [Enable MIT Kerberos 5 support in modules that support it. @@ -10229,6 +10230,11 @@ if test "$ENABLE_MARIADBC" = "TRUE"; then dnl =================================================================== dnl Check for system MariaDB dnl =================================================================== + + if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then + AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.]) + fi + AC_MSG_CHECKING([which MariaDB to use]) if test "$with_system_mariadb" = "yes"; then AC_MSG_RESULT([external]) @@ -10277,10 +10283,26 @@ if test "$ENABLE_MARIADBC" = "TRUE"; then /g' | grep -E '(mysqlclient|mariadb)') if test "$_os" = "Darwin"; then LIBMARIADB=${LIBMARIADB}.dylib + if test "$with_gssapi" != "no"; then + WITH_GSSAPI=TRUE + save_LIBS=$LIBS + AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [], + [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])]) + GSSAPI_LIBS=$LIBS + LIBS=$save_LIBS + fi elif test "$_os" = "WINNT"; then LIBMARIADB=${LIBMARIADB}.dll else LIBMARIADB=${LIBMARIADB}.so + if test "$with_gssapi" != "no"; then + WITH_GSSAPI=TRUE + save_LIBS=$LIBS + AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [], + [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])]) + GSSAPI_LIBS=$LIBS + LIBS=$save_LIBS + fi fi LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir) AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH]) diff --git a/connectivity/Library_mysqlc.mk b/connectivity/Library_mysqlc.mk index af46fb9ba137..33ffc5cb28b0 100644 --- a/connectivity/Library_mysqlc.mk +++ b/connectivity/Library_mysqlc.mk @@ -23,6 +23,7 @@ $(eval $(call gb_Library_set_include,mysqlc,\ )) $(eval $(call gb_Library_add_libs,mysqlc,\ + $(if $(WITH_GSSAPI),$(GSSAPI_LIBS)) \ $(if $(filter-out WNT,$(OS)),$(if $(filter HAIKU MACOSX SOLARIS,$(OS)),\ -lz -lm,-rdynamic -lz -lcrypt -lm)) \ $(if $(filter LINUX,$(OS)),-ldl,) \ diff --git a/external/mariadb-connector-c/StaticLibrary_mariadb-connector-c.mk b/external/mariadb-connector-c/StaticLibrary_mariadb-connector-c.mk index b8802e16695e..a5b485b74d13 100644 --- a/external/mariadb-connector-c/StaticLibrary_mariadb-connector-c.mk +++ b/external/mariadb-connector-c/StaticLibrary_mariadb-connector-c.mk @@ -53,6 +53,11 @@ $(eval $(call gb_StaticLibrary_add_generated_cobjects,mariadb-connector-c,\ UnpackedTarball/mariadb-connector-c/libmariadb/ma_net \ UnpackedTarball/mariadb-connector-c/libmariadb/ma_password \ UnpackedTarball/mariadb-connector-c/libmariadb/ma_pvio \ + $(ifneq $(filter $(OS),WNT), \ + UnpackedTarball/mariadb-connector-c/plugins/auth/auth_gssapi_client \ + UnpackedTarball/mariadb-connector-c/plugins/auth/gssapi_client \ + UnpackedTarball/mariadb-connector-c/plugins/auth/gssapi_errmsg \ + ) \ UnpackedTarball/mariadb-connector-c/libmariadb/ma_sha1 \ UnpackedTarball/mariadb-connector-c/libmariadb/ma_stmt_codec \ UnpackedTarball/mariadb-connector-c/libmariadb/ma_string \ @@ -65,6 +70,10 @@ $(eval $(call gb_StaticLibrary_add_generated_cobjects,mariadb-connector-c,\ UnpackedTarball/mariadb-connector-c/libmariadb/ma_client_plugin \ UnpackedTarball/mariadb-connector-c/plugins/auth/my_auth \ UnpackedTarball/mariadb-connector-c/plugins/auth/caching_sha2_pw \ + $(ifneq $(filter $(OS),WNT), \ + UnpackedTarball/mariadb-connector-c/plugins/auth/gssapi_client \ + UnpackedTarball/mariadb-connector-c/plugins/auth/gssapi_errmsg \ + ) \ UnpackedTarball/mariadb-connector-c/plugins/pvio/pvio_socket \ $(if $(filter $(OS),WNT), \ UnpackedTarball/mariadb-connector-c/libmariadb/win32_errmsg \ diff --git a/external/mariadb-connector-c/UnpackedTarball_mariadb-connector-c.mk b/external/mariadb-connector-c/UnpackedTarball_mariadb-connector-c.mk index 241e12db6581..f874918de5ee 100644 --- a/external/mariadb-connector-c/UnpackedTarball_mariadb-connector-c.mk +++ b/external/mariadb-connector-c/UnpackedTarball_mariadb-connector-c.mk @@ -36,6 +36,9 @@ $(eval $(call gb_UnpackedTarball_set_post_action,mariadb-connector-c, \ extern struct st_mysql_client_plugin pvio_socket_client_plugin\; \ extern struct st_mysql_client_plugin caching_sha2_password_client_plugin\; \ extern struct st_mysql_client_plugin mysql_native_password_client_plugin\; \ + $(ifneq $(filter WNT,$(OS)), \ + extern struct st_mysql_client_plugin_AUTHENTICATION auth_gssapi_client_client_plugin\; \ + ) \ $(if $(filter WNT,$(OS)), \ extern struct st_mysql_client_plugin pvio_shmem_client_plugin\; \ extern struct st_mysql_client_plugin pvio_npipe_client_plugin\; \ @@ -45,6 +48,9 @@ $(eval $(call gb_UnpackedTarball_set_post_action,mariadb-connector-c, \ (struct st_mysql_client_plugin *)\&pvio_socket_client_plugin$(COMMA) \ (struct st_mysql_client_plugin *)\&caching_sha2_password_client_plugin$(COMMA) \ (struct st_mysql_client_plugin *)\&mysql_native_password_client_plugin$(COMMA) \ + $(ifneq $(filter WNT,$(OS)), \ + (struct st_mysql_client_plugin_AUTHENTICATION *)\&auth_gssapi_client_client_plugin$(COMMA) \ + ) \ $(if $(filter WNT,$(OS)), \ (struct st_mysql_client_plugin *)\&pvio_shmem_client_plugin$(COMMA) \ (struct st_mysql_client_plugin *)\&pvio_npipe_client_plugin$(COMMA) \