diff options
author | vorlon <Unknown> | 2007-08-25 11:54:06 +0000 |
---|---|---|
committer | vorlon <Unknown> | 2007-08-25 11:54:06 +0000 |
commit | 989fb041d612a49aebc2bc21bf311def0cfc139e (patch) | |
tree | 48fbb51dab8446ac07a34ad30c1c96c780cb3f1e | |
parent | 4d76cdc378e5677787b42a42756a50d9ca7161a8 (diff) | |
download | pam-989fb041d612a49aebc2bc21bf311def0cfc139e.tar.gz pam-989fb041d612a49aebc2bc21bf311def0cfc139e.tar.bz2 pam-989fb041d612a49aebc2bc21bf311def0cfc139e.zip |
Separate patch to remove pthreads references from libpam; we don't really
need any mutexes here, and trying to use them causes linking problems.
-rw-r--r-- | changelog | 6 | ||||
-rw-r--r-- | patches-applied/015_hurd_portability | 13 | ||||
-rw-r--r-- | patches-applied/autoconf.patch | 12 | ||||
-rw-r--r-- | patches-applied/no_pthread_mutexes | 205 | ||||
-rw-r--r-- | patches-applied/series | 1 |
5 files changed, 210 insertions, 27 deletions
@@ -146,8 +146,10 @@ pam (0.99.7.1-2) UNRELEASED; urgency=low Laurent Bigonville for the hint. Closes: #439038. * Add a watch file for use with uscan; thanks to Laurent Bigonville for this patch as well. Closes: #439040. - * Update 015_hurd_portability to include -pthread in - libpam_la_LDFLAGS, required for portability to non-Linux platforms. + * New patch no_pthread_mutexes: don't use pthread mutexes in + pam_modutil functions, they're not needed because pam handles + themselves should not be used concurrently by multiple threads and + using pthreads causes problems for portable linking. * New patch hurd_no_setfsuid: if we don't have sys/fsuid.h, work around using setreuid instead. diff --git a/patches-applied/015_hurd_portability b/patches-applied/015_hurd_portability index f39ae126..1abf9e9e 100644 --- a/patches-applied/015_hurd_portability +++ b/patches-applied/015_hurd_portability @@ -59,16 +59,3 @@ Index: Linux-PAM/modules/pam_limits/pam_limits.c if (rlimit_value != RLIM_INFINITY) rlimit_value *= 1024; break; -Index: Linux-PAM/libpam/Makefile.am -=================================================================== ---- Linux-PAM/libpam/Makefile.am.orig -+++ Linux-PAM/libpam/Makefile.am -@@ -20,7 +20,7 @@ - noinst_HEADERS = pam_prelude.h pam_private.h pam_tokens.h \ - pam_modutil_private.h pam_static_modules.h - --libpam_la_LDFLAGS = -no-undefined -version-info 81:6:81 \ -+libpam_la_LDFLAGS = -pthread -no-undefined -version-info 81:6:81 \ - @LIBAUDIT@ $(LIBPRELUDE_LIBS) @LIBDL@ - if STATIC_MODULES - libpam_la_LDFLAGS += `ls ../modules/pam_*/*.lo` \ diff --git a/patches-applied/autoconf.patch b/patches-applied/autoconf.patch index 615edc76..e18a43ce 100644 --- a/patches-applied/autoconf.patch +++ b/patches-applied/autoconf.patch @@ -4382,18 +4382,6 @@ Index: pam/Linux-PAM/libpam/Makefile.in SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ -@@ -272,8 +274,9 @@ - noinst_HEADERS = pam_prelude.h pam_private.h pam_tokens.h \ - pam_modutil_private.h pam_static_modules.h - --libpam_la_LDFLAGS = -no-undefined -version-info 81:6:81 @LIBAUDIT@ \ -- $(LIBPRELUDE_LIBS) @LIBDL@ $(am__append_2) $(am__append_3) -+libpam_la_LDFLAGS = -pthread -no-undefined -version-info 81:6:81 \ -+ @LIBAUDIT@ $(LIBPRELUDE_LIBS) @LIBDL@ $(am__append_2) \ -+ $(am__append_3) - lib_LTLIBRARIES = libpam.la - libpam_la_SOURCES = pam_account.c pam_auth.c pam_data.c pam_delay.c \ - pam_dispatch.c pam_end.c pam_env.c pam_handlers.c pam_item.c \ Index: pam/Linux-PAM/libpam_misc/Makefile.in =================================================================== --- pam.orig/Linux-PAM/libpam_misc/Makefile.in diff --git a/patches-applied/no_pthread_mutexes b/patches-applied/no_pthread_mutexes new file mode 100644 index 00000000..692fd792 --- /dev/null +++ b/patches-applied/no_pthread_mutexes @@ -0,0 +1,205 @@ +Don't use pthread mutexes in libpam unnecessarily; this avoids linking +problems on non-Linux platforms. + +Authors: Steve Langasek <vorlon@debian.org> + +Upstream status: submitted in <20070825115252.GD23503@dario.dodds.net> + +Index: pam/Linux-PAM/libpam/pam_modutil_getgrgid.c +=================================================================== +--- pam.orig/Linux-PAM/libpam/pam_modutil_getgrgid.c ++++ pam/Linux-PAM/libpam/pam_modutil_getgrgid.c +@@ -12,20 +12,9 @@ + #include <errno.h> + #include <limits.h> + #include <grp.h> +-#include <pthread.h> + #include <stdio.h> + #include <stdlib.h> + +-static pthread_mutex_t _pammodutil_mutex = PTHREAD_MUTEX_INITIALIZER; +-static void _pammodutil_lock(void) +-{ +- pthread_mutex_lock(&_pammodutil_mutex); +-} +-static void _pammodutil_unlock(void) +-{ +- pthread_mutex_unlock(&_pammodutil_mutex); +-} +- + static int intlen(int number) + { + int len = 2; +@@ -95,13 +84,11 @@ + for (i = 0; i < INT_MAX; i++) { + sprintf(data_name, "_pammodutil_getgrgid_%ld_%d", + (long) gid, i); +- _pammodutil_lock(); + status = PAM_NO_MODULE_DATA; + if (pam_get_data(pamh, data_name, &ignore) != PAM_SUCCESS) { + status = pam_set_data(pamh, data_name, + result, pam_modutil_cleanup); + } +- _pammodutil_unlock(); + if (status == PAM_SUCCESS) { + break; + } +Index: pam/Linux-PAM/libpam/pam_modutil_getgrnam.c +=================================================================== +--- pam.orig/Linux-PAM/libpam/pam_modutil_getgrnam.c ++++ pam/Linux-PAM/libpam/pam_modutil_getgrnam.c +@@ -12,20 +12,9 @@ + #include <errno.h> + #include <limits.h> + #include <grp.h> +-#include <pthread.h> + #include <stdio.h> + #include <stdlib.h> + +-static pthread_mutex_t _pammodutil_mutex = PTHREAD_MUTEX_INITIALIZER; +-static void _pammodutil_lock(void) +-{ +- pthread_mutex_lock(&_pammodutil_mutex); +-} +-static void _pammodutil_unlock(void) +-{ +- pthread_mutex_unlock(&_pammodutil_mutex); +-} +- + static int intlen(int number) + { + int len = 2; +@@ -84,13 +73,11 @@ + if (pamh != NULL) { + for (i = 0; i < INT_MAX; i++) { + sprintf(data_name, "_pammodutil_getgrnam_%s_%d", group, i); +- _pammodutil_lock(); + status = PAM_NO_MODULE_DATA; + if (pam_get_data(pamh, data_name, &ignore) != PAM_SUCCESS) { + status = pam_set_data(pamh, data_name, + result, pam_modutil_cleanup); + } +- _pammodutil_unlock(); + if (status == PAM_SUCCESS) { + break; + } +Index: pam/Linux-PAM/libpam/pam_modutil_getpwnam.c +=================================================================== +--- pam.orig/Linux-PAM/libpam/pam_modutil_getpwnam.c ++++ pam/Linux-PAM/libpam/pam_modutil_getpwnam.c +@@ -11,21 +11,10 @@ + + #include <errno.h> + #include <limits.h> +-#include <pthread.h> + #include <pwd.h> + #include <stdio.h> + #include <stdlib.h> + +-static pthread_mutex_t _pammodutil_mutex = PTHREAD_MUTEX_INITIALIZER; +-static void _pammodutil_lock(void) +-{ +- pthread_mutex_lock(&_pammodutil_mutex); +-} +-static void _pammodutil_unlock(void) +-{ +- pthread_mutex_unlock(&_pammodutil_mutex); +-} +- + static int intlen(int number) + { + int len = 2; +@@ -84,13 +73,11 @@ + if (pamh != NULL) { + for (i = 0; i < INT_MAX; i++) { + sprintf(data_name, "_pammodutil_getpwnam_%s_%d", user, i); +- _pammodutil_lock(); + status = PAM_NO_MODULE_DATA; + if (pam_get_data(pamh, data_name, &ignore) != PAM_SUCCESS) { + status = pam_set_data(pamh, data_name, + result, pam_modutil_cleanup); + } +- _pammodutil_unlock(); + if (status == PAM_SUCCESS) { + break; + } +Index: pam/Linux-PAM/libpam/pam_modutil_getpwuid.c +=================================================================== +--- pam.orig/Linux-PAM/libpam/pam_modutil_getpwuid.c ++++ pam/Linux-PAM/libpam/pam_modutil_getpwuid.c +@@ -11,21 +11,10 @@ + + #include <errno.h> + #include <limits.h> +-#include <pthread.h> + #include <pwd.h> + #include <stdio.h> + #include <stdlib.h> + +-static pthread_mutex_t _pammodutil_mutex = PTHREAD_MUTEX_INITIALIZER; +-static void _pammodutil_lock(void) +-{ +- pthread_mutex_lock(&_pammodutil_mutex); +-} +-static void _pammodutil_unlock(void) +-{ +- pthread_mutex_unlock(&_pammodutil_mutex); +-} +- + static int intlen(int number) + { + int len = 2; +@@ -95,13 +84,11 @@ + for (i = 0; i < INT_MAX; i++) { + sprintf(data_name, "_pammodutil_getpwuid_%ld_%d", + (long) uid, i); +- _pammodutil_lock(); + status = PAM_NO_MODULE_DATA; + if (pam_get_data(pamh, data_name, &ignore) != PAM_SUCCESS) { + status = pam_set_data(pamh, data_name, + result, pam_modutil_cleanup); + } +- _pammodutil_unlock(); + if (status == PAM_SUCCESS) { + break; + } +Index: pam/Linux-PAM/libpam/pam_modutil_getspnam.c +=================================================================== +--- pam.orig/Linux-PAM/libpam/pam_modutil_getspnam.c ++++ pam/Linux-PAM/libpam/pam_modutil_getspnam.c +@@ -11,21 +11,10 @@ + + #include <errno.h> + #include <limits.h> +-#include <pthread.h> + #include <shadow.h> + #include <stdio.h> + #include <stdlib.h> + +-static pthread_mutex_t _pammodutil_mutex = PTHREAD_MUTEX_INITIALIZER; +-static void _pammodutil_lock(void) +-{ +- pthread_mutex_lock(&_pammodutil_mutex); +-} +-static void _pammodutil_unlock(void) +-{ +- pthread_mutex_unlock(&_pammodutil_mutex); +-} +- + static int intlen(int number) + { + int len = 2; +@@ -84,13 +73,11 @@ + if (pamh != NULL) { + for (i = 0; i < INT_MAX; i++) { + sprintf(data_name, "_pammodutil_getspnam_%s_%d", user, i); +- _pammodutil_lock(); + status = PAM_NO_MODULE_DATA; + if (pam_get_data(pamh, data_name, &ignore) != PAM_SUCCESS) { + status = pam_set_data(pamh, data_name, + result, pam_modutil_cleanup); + } +- _pammodutil_unlock(); + if (status == PAM_SUCCESS) { + break; + } diff --git a/patches-applied/series b/patches-applied/series index 73fcfd4d..a8bd5798 100644 --- a/patches-applied/series +++ b/patches-applied/series @@ -29,4 +29,5 @@ hurd_no_setfsuid -p0 064_pam_unix_cracklib_dictpath 065_pam_unix_cracklib_disable PAM-manpage-section +no_pthread_mutexes autoconf.patch |