- add missing sasl mutex callbacks.

This commit is contained in:
Ian Kent 2010-02-23 05:41:31 +00:00
parent 5c78520e98
commit 94e87563b3
2 changed files with 104 additions and 1 deletions

View File

@ -0,0 +1,98 @@
autofs-5.0.5 - add sasl mutex callbacks
From: Ian Kent <raven@themaw.net>
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");

View File

@ -4,7 +4,7 @@
Summary: A tool for automatically mounting and unmounting filesystems
Name: autofs
Version: 5.0.5
Release: 19%{?dist}
Release: 21%{?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 <kpnt@redhat.com> - 1:5.0.5-21
- add missing sasl mutex callbacks.
* Thu Feb 11 2010 Ian Kent <kpnt@redhat.com> - 1:5.0.5-19
- fix segfault upon reconnect cannot find valid base dn.