From 72b169462708c7b23368a46ec7832dbf4a722c31 Mon Sep 17 00:00:00 2001 From: Ian Kent Date: Feb 23 2010 05:53:50 +0000 Subject: - add missing sasl mutex callbacks. --- diff --git a/autofs-5.0.5-add-sasl-mutex-callbacks.patch b/autofs-5.0.5-add-sasl-mutex-callbacks.patch new file mode 100644 index 0000000..1aa5855 --- /dev/null +++ b/autofs-5.0.5-add-sasl-mutex-callbacks.patch @@ -0,0 +1,98 @@ +autofs-5.0.5 - add sasl mutex callbacks + +From: Ian Kent + +We missed the fact that Cyrus SASL requires the user to provide mutex +handling functions when being used in a threaded environment. + +Original patch contributed by Kazuhiro Kikuchi (of Fujitsu), slightly +modified by myself. +--- + + CHANGELOG | 1 + modules/cyrus-sasl.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 58 insertions(+) + + +--- autofs-5.0.5.orig/CHANGELOG ++++ autofs-5.0.5/CHANGELOG +@@ -22,6 +22,7 @@ + - fix disable timeout. + - fix strdup() return value check (Leonardo Chiquitto). + - fix reconnect get base dn. ++- add missing sasl mutex callbacks. + + 03/09/2009 autofs-5.0.5 + ----------------------- +--- autofs-5.0.5.orig/modules/cyrus-sasl.c ++++ autofs-5.0.5/modules/cyrus-sasl.c +@@ -944,12 +944,69 @@ void autofs_sasl_dispose(struct lookup_c + } + } + ++static void *sasl_mutex_new(void) ++{ ++ pthread_mutex_t* mutex; ++ ++ mutex = malloc(sizeof(pthread_mutex_t)); ++ if (!mutex) ++ return 0; ++ ++ pthread_mutex_init(mutex, NULL); ++ ++ return (void *) mutex; ++} ++ ++static int sasl_mutex_lock(void *mutex __attribute__((unused))) ++{ ++ int rc; ++ ++ if (!mutex) ++ return SASL_FAIL; ++ ++ rc = pthread_mutex_lock((pthread_mutex_t *) mutex); ++ ++ return (rc==0 ? SASL_OK : SASL_FAIL); ++} ++ ++static int sasl_mutex_unlock(void *mutex __attribute__((unused))) ++{ ++ int rc; ++ ++ if (!mutex) ++ return SASL_FAIL; ++ ++ rc = pthread_mutex_unlock((pthread_mutex_t *) mutex); ++ ++ return (rc==0 ? SASL_OK : SASL_FAIL); ++} ++ ++static void sasl_mutex_dispose(void *mutex __attribute__((unused))) ++{ ++ int rc; ++ ++ if (!mutex) ++ return; ++ ++ rc = pthread_mutex_destroy((pthread_mutex_t *) mutex); ++ if (rc == 0) ++ free(mutex); ++ ++ return; ++} ++ + /* + * Initialize the sasl callbacks, which increments the global + * use counter. + */ + int autofs_sasl_client_init(unsigned logopt) + { ++ ++ sasl_set_mutex(sasl_mutex_new, ++ sasl_mutex_lock, ++ sasl_mutex_unlock, ++ sasl_mutex_dispose); ++ + /* Start up Cyrus SASL--only needs to be done at library load. */ + if (sasl_client_init(callbacks) != SASL_OK) { + error(logopt, "sasl_client_init failed"); diff --git a/autofs.spec b/autofs.spec index 79d79c8..d0ab9fa 100644 --- a/autofs.spec +++ b/autofs.spec @@ -4,7 +4,7 @@ Summary: A tool for automatically mounting and unmounting filesystems Name: autofs Version: 5.0.5 -Release: 19%{?dist} +Release: 20%{?dist} Epoch: 1 License: GPLv2+ Group: System Environment/Daemons @@ -32,6 +32,7 @@ Patch19: autofs-5.0.5-fix-random-selection-option.patch Patch20: autofs-5.0.5-fix-disable-timeout.patch Patch21: autofs-5.0.5-fix-strdup-return-value-check.patch Patch22: autofs-5.0.5-fix-reconnect-get-base-dn.patch +Patch23: autofs-5.0.5-add-sasl-mutex-callbacks.patch Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: autoconf, hesiod-devel, openldap-devel, bison, flex, libxml2-devel, cyrus-sasl-devel, openssl-devel module-init-tools util-linux nfs-utils e2fsprogs libtirpc-devel Requires: kernel >= 2.6.17 @@ -95,6 +96,7 @@ echo %{version}-%{release} > .version %patch20 -p1 %patch21 -p1 %patch22 -p1 +%patch23 -p1 %build #CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=/usr --libdir=%{_libdir} @@ -147,6 +149,9 @@ fi %{_libdir}/autofs/ %changelog +* Tue Feb 23 2010 Ian Kent - 1:5.0.5-20.fc13 +- add missing sasl mutex callbacks. + * Thu Feb 11 2010 Ian Kent - 1:5.0.5-19 - fix segfault upon reconnect cannot find valid base dn.