diff options
Diffstat (limited to 'patches-applied/no_pthread_mutexes')
-rw-r--r-- | patches-applied/no_pthread_mutexes | 205 |
1 files changed, 205 insertions, 0 deletions
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; + } |