diff --git a/0002-Remove-enable-static-modules-option-and-support-from.patch b/0002-Remove-enable-static-modules-option-and-support-from.patch new file mode 100644 index 0000000..247f2ce --- /dev/null +++ b/0002-Remove-enable-static-modules-option-and-support-from.patch @@ -0,0 +1,3256 @@ +From dfffaec4953f1271963b1a3a9761289c757bf347 Mon Sep 17 00:00:00 2001 +From: Thorsten Kukuk +Date: Wed, 23 Mar 2016 11:25:53 +0100 +Subject: [PATCH] Remove "--enable-static-modules" option and support from + Linux-PAM. It was never official supported and was broken since years. + +* configure.ac: Remove --enable-static-modules option. +* doc/man/pam_sm_acct_mgmt.3.xml: Remove PAM_EXTERN. +* doc/man/pam_sm_authenticate.3.xml: Likewise. +* doc/man/pam_sm_chauthtok.3.xml: Likewise. +* doc/man/pam_sm_close_session.3.xml: Likewise. +* doc/man/pam_sm_open_session.3.xml: Likewise. +* doc/man/pam_sm_setcred.3.xml: Likewise. +* libpam/Makefile.am: Remove STATIC_MODULES cases. +* libpam/include/security/pam_modules.h: Remove PAM_STATIC parts. +* libpam/pam_dynamic.c: Likewise. +* libpam/pam_handlers.c: Likewise. +* libpam/pam_private.h: Likewise. +* libpam/pam_static.c: Remove file. +* libpam/pam_static_modules.h: Remove header file. +* modules/pam_access/pam_access.c: Remove PAM_EXTERN and PAM_STATIC parts. +* modules/pam_cracklib/pam_cracklib.c: Likewise. +* modules/pam_debug/pam_debug.c: Likewise. +* modules/pam_deny/pam_deny.c: Likewise. +* modules/pam_echo/pam_echo.c: Likewise. +* modules/pam_env/pam_env.c: Likewise. +* modules/pam_exec/pam_exec.c: Likewise. +* modules/pam_faildelay/pam_faildelay.c: Likewise. +* modules/pam_filter/pam_filter.c: Likewise. +* modules/pam_ftp/pam_ftp.c: Likewise. +* modules/pam_group/pam_group.c: Likewise. +* modules/pam_issue/pam_issue.c: Likewise. +* modules/pam_keyinit/pam_keyinit.c: Likewise. +* modules/pam_lastlog/pam_lastlog.c: Likewise. +* modules/pam_limits/pam_limits.c: Likewise. +* modules/pam_listfile/pam_listfile.c: Likewise. +* modules/pam_localuser/pam_localuser.c: Likewise. +* modules/pam_loginuid/pam_loginuid.c: Likewise. +* modules/pam_mail/pam_mail.c: Likewise. +* modules/pam_mkhomedir/pam_mkhomedir.c: Likewise. +* modules/pam_motd/pam_motd.c: Likewise. +* modules/pam_namespace/pam_namespace.c: Likewise. +* modules/pam_nologin/pam_nologin.c: Likewise. +* modules/pam_permit/pam_permit.c: Likewise. +* modules/pam_pwhistory/pam_pwhistory.c: Likewise. +* modules/pam_rhosts/pam_rhosts.c: Likewise. +* modules/pam_rootok/pam_rootok.c: Likewise. +* modules/pam_securetty/pam_securetty.c: Likewise. +* modules/pam_selinux/pam_selinux.c: Likewise. +* modules/pam_sepermit/pam_sepermit.c: Likewise. +* modules/pam_shells/pam_shells.c: Likewise. +* modules/pam_stress/pam_stress.c: Likewise. +* modules/pam_succeed_if/pam_succeed_if.c: Likewise. +* modules/pam_tally/pam_tally.c: Likewise. +* modules/pam_tally2/pam_tally2.c: Likewise. +* modules/pam_time/pam_time.c: Likewise. +* modules/pam_timestamp/pam_timestamp.c: Likewise. +* modules/pam_tty_audit/pam_tty_audit.c: Likewise. +* modules/pam_umask/pam_umask.c: Likewise. +* modules/pam_userdb/pam_userdb.c: Likewise. +* modules/pam_warn/pam_warn.c: Likewise. +* modules/pam_wheel/pam_wheel.c: Likewise. +* modules/pam_xauth/pam_xauth.c: Likewise. +* modules/pam_unix/Makefile.am: Remove STATIC_MODULES part. +* modules/pam_unix/pam_unix_acct.c: Remove PAM_STATIC part. +* modules/pam_unix/pam_unix_auth.c: Likewise. +* modules/pam_unix/pam_unix_passwd.c: Likewise. +* modules/pam_unix/pam_unix_sess.c: Likewise. +* modules/pam_unix/pam_unix_static.c: Removed. +* modules/pam_unix/pam_unix_static.h: Removed. +* po/POTFILES.in: Remove removed files. +* tests/tst-dlopen.c: Remove PAM_STATIC part. +--- + configure.ac | 19 +--- + doc/man/pam_sm_acct_mgmt.3.xml | 2 +- + doc/man/pam_sm_authenticate.3.xml | 2 +- + doc/man/pam_sm_chauthtok.3.xml | 2 +- + doc/man/pam_sm_close_session.3.xml | 2 +- + doc/man/pam_sm_open_session.3.xml | 2 +- + doc/man/pam_sm_setcred.3.xml | 2 +- + libpam/Makefile.am | 9 +- + libpam/include/security/pam_modules.h | 78 +++-------------- + libpam/pam_dynamic.c | 3 - + libpam/pam_handlers.c | 53 +----------- + libpam/pam_private.h | 12 --- + libpam/pam_static.c | 127 --------------------------- + libpam/pam_static_modules.h | 148 -------------------------------- + modules/pam_access/pam_access.c | 27 ++---- + modules/pam_cracklib/pam_cracklib.c | 17 +--- + modules/pam_debug/pam_debug.c | 22 ----- + modules/pam_deny/pam_deny.c | 25 ++---- + modules/pam_echo/pam_echo.c | 15 ---- + modules/pam_env/pam_env.c | 28 ++---- + modules/pam_exec/pam_exec.c | 24 ++---- + modules/pam_faildelay/pam_faildelay.c | 19 ---- + modules/pam_filter/pam_filter.c | 40 +++------ + modules/pam_ftp/pam_ftp.c | 21 +---- + modules/pam_group/pam_group.c | 19 +--- + modules/pam_issue/pam_issue.c | 20 +---- + modules/pam_keyinit/pam_keyinit.c | 16 ---- + modules/pam_lastlog/pam_lastlog.c | 26 ++---- + modules/pam_limits/pam_limits.c | 19 +--- + modules/pam_listfile/pam_listfile.c | 30 ++----- + modules/pam_localuser/pam_localuser.c | 28 ++---- + modules/pam_loginuid/pam_loginuid.c | 19 +--- + modules/pam_mail/pam_mail.c | 21 +---- + modules/pam_mkhomedir/pam_mkhomedir.c | 18 +--- + modules/pam_motd/pam_motd.c | 20 +---- + modules/pam_namespace/pam_namespace.c | 19 +--- + modules/pam_nologin/pam_nologin.c | 23 +---- + modules/pam_permit/pam_permit.c | 28 ++---- + modules/pam_pwhistory/pam_pwhistory.c | 15 +--- + modules/pam_rhosts/pam_rhosts.c | 19 +--- + modules/pam_rootok/pam_rootok.c | 24 +----- + modules/pam_securetty/pam_securetty.c | 22 +---- + modules/pam_selinux/pam_selinux.c | 8 +- + modules/pam_sepermit/pam_sepermit.c | 20 +---- + modules/pam_shells/pam_shells.c | 19 ---- + modules/pam_stress/pam_stress.c | 22 ----- + modules/pam_succeed_if/pam_succeed_if.c | 25 ++---- + modules/pam_tally/pam_tally.c | 33 +------ + modules/pam_tally2/pam_tally2.c | 33 +------ + modules/pam_time/pam_time.c | 17 +--- + modules/pam_timestamp/pam_timestamp.c | 23 +---- + modules/pam_tty_audit/pam_tty_audit.c | 13 --- + modules/pam_umask/pam_umask.c | 20 +---- + modules/pam_unix/Makefile.am | 6 +- + modules/pam_unix/pam_unix_acct.c | 6 +- + modules/pam_unix/pam_unix_auth.c | 6 +- + modules/pam_unix/pam_unix_passwd.c | 6 +- + modules/pam_unix/pam_unix_sess.c | 6 +- + modules/pam_unix/pam_unix_static.c | 23 ----- + modules/pam_unix/pam_unix_static.h | 6 -- + modules/pam_userdb/pam_userdb.c | 23 +---- + modules/pam_warn/pam_warn.c | 25 +----- + modules/pam_wheel/pam_wheel.c | 22 +---- + modules/pam_xauth/pam_xauth.c | 13 --- + po/POTFILES.in | 1 - + tests/tst-dlopen.c | 4 - + 66 files changed, 152 insertions(+), 1313 deletions(-) + delete mode 100644 libpam/pam_static.c + delete mode 100644 libpam/pam_static_modules.h + delete mode 100644 modules/pam_unix/pam_unix_static.c + delete mode 100644 modules/pam_unix/pam_unix_static.h + +diff --git a/configure.ac b/configure.ac +index f33b959..d5cc644 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -61,23 +61,8 @@ dnl This should be called before any macros that run the C compiler. + AC_USE_SYSTEM_EXTENSIONS + + LT_INIT([disable-static]) +- +-dnl +-dnl check if we should link everything static into libpam +-dnl +-AC_ARG_ENABLE(static-modules,AS_HELP_STRING([--enable-static-modules], +- [do not make the modules dynamically loadable]), +- STATIC_MODULES=$enableval,STATIC_MODULES=no) +-if test "$STATIC_MODULES" != "no" ; then +- CFLAGS="$CFLAGS -DPAM_STATIC" +- AC_ENABLE_STATIC([yes]) +- AC_ENABLE_SHARED([no]) +-else +-# per default don't build static libraries +- AC_ENABLE_STATIC([no]) +- AC_ENABLE_SHARED([yes]) +-fi +-AM_CONDITIONAL([STATIC_MODULES], [test "$STATIC_MODULES" != "no"]) ++AC_ENABLE_STATIC([no]) ++AC_ENABLE_SHARED([yes]) + + dnl Checks for programs. + AC_PROG_CC +diff --git a/doc/man/pam_sm_acct_mgmt.3.xml b/doc/man/pam_sm_acct_mgmt.3.xml +index 35aa28a..ff99867 100644 +--- a/doc/man/pam_sm_acct_mgmt.3.xml ++++ b/doc/man/pam_sm_acct_mgmt.3.xml +@@ -20,7 +20,7 @@ + #define PAM_SM_ACCOUNT + #include <security/pam_modules.h> + +- PAM_EXTERN int pam_sm_acct_mgmt ++ int pam_sm_acct_mgmt + pam_handle_t *pamh + int flags + int argc +diff --git a/doc/man/pam_sm_authenticate.3.xml b/doc/man/pam_sm_authenticate.3.xml +index 9121aed..4299726 100644 +--- a/doc/man/pam_sm_authenticate.3.xml ++++ b/doc/man/pam_sm_authenticate.3.xml +@@ -20,7 +20,7 @@ + #define PAM_SM_AUTH + #include <security/pam_modules.h> + +- PAM_EXTERN int pam_sm_authenticate ++ int pam_sm_authenticate + pam_handle_t *pamh + int flags + int argc +diff --git a/doc/man/pam_sm_chauthtok.3.xml b/doc/man/pam_sm_chauthtok.3.xml +index d6d3093..d8f36d6 100644 +--- a/doc/man/pam_sm_chauthtok.3.xml ++++ b/doc/man/pam_sm_chauthtok.3.xml +@@ -20,7 +20,7 @@ + #define PAM_SM_PASSWORD + #include <security/pam_modules.h> + +- PAM_EXTERN int pam_sm_chauthtok ++ int pam_sm_chauthtok + pam_handle_t *pamh + int flags + int argc +diff --git a/doc/man/pam_sm_close_session.3.xml b/doc/man/pam_sm_close_session.3.xml +index f2e6718..db579ff 100644 +--- a/doc/man/pam_sm_close_session.3.xml ++++ b/doc/man/pam_sm_close_session.3.xml +@@ -20,7 +20,7 @@ + #define PAM_SM_SESSION + #include <security/pam_modules.h> + +- PAM_EXTERN int pam_sm_close_session ++ int pam_sm_close_session + pam_handle_t *pamh + int flags + int argc +diff --git a/doc/man/pam_sm_open_session.3.xml b/doc/man/pam_sm_open_session.3.xml +index 0851c34..0c9ec77 100644 +--- a/doc/man/pam_sm_open_session.3.xml ++++ b/doc/man/pam_sm_open_session.3.xml +@@ -20,7 +20,7 @@ + #define PAM_SM_SESSION + #include <security/pam_modules.h> + +- PAM_EXTERN int pam_sm_open_session ++ int pam_sm_open_session + pam_handle_t *pamh + int flags + int argc +diff --git a/doc/man/pam_sm_setcred.3.xml b/doc/man/pam_sm_setcred.3.xml +index e557000..5cfe899 100644 +--- a/doc/man/pam_sm_setcred.3.xml ++++ b/doc/man/pam_sm_setcred.3.xml +@@ -20,7 +20,7 @@ + #define PAM_SM_AUTH + #include <security/pam_modules.h> + +- PAM_EXTERN int pam_sm_setcred ++ int pam_sm_setcred + pam_handle_t *pamh + int flags + int argc +diff --git a/libpam/Makefile.am b/libpam/Makefile.am +index ac2a1fb..04a8df0 100644 +--- a/libpam/Makefile.am ++++ b/libpam/Makefile.am +@@ -18,16 +18,11 @@ include_HEADERS = include/security/_pam_compat.h \ + include/security/pam_ext.h include/security/pam_modutil.h + + noinst_HEADERS = pam_prelude.h pam_private.h pam_tokens.h \ +- pam_modutil_private.h pam_static_modules.h ++ pam_modutil_private.h + + libpam_la_LDFLAGS = -no-undefined -version-info 84:1:84 + libpam_la_LIBADD = @LIBAUDIT@ $(LIBPRELUDE_LIBS) @LIBDL@ + +-if STATIC_MODULES +- libpam_la_LIBADD += $(shell ls ../modules/pam_*/*.lo) \ +- @LIBDB@ @LIBCRYPT@ $(NIS_LIBS) @LIBCRACK@ -lutil +- AM_CFLAGS += $(NIS_CFLAGS) +-endif + if HAVE_VERSIONING + libpam_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libpam.map + endif +@@ -38,7 +33,7 @@ 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_get_authtok.c \ + pam_handlers.c pam_item.c \ + pam_misc.c pam_password.c pam_prelude.c \ +- pam_session.c pam_start.c pam_static.c pam_strerror.c \ ++ pam_session.c pam_start.c pam_strerror.c \ + pam_vprompt.c pam_syslog.c pam_dynamic.c pam_audit.c \ + pam_modutil_cleanup.c pam_modutil_getpwnam.c pam_modutil_ioloop.c \ + pam_modutil_getgrgid.c pam_modutil_getpwuid.c pam_modutil_getgrnam.c \ +diff --git a/libpam/include/security/pam_modules.h b/libpam/include/security/pam_modules.h +index 5c516c4..37568e9 100644 +--- a/libpam/include/security/pam_modules.h ++++ b/libpam/include/security/pam_modules.h +@@ -30,80 +30,26 @@ pam_get_data(const pam_handle_t *pamh, const char *module_data_name, + extern int PAM_NONNULL((1,2)) + pam_get_user(pam_handle_t *pamh, const char **user, const char *prompt); + +-#ifdef PAM_STATIC +- +-#define PAM_EXTERN static +- +-struct pam_module { +- const char *name; /* Name of the module */ +- +- /* These are function pointers to the module's key functions. */ +- +- int (*pam_sm_authenticate)(pam_handle_t *pamh, int flags, +- int argc, const char **argv); +- int (*pam_sm_setcred)(pam_handle_t *pamh, int flags, +- int argc, const char **argv); +- int (*pam_sm_acct_mgmt)(pam_handle_t *pamh, int flags, +- int argc, const char **argv); +- int (*pam_sm_open_session)(pam_handle_t *pamh, int flags, +- int argc, const char **argv); +- int (*pam_sm_close_session)(pam_handle_t *pamh, int flags, +- int argc, const char **argv); +- int (*pam_sm_chauthtok)(pam_handle_t *pamh, int flags, +- int argc, const char **argv); +-}; +- +-#else /* !PAM_STATIC */ +- +-#define PAM_EXTERN extern +- +-#endif /* PAM_STATIC */ +- +-/* Lots of files include pam_modules.h that don't need these +- * declared. However, when they are declared static, they +- * need to be defined later. So we have to protect C files +- * that include these without wanting these functions defined.. */ +- +-#if (defined(PAM_STATIC) && defined(PAM_SM_AUTH)) || !defined(PAM_STATIC) +- + /* Authentication API's */ +-PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh, int flags, +- int argc, const char **argv); +-PAM_EXTERN int pam_sm_setcred(pam_handle_t *pamh, int flags, +- int argc, const char **argv); +- +-#endif /*(defined(PAM_STATIC) && defined(PAM_SM_AUTH)) +- || !defined(PAM_STATIC)*/ +- +-#if (defined(PAM_STATIC) && defined(PAM_SM_ACCOUNT)) || !defined(PAM_STATIC) ++int pam_sm_authenticate(pam_handle_t *pamh, int flags, ++ int argc, const char **argv); ++int pam_sm_setcred(pam_handle_t *pamh, int flags, ++ int argc, const char **argv); + + /* Account Management API's */ +-PAM_EXTERN int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, +- int argc, const char **argv); +- +-#endif /*(defined(PAM_STATIC) && defined(PAM_SM_ACCOUNT)) +- || !defined(PAM_STATIC)*/ +- +-#if (defined(PAM_STATIC) && defined(PAM_SM_SESSION)) || !defined(PAM_STATIC) ++int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, ++ int argc, const char **argv); + + /* Session Management API's */ +-PAM_EXTERN int pam_sm_open_session(pam_handle_t *pamh, int flags, +- int argc, const char **argv); +- +-PAM_EXTERN int pam_sm_close_session(pam_handle_t *pamh, int flags, +- int argc, const char **argv); ++int pam_sm_open_session(pam_handle_t *pamh, int flags, ++ int argc, const char **argv); + +-#endif /*(defined(PAM_STATIC) && defined(PAM_SM_SESSION)) +- || !defined(PAM_STATIC)*/ +- +-#if (defined(PAM_STATIC) && defined(PAM_SM_PASSWORD)) || !defined(PAM_STATIC) ++int pam_sm_close_session(pam_handle_t *pamh, int flags, ++ int argc, const char **argv); + + /* Password Management API's */ +-PAM_EXTERN int pam_sm_chauthtok(pam_handle_t *pamh, int flags, +- int argc, const char **argv); +- +-#endif /*(defined(PAM_STATIC) && defined(PAM_SM_PASSWORD)) +- || !defined(PAM_STATIC)*/ ++int pam_sm_chauthtok(pam_handle_t *pamh, int flags, ++ int argc, const char **argv); + + /* The following two flags are for use across the Linux-PAM/module + * interface only. The Application is not permitted to use these +diff --git a/libpam/pam_dynamic.c b/libpam/pam_dynamic.c +index e1155e5..50bfd79 100644 +--- a/libpam/pam_dynamic.c ++++ b/libpam/pam_dynamic.c +@@ -33,8 +33,6 @@ + + #include "pam_private.h" + +-#ifndef PAM_STATIC +- + #ifdef PAM_SHL + # include + #elif defined(PAM_DYLD) +@@ -139,4 +137,3 @@ _pam_dlerror (void) + #endif + } + +-#endif +diff --git a/libpam/pam_handlers.c b/libpam/pam_handlers.c +index bc3fd9d..91cccad 100644 +--- a/libpam/pam_handlers.c ++++ b/libpam/pam_handlers.c +@@ -665,9 +665,7 @@ _pam_load_module(pam_handle_t *pamh, const char *mod_path, int handler_type) + { + int x = 0; + int success; +-#ifndef PAM_STATIC + char *mod_full_isa_path=NULL, *isa=NULL; +-#endif + struct loaded_module *mod; + + D(("_pam_load_module: loading module `%s'", mod_path)); +@@ -701,27 +699,6 @@ _pam_load_module(pam_handle_t *pamh, const char *mod_path, int handler_type) + /* Be pessimistic... */ + success = PAM_ABORT; + +-#ifdef PAM_STATIC +- /* Only load static function if function was not found dynamically. +- * This code should work even if no dynamic loading is available. */ +- if (success != PAM_SUCCESS) { +- D(("_pam_load_module: open static handler %s", mod_path)); +- mod->dl_handle = _pam_open_static_handler(pamh, mod_path); +- if (mod->dl_handle == NULL) { +- D(("_pam_load_module: unable to find static handler %s", +- mod_path)); +- if (handler_type != PAM_HT_SILENT_MODULE) +- pam_syslog(pamh, LOG_ERR, +- "unable to open static handler %s", mod_path); +- /* Didn't find module in dynamic or static..will mark bad */ +- } else { +- D(("static module added successfully")); +- success = PAM_SUCCESS; +- mod->type = PAM_MT_STATIC_MOD; +- pamh->handlers.modules_used++; +- } +- } +-#else + D(("_pam_load_module: _pam_dlopen(%s)", mod_path)); + mod->dl_handle = _pam_dlopen(mod_path); + D(("_pam_load_module: _pam_dlopen'ed")); +@@ -758,7 +735,6 @@ _pam_load_module(pam_handle_t *pamh, const char *mod_path, int handler_type) + mod->type = PAM_MT_DYNAMIC_MOD; + pamh->handlers.modules_used++; + } +-#endif + + if (success != PAM_SUCCESS) { /* add a malformed module */ + mod->dl_handle = NULL; +@@ -869,16 +845,8 @@ int _pam_add_handler(pam_handle_t *pamh + } + + /* are the modules reliable? */ +- if ( +-#ifdef PAM_STATIC +- mod_type != PAM_MT_STATIC_MOD +- && +-#else +- mod_type != PAM_MT_DYNAMIC_MOD +- && +-#endif +- mod_type != PAM_MT_FAULTY_MOD +- ) { ++ if (mod_type != PAM_MT_DYNAMIC_MOD && ++ mod_type != PAM_MT_FAULTY_MOD) { + D(("_pam_add_handlers: illegal module library type; %d", mod_type)); + pam_syslog(pamh, LOG_ERR, + "internal error: module library type not known: %s;%d", +@@ -888,30 +856,15 @@ int _pam_add_handler(pam_handle_t *pamh + + /* now identify this module's functions - for non-faulty modules */ + +-#ifdef PAM_STATIC +- if ((mod_type == PAM_MT_STATIC_MOD) && +- (func = (servicefn)_pam_get_static_sym(mod->dl_handle, sym)) == NULL) { +- pam_syslog(pamh, LOG_ERR, "unable to resolve static symbol: %s", sym); +- } +-#else + if ((mod_type == PAM_MT_DYNAMIC_MOD) && + !(func = _pam_dlsym(mod->dl_handle, sym)) ) { + pam_syslog(pamh, LOG_ERR, "unable to resolve symbol: %s", sym); + } +-#endif + if (sym2) { +-#ifdef PAM_STATIC +- if ((mod_type == PAM_MT_STATIC_MOD) && +- (func2 = (servicefn)_pam_get_static_sym(mod->dl_handle, sym2)) +- == NULL) { +- pam_syslog(pamh, LOG_ERR, "unable to resolve symbol: %s", sym2); +- } +-#else + if ((mod_type == PAM_MT_DYNAMIC_MOD) && + !(func2 = _pam_dlsym(mod->dl_handle, sym2)) ) { + pam_syslog(pamh, LOG_ERR, "unable to resolve symbol: %s", sym2); + } +-#endif + } + + /* here func (and perhaps func2) point to the appropriate functions */ +@@ -994,11 +947,9 @@ int _pam_free_handlers(pam_handle_t *pamh) + while (pamh->handlers.modules_used) { + D(("_pam_free_handlers: dlclose(%s)", mod->name)); + free(mod->name); +-#ifndef PAM_STATIC + if (mod->type == PAM_MT_DYNAMIC_MOD) { + _pam_dlclose(mod->dl_handle); + } +-#endif + mod++; + pamh->handlers.modules_used--; + } +diff --git a/libpam/pam_private.h b/libpam/pam_private.h +index 1138277..7ff9f75 100644 +--- a/libpam/pam_private.h ++++ b/libpam/pam_private.h +@@ -241,22 +241,10 @@ void _pam_await_timer(pam_handle_t *pamh, int status); + typedef void (*voidfunc(void))(void); + typedef int (*servicefn)(pam_handle_t *, int, int, char **); + +-#ifdef PAM_STATIC +-/* The next two in ../modules/_pam_static/pam_static.c */ +- +-/* Return pointer to data structure used to define a static module */ +-struct pam_module * _pam_open_static_handler (pam_handle_t *pamh, +- const char *path); +- +-/* Return pointer to function requested from static module */ +- +-voidfunc *_pam_get_static_sym(struct pam_module *mod, const char *symname); +-#else + void *_pam_dlopen (const char *mod_path); + servicefn _pam_dlsym (void *handle, const char *symbol); + void _pam_dlclose (void *handle); + const char *_pam_dlerror (void); +-#endif + + /* For now we just use a stack and linear search for module data. */ + /* If it becomes apparent that there is a lot of data, it should */ +diff --git a/libpam/pam_static.c b/libpam/pam_static.c +deleted file mode 100644 +index 511026d..0000000 +--- a/libpam/pam_static.c ++++ /dev/null +@@ -1,127 +0,0 @@ +-/* +- * pam_static.c -- static module loading helper functions +- * +- * created by Michael K. Johnson, johnsonm@redhat.com +- */ +- +-/* This whole file is only used for PAM_STATIC */ +- +-#ifdef PAM_STATIC +- +-#include +-#include +-#include +- +-#include "pam_private.h" +- +-#include "pam_static_modules.h" +- +-/* +- * and now for the functions +- */ +- +-/* Return pointer to data structure used to define a static module */ +-struct pam_module * +-_pam_open_static_handler (pam_handle_t *pamh, const char *path) +-{ +- int i; +- const char *clpath = path; +- char *lpath, *end; +- +- if (strchr(clpath, '/')) { +- /* ignore path and leading "/" */ +- clpath = strrchr(path, '/') + 1; +- } +- /* create copy to muck with (must free before return) */ +- lpath = _pam_strdup(clpath); +- /* chop .so off copy if it exists (or other extension on other +- platform...) */ +- end = strstr(lpath, ".so"); +- if (end) { +- *end = '\0'; +- } +- +- /* now go find the module */ +- for (i = 0; static_modules[i] != NULL; i++) { +- D(("%s=?%s\n", lpath, static_modules[i]->name)); +- if (static_modules[i]->name && +- ! strcmp(static_modules[i]->name, lpath)) { +- break; +- } +- } +- +- if (static_modules[i] == NULL) { +- pam_syslog (pamh, LOG_ERR, "no static module named %s", lpath); +- } +- +- free(lpath); +- return (static_modules[i]); +-} +- +-/* Return pointer to function requested from static module +- * Can't just return void *, because ANSI C disallows casting a +- * pointer to a function to a void *... +- * This definition means: +- * _pam_get_static_sym is a function taking two arguments and +- * returning a pointer to a function which takes no arguments +- * and returns void... */ +-voidfunc *_pam_get_static_sym(struct pam_module *mod, const char *symname) { +- +- if (! strcmp(symname, "pam_sm_authenticate")) { +- return ((voidfunc *)mod->pam_sm_authenticate); +- } else if (! strcmp(symname, "pam_sm_setcred")) { +- return ((voidfunc *)mod->pam_sm_setcred); +- } else if (! strcmp(symname, "pam_sm_acct_mgmt")) { +- return ((voidfunc *)mod->pam_sm_acct_mgmt); +- } else if (! strcmp(symname, "pam_sm_open_session")) { +- return ((voidfunc *)mod->pam_sm_open_session); +- } else if (! strcmp(symname, "pam_sm_close_session")) { +- return ((voidfunc *)mod->pam_sm_close_session); +- } else if (! strcmp(symname, "pam_sm_chauthtok")) { +- return ((voidfunc *)mod->pam_sm_chauthtok); +- } +- /* getting to this point is an error */ +- return ((voidfunc *)NULL); +-} +- +-#else /* ! PAM_STATIC */ +- +-typedef int blarg; +- +-#endif /* ! PAM_STATIC */ +- +-/* +- * Copyright (C) 1995 by Red Hat Software, Michael K. Johnson +- * All rights reserved +- * +- * Redistribution and use in source and binary forms, with or without +- * modification, are permitted provided that the following conditions +- * are met: +- * 1. Redistributions of source code must retain the above copyright +- * notice, and the entire permission notice in its entirety, +- * including the disclaimer of warranties. +- * 2. Redistributions in binary form must reproduce the above copyright +- * notice, this list of conditions and the following disclaimer in the +- * documentation and/or other materials provided with the distribution. +- * 3. The name of the author may not be used to endorse or promote +- * products derived from this software without specific prior +- * written permission. +- * +- * ALTERNATIVELY, this product may be distributed under the terms of +- * the GNU Public License, in which case the provisions of the GPL are +- * required INSTEAD OF the above restrictions. (This clause is +- * necessary due to a potential bad interaction between the GPL and +- * the restrictions contained in a BSD-style copyright.) +- * +- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED +- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +- * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +- * OF THE POSSIBILITY OF SUCH DAMAGE. +- */ +diff --git a/libpam/pam_static_modules.h b/libpam/pam_static_modules.h +deleted file mode 100644 +index 698989b..0000000 +--- a/libpam/pam_static_modules.h ++++ /dev/null +@@ -1,148 +0,0 @@ +-/* +- * Redistribution and use in source and binary forms, with or without +- * modification, are permitted provided that the following conditions +- * are met: +- * 1. Redistributions of source code must retain the above copyright +- * notice, and the entire permission notice in its entirety, +- * including the disclaimer of warranties. +- * 2. Redistributions in binary form must reproduce the above copyright +- * notice, this list of conditions and the following disclaimer in the +- * documentation and/or other materials provided with the distribution. +- * 3. The name of the author may not be used to endorse or promote +- * products derived from this software without specific prior +- * written permission. +- * +- * ALTERNATIVELY, this product may be distributed under the terms of +- * the GNU Public License, in which case the provisions of the GPL are +- * required INSTEAD OF the above restrictions. (This clause is +- * necessary due to a potential bad interaction between the GPL and +- * the restrictions contained in a BSD-style copyright.) +- * +- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED +- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +- * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +- * OF THE POSSIBILITY OF SUCH DAMAGE. +- */ +- +-/* Pointers to static module data. */ +- +-extern struct pam_module _pam_access_modstruct; +-extern struct pam_module _pam_cracklib_modstruct; +-extern struct pam_module _pam_debug_modstruct; +-extern struct pam_module _pam_deny_modstruct; +-extern struct pam_module _pam_echo_modstruct; +-extern struct pam_module _pam_env_modstruct; +-extern struct pam_module _pam_exec_modstruct; +-extern struct pam_module _pam_faildelay_modstruct; +-extern struct pam_module _pam_filter_modstruct; +-extern struct pam_module _pam_ftp_modstruct; +-extern struct pam_module _pam_group_modstruct; +-extern struct pam_module _pam_issue_modstruct; +-#ifdef HAVE_KEY_MANAGEMENT +-extern struct pam_module _pam_keyinit_modstruct; +-#endif +-extern struct pam_module _pam_lastlog_modstruct; +-extern struct pam_module _pam_limits_modstruct; +-extern struct pam_module _pam_listfile_modstruct; +-extern struct pam_module _pam_localuser_modstruct; +-extern struct pam_module _pam_loginuid_modstruct; +-extern struct pam_module _pam_mail_modstruct; +-extern struct pam_module _pam_mkhomedir_modstruct; +-extern struct pam_module _pam_motd_modstruct; +-#ifdef HAVE_UNSHARE +-extern struct pam_module _pam_namespace_modstruct; +-#endif +-extern struct pam_module _pam_nologin_modstruct; +-extern struct pam_module _pam_permit_modstruct; +-extern struct pam_module _pam_pwhistory_modstruct; +-extern struct pam_module _pam_rhosts_modstruct; +-extern struct pam_module _pam_rootok_modstruct; +-extern struct pam_module _pam_securetty_modstruct; +-#ifdef WITH_SELINUX +-extern struct pam_module _pam_selinux_modstruct; +-extern struct pam_module _pam_sepermit_modstruct; +-#endif +-extern struct pam_module _pam_shells_modstruct; +-extern struct pam_module _pam_stress_modstruct; +-extern struct pam_module _pam_succeed_if_modstruct; +-extern struct pam_module _pam_tally_modstruct; +-extern struct pam_module _pam_tally2_modstruct; +-extern struct pam_module _pam_time_modstruct; +-extern struct pam_module _pam_timestamp_modstruct; +-#ifdef HAVE_AUDIT_TTY_STATUS +-extern struct pam_module _pam_tty_audit_modstruct; +-#endif +-extern struct pam_module _pam_umask_modstruct; +-extern struct pam_module _pam_unix_modstruct; +-extern struct pam_module _pam_userdb_modstruct; +-extern struct pam_module _pam_warn_modstruct; +-extern struct pam_module _pam_wheel_modstruct; +-extern struct pam_module _pam_xauth_modstruct; +- +-/* and here is a structure that connects libpam to the above static +- modules. */ +- +-static struct pam_module *static_modules[] = { +- &_pam_access_modstruct, +-#ifdef HAVE_LIBCRACK +- &_pam_cracklib_modstruct, +-#endif +- &_pam_debug_modstruct, +- &_pam_deny_modstruct, +- &_pam_echo_modstruct, +- &_pam_env_modstruct, +- &_pam_exec_modstruct, +- &_pam_faildelay_modstruct, +- &_pam_filter_modstruct, +- &_pam_ftp_modstruct, +- &_pam_group_modstruct, +- &_pam_issue_modstruct, +-#ifdef HAVE_KEY_MANAGEMENT +- &_pam_keyinit_modstruct, +-#endif +- &_pam_lastlog_modstruct, +- &_pam_limits_modstruct, +- &_pam_listfile_modstruct, +- &_pam_localuser_modstruct, +- &_pam_loginuid_modstruct, +- &_pam_mail_modstruct, +- &_pam_mkhomedir_modstruct, +- &_pam_motd_modstruct, +-#ifdef HAVE_UNSHARE +- &_pam_namespace_modstruct, +-#endif +- &_pam_nologin_modstruct, +- &_pam_permit_modstruct, +- &_pam_pwhistory_modstruct, +- &_pam_rhosts_modstruct, +- &_pam_rootok_modstruct, +- &_pam_securetty_modstruct, +-#ifdef WITH_SELINUX +- &_pam_selinux_modstruct, +- &_pam_sepermit_modstruct, +-#endif +- &_pam_shells_modstruct, +- &_pam_stress_modstruct, +- &_pam_succeed_if_modstruct, +- &_pam_tally_modstruct, +- &_pam_tally2_modstruct, +- &_pam_time_modstruct, +- &_pam_timestamp_modstruct, +-#ifdef HAVE_AUDIT_TTY_STATUS +- &_pam_tty_audit_modstruct, +-#endif +- &_pam_umask_modstruct, +- &_pam_unix_modstruct, +- &_pam_userdb_modstruct, +- &_pam_warn_modstruct, +- &_pam_wheel_modstruct, +- &_pam_xauth_modstruct, +- NULL +-}; +diff --git a/modules/pam_access/pam_access.c b/modules/pam_access/pam_access.c +index d4c847a..3ac1ad0 100644 +--- a/modules/pam_access/pam_access.c ++++ b/modules/pam_access/pam_access.c +@@ -792,7 +792,7 @@ network_netmask_match (pam_handle_t *pamh, + + /* --- public PAM management functions --- */ + +-PAM_EXTERN int ++int + pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -904,35 +904,35 @@ pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED, + } + } + +-PAM_EXTERN int ++int + pam_sm_setcred (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return PAM_IGNORE; + } + +-PAM_EXTERN int ++int + pam_sm_acct_mgmt (pam_handle_t *pamh, int flags, + int argc, const char **argv) + { + return pam_sm_authenticate (pamh, flags, argc, argv); + } + +-PAM_EXTERN int ++int + pam_sm_open_session(pam_handle_t *pamh, int flags, + int argc, const char **argv) + { + return pam_sm_authenticate(pamh, flags, argc, argv); + } + +-PAM_EXTERN int ++int + pam_sm_close_session(pam_handle_t *pamh, int flags, + int argc, const char **argv) + { + return pam_sm_authenticate(pamh, flags, argc, argv); + } + +-PAM_EXTERN int ++int + pam_sm_chauthtok(pam_handle_t *pamh, int flags, + int argc, const char **argv) + { +@@ -940,18 +940,3 @@ pam_sm_chauthtok(pam_handle_t *pamh, int flags, + } + + /* end of module definition */ +- +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_access_modstruct = { +- "pam_access", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- pam_sm_open_session, +- pam_sm_close_session, +- pam_sm_chauthtok +-}; +-#endif +diff --git a/modules/pam_cracklib/pam_cracklib.c b/modules/pam_cracklib/pam_cracklib.c +index 5eefd0b..1654931 100644 +--- a/modules/pam_cracklib/pam_cracklib.c ++++ b/modules/pam_cracklib/pam_cracklib.c +@@ -728,8 +728,8 @@ static int _pam_unix_approve_pass(pam_handle_t *pamh, + /* The Main Thing (by Cristian Gafton, CEO at this module :-) + * (stolen from http://home.netscape.com) + */ +-PAM_EXTERN int pam_sm_chauthtok(pam_handle_t *pamh, int flags, +- int argc, const char **argv) ++int ++pam_sm_chauthtok(pam_handle_t *pamh, int flags, int argc, const char **argv) + { + unsigned int ctrl; + struct cracklib_options options; +@@ -858,19 +858,6 @@ PAM_EXTERN int pam_sm_chauthtok(pam_handle_t *pamh, int flags, + + + +-#ifdef PAM_STATIC +-/* static module data */ +-struct pam_module _pam_cracklib_modstruct = { +- "pam_cracklib", +- NULL, +- NULL, +- NULL, +- NULL, +- NULL, +- pam_sm_chauthtok +-}; +-#endif +- + /* + * Copyright (c) Cristian Gafton , 1996. + * All rights reserved +diff --git a/modules/pam_debug/pam_debug.c b/modules/pam_debug/pam_debug.c +index a65d1bf..9b68d38 100644 +--- a/modules/pam_debug/pam_debug.c ++++ b/modules/pam_debug/pam_debug.c +@@ -75,7 +75,6 @@ static int parse_args(int retval, const char *event, + return retval; + } + +-PAM_EXTERN + int pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -103,7 +102,6 @@ int pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED, + return retval; + } + +-PAM_EXTERN + int pam_sm_setcred(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -112,7 +110,6 @@ int pam_sm_setcred(pam_handle_t *pamh, int flags UNUSED, + + /* --- account management functions --- */ + +-PAM_EXTERN + int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -121,7 +118,6 @@ int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags UNUSED, + + /* --- password management --- */ + +-PAM_EXTERN + int pam_sm_chauthtok(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -134,14 +130,12 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags UNUSED, + + /* --- session management --- */ + +-PAM_EXTERN + int pam_sm_open_session(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { + return parse_args(PAM_SUCCESS, "open_session", pamh, argc, argv); + } + +-PAM_EXTERN + int pam_sm_close_session(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -149,19 +143,3 @@ int pam_sm_close_session(pam_handle_t *pamh, int flags UNUSED, + } + + /* end of module definition */ +- +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_debug_modstruct = { +- "pam_debug", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- pam_sm_open_session, +- pam_sm_close_session, +- pam_sm_chauthtok +-}; +- +-#endif +diff --git a/modules/pam_deny/pam_deny.c b/modules/pam_deny/pam_deny.c +index 544c5bd..155a1f5 100644 +--- a/modules/pam_deny/pam_deny.c ++++ b/modules/pam_deny/pam_deny.c +@@ -25,14 +25,14 @@ + + /* --- authentication management functions --- */ + +-PAM_EXTERN int ++int + pam_sm_authenticate(pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return PAM_AUTH_ERR; + } + +-PAM_EXTERN int ++int + pam_sm_setcred(pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -41,7 +41,7 @@ pam_sm_setcred(pam_handle_t *pamh UNUSED, int flags UNUSED, + + /* --- account management functions --- */ + +-PAM_EXTERN int ++int + pam_sm_acct_mgmt(pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -50,7 +50,7 @@ pam_sm_acct_mgmt(pam_handle_t *pamh UNUSED, int flags UNUSED, + + /* --- password management --- */ + +-PAM_EXTERN int ++int + pam_sm_chauthtok(pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -59,14 +59,14 @@ pam_sm_chauthtok(pam_handle_t *pamh UNUSED, int flags UNUSED, + + /* --- session management --- */ + +-PAM_EXTERN int ++int + pam_sm_open_session(pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return PAM_SESSION_ERR; + } + +-PAM_EXTERN int ++int + pam_sm_close_session(pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -74,16 +74,3 @@ pam_sm_close_session(pam_handle_t *pamh UNUSED, int flags UNUSED, + } + + /* end of module definition */ +- +-/* static module data */ +-#ifdef PAM_STATIC +-struct pam_module _pam_deny_modstruct = { +- "pam_deny", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- pam_sm_open_session, +- pam_sm_close_session, +- pam_sm_chauthtok +-}; +-#endif +diff --git a/modules/pam_echo/pam_echo.c b/modules/pam_echo/pam_echo.c +index d0879fb..860ff0a 100644 +--- a/modules/pam_echo/pam_echo.c ++++ b/modules/pam_echo/pam_echo.c +@@ -262,18 +262,3 @@ pam_sm_chauthtok (pam_handle_t *pamh, int flags, int argc, + return PAM_IGNORE; + } + +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_echo_modstruct = { +- "pam_echo", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- pam_sm_open_session, +- pam_sm_close_session, +- pam_sm_chauthtok, +-}; +- +-#endif +diff --git a/modules/pam_env/pam_env.c b/modules/pam_env/pam_env.c +index 1bfdf08..0b8002f 100644 +--- a/modules/pam_env/pam_env.c ++++ b/modules/pam_env/pam_env.c +@@ -768,7 +768,7 @@ static void _clean_var(VAR *var) + + /* --- authentication management functions (only) --- */ + +-PAM_EXTERN int ++int + pam_sm_authenticate (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -839,7 +839,7 @@ handle_env (pam_handle_t *pamh, int argc, const char **argv) + return retval; + } + +-PAM_EXTERN int ++int + pam_sm_acct_mgmt (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -847,7 +847,7 @@ pam_sm_acct_mgmt (pam_handle_t *pamh UNUSED, int flags UNUSED, + return PAM_SERVICE_ERR; + } + +-PAM_EXTERN int ++int + pam_sm_setcred (pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -855,7 +855,7 @@ pam_sm_setcred (pam_handle_t *pamh, int flags UNUSED, + return handle_env (pamh, argc, argv); + } + +-PAM_EXTERN int ++int + pam_sm_open_session (pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -863,7 +863,7 @@ pam_sm_open_session (pam_handle_t *pamh, int flags UNUSED, + return handle_env (pamh, argc, argv); + } + +-PAM_EXTERN int ++int + pam_sm_close_session (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -871,7 +871,7 @@ pam_sm_close_session (pam_handle_t *pamh UNUSED, int flags UNUSED, + return PAM_SUCCESS; + } + +-PAM_EXTERN int ++int + pam_sm_chauthtok (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -879,20 +879,4 @@ pam_sm_chauthtok (pam_handle_t *pamh UNUSED, int flags UNUSED, + return PAM_SERVICE_ERR; + } + +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_env_modstruct = { +- "pam_env", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- pam_sm_open_session, +- pam_sm_close_session, +- pam_sm_chauthtok, +-}; +- +-#endif +- + /* end of module definition */ +diff --git a/modules/pam_exec/pam_exec.c b/modules/pam_exec/pam_exec.c +index 17ba6ca..0ab6548 100644 +--- a/modules/pam_exec/pam_exec.c ++++ b/modules/pam_exec/pam_exec.c +@@ -467,14 +467,14 @@ call_exec (const char *pam_type, pam_handle_t *pamh, + return PAM_SYSTEM_ERR; /* will never be reached. */ + } + +-PAM_EXTERN int ++int + pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { + return call_exec ("auth", pamh, argc, argv); + } + +-PAM_EXTERN int ++int + pam_sm_setcred (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -483,7 +483,7 @@ pam_sm_setcred (pam_handle_t *pamh UNUSED, int flags UNUSED, + + /* password updating functions */ + +-PAM_EXTERN int ++int + pam_sm_chauthtok(pam_handle_t *pamh, int flags, + int argc, const char **argv) + { +@@ -492,35 +492,23 @@ pam_sm_chauthtok(pam_handle_t *pamh, int flags, + return call_exec ("password", pamh, argc, argv); + } + +-PAM_EXTERN int ++int + pam_sm_acct_mgmt(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { + return call_exec ("account", pamh, argc, argv); + } + +-PAM_EXTERN int ++int + pam_sm_open_session(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { + return call_exec ("open_session", pamh, argc, argv); + } + +-PAM_EXTERN int ++int + pam_sm_close_session(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { + return call_exec ("close_session", pamh, argc, argv); + } +- +-#ifdef PAM_STATIC +-struct pam_module _pam_exec_modstruct = { +- "pam_exec", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- pam_sm_open_session, +- pam_sm_close_session, +- pam_sm_chauthtok, +-}; +-#endif +diff --git a/modules/pam_faildelay/pam_faildelay.c b/modules/pam_faildelay/pam_faildelay.c +index 072b7dd..7ea8f83 100644 +--- a/modules/pam_faildelay/pam_faildelay.c ++++ b/modules/pam_faildelay/pam_faildelay.c +@@ -152,7 +152,6 @@ search_key (const char *filename) + + /* --- authentication management functions (only) --- */ + +-PAM_EXTERN + int pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -204,28 +203,10 @@ int pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED, + return i; + } + +-PAM_EXTERN + int pam_sm_setcred(pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return PAM_IGNORE; + } + +- +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_faildelay_modstruct = { +- "pam_faildelay", +- pam_sm_authenticate, +- pam_sm_setcred, +- NULL, +- NULL, +- NULL, +- NULL, +-}; +- +-#endif +- + /* end of module definition */ +diff --git a/modules/pam_filter/pam_filter.c b/modules/pam_filter/pam_filter.c +index 9935d99..6e6a0cf 100644 +--- a/modules/pam_filter/pam_filter.c ++++ b/modules/pam_filter/pam_filter.c +@@ -663,23 +663,23 @@ static int need_a_filter(pam_handle_t *pamh + + /* ------------------ authentication ----------------- */ + +-PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh +- , int flags, int argc, const char **argv) ++int pam_sm_authenticate(pam_handle_t *pamh, ++ int flags, int argc, const char **argv) + { + return need_a_filter(pamh, flags, argc, argv + , "authenticate", FILTER_RUN1); + } + +-PAM_EXTERN int pam_sm_setcred(pam_handle_t *pamh, int flags +- , int argc, const char **argv) ++int pam_sm_setcred(pam_handle_t *pamh, int flags, ++ int argc, const char **argv) + { + return need_a_filter(pamh, flags, argc, argv, "setcred", FILTER_RUN2); + } + + /* --------------- account management ---------------- */ + +-PAM_EXTERN int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, int argc, +- const char **argv) ++int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, int argc, ++ const char **argv) + { + return need_a_filter(pamh, flags, argc, argv + , "setcred", FILTER_RUN1|FILTER_RUN2 ); +@@ -687,15 +687,15 @@ PAM_EXTERN int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, int argc, + + /* --------------- session management ---------------- */ + +-PAM_EXTERN int pam_sm_open_session(pam_handle_t *pamh, int flags +- , int argc, const char **argv) ++int pam_sm_open_session(pam_handle_t *pamh, int flags, ++ int argc, const char **argv) + { + return need_a_filter(pamh, flags, argc, argv + , "open_session", FILTER_RUN1); + } + +-PAM_EXTERN int pam_sm_close_session(pam_handle_t *pamh, int flags +- , int argc, const char **argv) ++int pam_sm_close_session(pam_handle_t *pamh, int flags, ++ int argc, const char **argv) + { + return need_a_filter(pamh, flags, argc, argv + , "close_session", FILTER_RUN2); +@@ -704,8 +704,8 @@ PAM_EXTERN int pam_sm_close_session(pam_handle_t *pamh, int flags + /* --------- updating authentication tokens --------- */ + + +-PAM_EXTERN int pam_sm_chauthtok(pam_handle_t *pamh, int flags +- , int argc, const char **argv) ++int pam_sm_chauthtok(pam_handle_t *pamh, int flags, ++ int argc, const char **argv) + { + int runN; + +@@ -720,19 +720,3 @@ PAM_EXTERN int pam_sm_chauthtok(pam_handle_t *pamh, int flags + + return need_a_filter(pamh, flags, argc, argv, "chauthtok", runN); + } +- +-#ifdef PAM_STATIC +- +-/* ------------ stuff for static modules ------------ */ +- +-struct pam_module _pam_filter_modstruct = { +- "pam_filter", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- pam_sm_open_session, +- pam_sm_close_session, +- pam_sm_chauthtok, +-}; +- +-#endif +diff --git a/modules/pam_ftp/pam_ftp.c b/modules/pam_ftp/pam_ftp.c +index 221d8f8..6b6cf2a 100644 +--- a/modules/pam_ftp/pam_ftp.c ++++ b/modules/pam_ftp/pam_ftp.c +@@ -111,7 +111,7 @@ static int lookup(const char *name, const char *list, const char **_user) + + /* --- authentication management functions (only) --- */ + +-PAM_EXTERN int ++int + pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -210,28 +210,11 @@ pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED, + } + } + +-PAM_EXTERN int ++int + pam_sm_setcred (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return PAM_IGNORE; + } + +- +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_ftp_modstruct = { +- "pam_ftp", +- pam_sm_authenticate, +- pam_sm_setcred, +- NULL, +- NULL, +- NULL, +- NULL, +-}; +- +-#endif +- + /* end of module definition */ +diff --git a/modules/pam_group/pam_group.c b/modules/pam_group/pam_group.c +index be5f20f..da8237f 100644 +--- a/modules/pam_group/pam_group.c ++++ b/modules/pam_group/pam_group.c +@@ -739,14 +739,14 @@ static int check_account(pam_handle_t *pamh, const char *service, + + /* --- public authentication management functions --- */ + +-PAM_EXTERN int ++int + pam_sm_authenticate (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return PAM_IGNORE; + } + +-PAM_EXTERN int ++int + pam_sm_setcred (pam_handle_t *pamh, int flags, + int argc UNUSED, const char **argv UNUSED) + { +@@ -817,18 +817,3 @@ pam_sm_setcred (pam_handle_t *pamh, int flags, + } + + /* end of module definition */ +- +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_group_modstruct = { +- "pam_group", +- pam_sm_authenticate, +- pam_sm_setcred, +- NULL, +- NULL, +- NULL, +- NULL +-}; +-#endif +diff --git a/modules/pam_issue/pam_issue.c b/modules/pam_issue/pam_issue.c +index 060baad..5b5ee41 100644 +--- a/modules/pam_issue/pam_issue.c ++++ b/modules/pam_issue/pam_issue.c +@@ -42,7 +42,7 @@ static int read_issue_quoted(pam_handle_t *pamh, FILE *fp, char **prompt); + + /* --- authentication management functions (only) --- */ + +-PAM_EXTERN int ++int + pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -120,7 +120,7 @@ pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED, + return (retval == PAM_SUCCESS) ? PAM_IGNORE : retval; + } + +-PAM_EXTERN int ++int + pam_sm_setcred (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -291,20 +291,4 @@ read_issue_quoted(pam_handle_t *pamh, FILE *fp, char **prompt) + return PAM_SUCCESS; + } + +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_issue_modstruct = { +- "pam_issue", +- pam_sm_authenticate, +- pam_sm_setcred, +- NULL, +- NULL, +- NULL, +- NULL, +-}; +- +-#endif +- + /* end of module definition */ +diff --git a/modules/pam_keyinit/pam_keyinit.c b/modules/pam_keyinit/pam_keyinit.c +index f82eead..5dd7b06 100644 +--- a/modules/pam_keyinit/pam_keyinit.c ++++ b/modules/pam_keyinit/pam_keyinit.c +@@ -165,7 +165,6 @@ static void kill_keyrings(pam_handle_t *pamh) + /* + * open a PAM session by making sure there's a session keyring + */ +-PAM_EXTERN + int pam_sm_open_session(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -238,7 +237,6 @@ int pam_sm_open_session(pam_handle_t *pamh, int flags UNUSED, + /* + * close a PAM session by revoking the session keyring if requested + */ +-PAM_EXTERN + int pam_sm_close_session(pam_handle_t *pamh, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -253,17 +251,3 @@ int pam_sm_close_session(pam_handle_t *pamh, int flags UNUSED, + return PAM_SUCCESS; + } + +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_keyinit_modstruct = { +- "pam_keyinit", +- NULL, +- NULL, +- NULL, +- pam_sm_open_session, +- pam_sm_close_session, +- NULL +-}; +-#endif +diff --git a/modules/pam_lastlog/pam_lastlog.c b/modules/pam_lastlog/pam_lastlog.c +index 76a33e4..1e2f08d 100644 +--- a/modules/pam_lastlog/pam_lastlog.c ++++ b/modules/pam_lastlog/pam_lastlog.c +@@ -566,7 +566,7 @@ cleanup: + } + + /* --- authentication (locking out inactive users) functions --- */ +-PAM_EXTERN int ++int + pam_sm_authenticate(pam_handle_t *pamh, int flags, + int argc, const char **argv) + { +@@ -636,14 +636,14 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags, + return PAM_SUCCESS; + } + +-PAM_EXTERN int ++int + pam_sm_setcred(pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return PAM_SUCCESS; + } + +-PAM_EXTERN int ++int + pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, + int argc, const char **argv) + { +@@ -652,7 +652,7 @@ pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, + + /* --- session management functions --- */ + +-PAM_EXTERN int ++int + pam_sm_open_session(pam_handle_t *pamh, int flags, + int argc, const char **argv) + { +@@ -702,7 +702,7 @@ pam_sm_open_session(pam_handle_t *pamh, int flags, + return retval; + } + +-PAM_EXTERN int ++int + pam_sm_close_session (pam_handle_t *pamh, int flags, + int argc, const char **argv) + { +@@ -719,20 +719,4 @@ pam_sm_close_session (pam_handle_t *pamh, int flags, + return PAM_SUCCESS; + } + +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_lastlog_modstruct = { +- "pam_lastlog", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- pam_sm_open_session, +- pam_sm_close_session, +- NULL, +-}; +- +-#endif +- + /* end of module definition */ +diff --git a/modules/pam_limits/pam_limits.c b/modules/pam_limits/pam_limits.c +index eabc856..d63c683 100644 +--- a/modules/pam_limits/pam_limits.c ++++ b/modules/pam_limits/pam_limits.c +@@ -1002,7 +1002,7 @@ static int setup_limits(pam_handle_t *pamh, + } + + /* now the session stuff */ +-PAM_EXTERN int ++int + pam_sm_open_session (pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -1096,7 +1096,7 @@ out: + return PAM_SUCCESS; + } + +-PAM_EXTERN int ++int + pam_sm_close_session (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -1104,21 +1104,6 @@ pam_sm_close_session (pam_handle_t *pamh UNUSED, int flags UNUSED, + return PAM_SUCCESS; + } + +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_limits_modstruct = { +- "pam_limits", +- NULL, +- NULL, +- NULL, +- pam_sm_open_session, +- pam_sm_close_session, +- NULL +-}; +-#endif +- + /* + * Copyright (c) Cristian Gafton, 1996-1997, + * All rights reserved. +diff --git a/modules/pam_listfile/pam_listfile.c b/modules/pam_listfile/pam_listfile.c +index 2af2afd..c236406 100644 +--- a/modules/pam_listfile/pam_listfile.c ++++ b/modules/pam_listfile/pam_listfile.c +@@ -53,7 +53,7 @@ + + #define LESSER(a, b) ((a) < (b) ? (a) : (b)) + +-PAM_EXTERN int ++int + pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -370,55 +370,37 @@ pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED, + } + } + +-PAM_EXTERN int ++int + pam_sm_setcred (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return PAM_SUCCESS; + } + +-PAM_EXTERN int ++int + pam_sm_acct_mgmt (pam_handle_t *pamh, int flags, + int argc, const char **argv) + { + return pam_sm_authenticate(pamh, flags, argc, argv); + } + +-PAM_EXTERN int ++int + pam_sm_open_session (pam_handle_t *pamh, int flags, + int argc, const char **argv) + { + return pam_sm_authenticate(pamh, flags, argc, argv); + } + +-PAM_EXTERN int ++int + pam_sm_close_session (pam_handle_t *pamh, int flags, + int argc, const char **argv) + { + return pam_sm_authenticate(pamh, flags, argc, argv); + } + +-PAM_EXTERN int ++int + pam_sm_chauthtok (pam_handle_t *pamh, int flags, + int argc, const char **argv) + { + return pam_sm_authenticate(pamh, flags, argc, argv); + } +- +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_listfile_modstruct = { +- "pam_listfile", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- pam_sm_open_session, +- pam_sm_close_session, +- pam_sm_chauthtok, +-}; +- +-#endif /* PAM_STATIC */ +- +-/* end of module definition */ +diff --git a/modules/pam_localuser/pam_localuser.c b/modules/pam_localuser/pam_localuser.c +index aa43bc4..e32ea6d 100644 +--- a/modules/pam_localuser/pam_localuser.c ++++ b/modules/pam_localuser/pam_localuser.c +@@ -55,7 +55,7 @@ + + #define MODULE_NAME "pam_localuser" + +-PAM_EXTERN int ++int + pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -123,52 +123,36 @@ pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED, + return ret; + } + +-PAM_EXTERN int ++int + pam_sm_setcred (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return PAM_SUCCESS; + } + +-PAM_EXTERN int ++int + pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, int argc, const char **argv) + { + return pam_sm_authenticate(pamh, flags, argc, argv); + } + +-PAM_EXTERN int ++int + pam_sm_open_session (pam_handle_t *pamh, int flags, + int argc, const char **argv) + { + return pam_sm_authenticate(pamh, flags, argc, argv); + } + +-PAM_EXTERN int ++int + pam_sm_close_session (pam_handle_t *pamh, int flags, + int argc, const char **argv) + { + return pam_sm_authenticate(pamh, flags, argc, argv); + } + +-PAM_EXTERN int ++int + pam_sm_chauthtok (pam_handle_t *pamh, int flags, + int argc, const char **argv) + { + return pam_sm_authenticate(pamh, flags, argc, argv); + } +- +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_localuser_modstruct = { +- "pam_localuser", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- pam_sm_open_session, +- pam_sm_close_session, +- pam_sm_chauthtok +-}; +- +-#endif +diff --git a/modules/pam_loginuid/pam_loginuid.c b/modules/pam_loginuid/pam_loginuid.c +index 9a1589e..96bfd98 100644 +--- a/modules/pam_loginuid/pam_loginuid.c ++++ b/modules/pam_loginuid/pam_loginuid.c +@@ -247,34 +247,21 @@ _pam_loginuid(pam_handle_t *pamh, int flags UNUSED, + * + * This is here for vsftpd which doesn't seem to run the session stack + */ +-PAM_EXTERN int ++int + pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, int argc, const char **argv) + { + return _pam_loginuid(pamh, flags, argc, argv); + } + +-PAM_EXTERN int ++int + pam_sm_open_session(pam_handle_t *pamh, int flags, int argc, const char **argv) + { + return _pam_loginuid(pamh, flags, argc, argv); + } + +-PAM_EXTERN int ++int + pam_sm_close_session(pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return PAM_SUCCESS; + } +- +-/* static module data */ +-#ifdef PAM_STATIC +-struct pam_module _pam_loginuid_modstruct = { +- "pam_loginuid", +- NULL, +- NULL, +- pam_sm_acct_mgmt, +- pam_sm_open_session, +- pam_sm_close_session, +- NULL +-}; +-#endif +diff --git a/modules/pam_mail/pam_mail.c b/modules/pam_mail/pam_mail.c +index f5ba173..0022f6d 100644 +--- a/modules/pam_mail/pam_mail.c ++++ b/modules/pam_mail/pam_mail.c +@@ -338,7 +338,7 @@ static int _do_mail(pam_handle_t *, int, int, const char **, int); + + /* --- authentication functions --- */ + +-PAM_EXTERN int ++int + pam_sm_authenticate (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -346,7 +346,6 @@ pam_sm_authenticate (pam_handle_t *pamh UNUSED, int flags UNUSED, + } + + /* Checking mail as part of authentication */ +-PAM_EXTERN + int pam_sm_setcred(pam_handle_t *pamh, int flags, int argc, + const char **argv) + { +@@ -357,7 +356,6 @@ int pam_sm_setcred(pam_handle_t *pamh, int flags, int argc, + + /* --- session management functions --- */ + +-PAM_EXTERN + int pam_sm_close_session(pam_handle_t *pamh,int flags,int argc + ,const char **argv) + { +@@ -365,7 +363,6 @@ int pam_sm_close_session(pam_handle_t *pamh,int flags,int argc + } + + /* Checking mail as part of the session management */ +-PAM_EXTERN + int pam_sm_open_session(pam_handle_t *pamh, int flags, int argc, + const char **argv) + { +@@ -475,20 +472,4 @@ static int _do_mail(pam_handle_t *pamh, int flags, int argc, + return retval; + } + +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_mail_modstruct = { +- "pam_mail", +- pam_sm_authenticate, +- pam_sm_setcred, +- NULL, +- pam_sm_open_session, +- pam_sm_close_session, +- NULL, +-}; +- +-#endif +- + /* end of module definition */ +diff --git a/modules/pam_mkhomedir/pam_mkhomedir.c b/modules/pam_mkhomedir/pam_mkhomedir.c +index c922089..daed63a 100644 +--- a/modules/pam_mkhomedir/pam_mkhomedir.c ++++ b/modules/pam_mkhomedir/pam_mkhomedir.c +@@ -183,7 +183,7 @@ create_homedir (pam_handle_t *pamh, options_t *opt, + + /* --- authentication management functions (only) --- */ + +-PAM_EXTERN int ++int + pam_sm_open_session (pam_handle_t *pamh, int flags, int argc, + const char **argv) + { +@@ -227,25 +227,9 @@ pam_sm_open_session (pam_handle_t *pamh, int flags, int argc, + } + + /* Ignore */ +-PAM_EXTERN + int pam_sm_close_session (pam_handle_t * pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return PAM_SUCCESS; + } + +-#ifdef PAM_STATIC +- +-/* static module data */ +-struct pam_module _pam_mkhomedir_modstruct = +-{ +- "pam_mkhomedir", +- NULL, +- NULL, +- NULL, +- pam_sm_open_session, +- pam_sm_close_session, +- NULL, +-}; +- +-#endif +diff --git a/modules/pam_motd/pam_motd.c b/modules/pam_motd/pam_motd.c +index ff9b169..11c7b56 100644 +--- a/modules/pam_motd/pam_motd.c ++++ b/modules/pam_motd/pam_motd.c +@@ -39,7 +39,7 @@ + + /* --- session management functions (only) --- */ + +-PAM_EXTERN int ++int + pam_sm_close_session (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -48,7 +48,6 @@ pam_sm_close_session (pam_handle_t *pamh UNUSED, int flags UNUSED, + + static char default_motd[] = DEFAULT_MOTD; + +-PAM_EXTERN + int pam_sm_open_session(pam_handle_t *pamh, int flags, + int argc, const char **argv) + { +@@ -110,21 +109,4 @@ int pam_sm_open_session(pam_handle_t *pamh, int flags, + return retval; + } + +- +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_motd_modstruct = { +- "pam_motd", +- NULL, +- NULL, +- NULL, +- pam_sm_open_session, +- pam_sm_close_session, +- NULL, +-}; +- +-#endif +- + /* end of module definition */ +diff --git a/modules/pam_namespace/pam_namespace.c b/modules/pam_namespace/pam_namespace.c +index 92883f5..d02ea09 100644 +--- a/modules/pam_namespace/pam_namespace.c ++++ b/modules/pam_namespace/pam_namespace.c +@@ -2008,7 +2008,7 @@ static int get_user_data(struct instance_data *idata) + /* + * Entry point from pam_open_session call. + */ +-PAM_EXTERN int pam_sm_open_session(pam_handle_t *pamh, int flags UNUSED, ++int pam_sm_open_session(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { + int i, retval; +@@ -2104,7 +2104,7 @@ PAM_EXTERN int pam_sm_open_session(pam_handle_t *pamh, int flags UNUSED, + /* + * Entry point from pam_close_session call. + */ +-PAM_EXTERN int pam_sm_close_session(pam_handle_t *pamh, int flags UNUSED, ++int pam_sm_close_session(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { + int i, retval; +@@ -2183,18 +2183,3 @@ PAM_EXTERN int pam_sm_close_session(pam_handle_t *pamh, int flags UNUSED, + + return PAM_SUCCESS; + } +- +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_namespace_modstruct = { +- "pam_namespace", +- NULL, +- NULL, +- NULL, +- pam_sm_open_session, +- pam_sm_close_session, +- NULL +-}; +-#endif +diff --git a/modules/pam_nologin/pam_nologin.c b/modules/pam_nologin/pam_nologin.c +index f047c32..9fd91fd 100644 +--- a/modules/pam_nologin/pam_nologin.c ++++ b/modules/pam_nologin/pam_nologin.c +@@ -135,7 +135,7 @@ static int perform_check(pam_handle_t *pamh, struct opt_s *opts) + + /* --- authentication management functions --- */ + +-PAM_EXTERN int ++int + pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -146,7 +146,7 @@ pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED, + return perform_check(pamh, &opts); + } + +-PAM_EXTERN int ++int + pam_sm_setcred (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc, const char **argv) + { +@@ -159,7 +159,7 @@ pam_sm_setcred (pam_handle_t *pamh UNUSED, int flags UNUSED, + + /* --- account management function --- */ + +-PAM_EXTERN int ++int + pam_sm_acct_mgmt(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -170,21 +170,4 @@ pam_sm_acct_mgmt(pam_handle_t *pamh, int flags UNUSED, + return perform_check(pamh, &opts); + } + +- +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_nologin_modstruct = { +- "pam_nologin", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- NULL, +- NULL, +- NULL, +-}; +- +-#endif /* PAM_STATIC */ +- + /* end of module definition */ +diff --git a/modules/pam_permit/pam_permit.c b/modules/pam_permit/pam_permit.c +index e4539b0..c773087 100644 +--- a/modules/pam_permit/pam_permit.c ++++ b/modules/pam_permit/pam_permit.c +@@ -30,7 +30,7 @@ + + /* --- authentication management functions --- */ + +-PAM_EXTERN int ++int + pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -56,7 +56,7 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED, + return PAM_SUCCESS; + } + +-PAM_EXTERN int ++int + pam_sm_setcred(pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -65,7 +65,7 @@ pam_sm_setcred(pam_handle_t *pamh UNUSED, int flags UNUSED, + + /* --- account management functions --- */ + +-PAM_EXTERN int ++int + pam_sm_acct_mgmt(pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -74,7 +74,7 @@ pam_sm_acct_mgmt(pam_handle_t *pamh UNUSED, int flags UNUSED, + + /* --- password management --- */ + +-PAM_EXTERN int ++int + pam_sm_chauthtok(pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -83,14 +83,14 @@ pam_sm_chauthtok(pam_handle_t *pamh UNUSED, int flags UNUSED, + + /* --- session management --- */ + +-PAM_EXTERN int ++int + pam_sm_open_session(pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return PAM_SUCCESS; + } + +-PAM_EXTERN int ++int + pam_sm_close_session(pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -98,19 +98,3 @@ pam_sm_close_session(pam_handle_t *pamh UNUSED, int flags UNUSED, + } + + /* end of module definition */ +- +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_permit_modstruct = { +- "pam_permit", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- pam_sm_open_session, +- pam_sm_close_session, +- pam_sm_chauthtok +-}; +- +-#endif +diff --git a/modules/pam_pwhistory/pam_pwhistory.c b/modules/pam_pwhistory/pam_pwhistory.c +index 654edd3..0c07dc1 100644 +--- a/modules/pam_pwhistory/pam_pwhistory.c ++++ b/modules/pam_pwhistory/pam_pwhistory.c +@@ -106,7 +106,7 @@ parse_option (pam_handle_t *pamh, const char *argv, options_t *options) + /* This module saves the current crypted password in /etc/security/opasswd + and then compares the new password with all entries in this file. */ + +-PAM_EXTERN int ++int + pam_sm_chauthtok (pam_handle_t *pamh, int flags, int argc, const char **argv) + { + struct passwd *pwd; +@@ -235,16 +235,3 @@ pam_sm_chauthtok (pam_handle_t *pamh, int flags, int argc, const char **argv) + return PAM_SUCCESS; + } + +- +-#ifdef PAM_STATIC +-/* static module data */ +-struct pam_module _pam_pwhistory_modstruct = { +- "pam_pwhistory", +- NULL, +- NULL, +- NULL, +- NULL, +- NULL, +- pam_sm_chauthtok +-}; +-#endif +diff --git a/modules/pam_rhosts/pam_rhosts.c b/modules/pam_rhosts/pam_rhosts.c +index bc9e76f..d6e7030 100644 +--- a/modules/pam_rhosts/pam_rhosts.c ++++ b/modules/pam_rhosts/pam_rhosts.c +@@ -43,7 +43,6 @@ + #include + #include + +-PAM_EXTERN + int pam_sm_authenticate (pam_handle_t *pamh, int flags, int argc, + const char **argv) + { +@@ -130,26 +129,10 @@ int pam_sm_authenticate (pam_handle_t *pamh, int flags, int argc, + } + + +-PAM_EXTERN int ++int + pam_sm_setcred (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return PAM_SUCCESS; + } + +- +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_rhosts_modstruct = { +- "pam_rhosts", +- pam_sm_authenticate, +- pam_sm_setcred, +- NULL, +- NULL, +- NULL, +- NULL, +-}; +- +-#endif +diff --git a/modules/pam_rootok/pam_rootok.c b/modules/pam_rootok/pam_rootok.c +index 88bed0c..17baabe 100644 +--- a/modules/pam_rootok/pam_rootok.c ++++ b/modules/pam_rootok/pam_rootok.c +@@ -135,7 +135,7 @@ check_for_root (pam_handle_t *pamh, int ctrl) + + /* --- management functions --- */ + +-PAM_EXTERN int ++int + pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -146,14 +146,14 @@ pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED, + return check_for_root (pamh, ctrl); + } + +-PAM_EXTERN int ++int + pam_sm_setcred (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return PAM_SUCCESS; + } + +-PAM_EXTERN int ++int + pam_sm_acct_mgmt (pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -164,7 +164,7 @@ pam_sm_acct_mgmt (pam_handle_t *pamh, int flags UNUSED, + return check_for_root (pamh, ctrl); + } + +-PAM_EXTERN int ++int + pam_sm_chauthtok (pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -175,20 +175,4 @@ pam_sm_chauthtok (pam_handle_t *pamh, int flags UNUSED, + return check_for_root (pamh, ctrl); + } + +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_rootok_modstruct = { +- "pam_rootok", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- NULL, +- NULL, +- pam_sm_chauthtok, +-}; +- +-#endif +- + /* end of module definition */ +diff --git a/modules/pam_securetty/pam_securetty.c b/modules/pam_securetty/pam_securetty.c +index 0474130..e279efa 100644 +--- a/modules/pam_securetty/pam_securetty.c ++++ b/modules/pam_securetty/pam_securetty.c +@@ -235,7 +235,6 @@ securetty_perform_check (pam_handle_t *pamh, int ctrl, + + /* --- authentication management functions --- */ + +-PAM_EXTERN + int pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED, int argc, + const char **argv) + { +@@ -247,7 +246,7 @@ int pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED, int argc, + return securetty_perform_check(pamh, ctrl, __FUNCTION__); + } + +-PAM_EXTERN int ++int + pam_sm_setcred (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -256,7 +255,7 @@ pam_sm_setcred (pam_handle_t *pamh UNUSED, int flags UNUSED, + + /* --- account management functions --- */ + +-PAM_EXTERN int ++int + pam_sm_acct_mgmt (pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -269,21 +268,4 @@ pam_sm_acct_mgmt (pam_handle_t *pamh, int flags UNUSED, + return securetty_perform_check(pamh, ctrl, __FUNCTION__); + } + +- +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_securetty_modstruct = { +- "pam_securetty", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- NULL, +- NULL, +- NULL, +-}; +- +-#endif /* PAM_STATIC */ +- + /* end of module definition */ +diff --git a/modules/pam_selinux/pam_selinux.c b/modules/pam_selinux/pam_selinux.c +index b2a75e0..6daba1e 100644 +--- a/modules/pam_selinux/pam_selinux.c ++++ b/modules/pam_selinux/pam_selinux.c +@@ -757,7 +757,7 @@ create_context(pam_handle_t *pamh, int argc, const char **argv, + return set_context(pamh, data, debug, verbose); + } + +-PAM_EXTERN int ++int + pam_sm_authenticate(pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -765,14 +765,14 @@ pam_sm_authenticate(pam_handle_t *pamh UNUSED, int flags UNUSED, + return PAM_AUTH_ERR; + } + +-PAM_EXTERN int ++int + pam_sm_setcred(pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return PAM_SUCCESS; + } + +-PAM_EXTERN int ++int + pam_sm_open_session(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -813,7 +813,7 @@ pam_sm_open_session(pam_handle_t *pamh, int flags UNUSED, + create_context(pamh, argc, argv, debug, verbose); + } + +-PAM_EXTERN int ++int + pam_sm_close_session(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +diff --git a/modules/pam_sepermit/pam_sepermit.c b/modules/pam_sepermit/pam_sepermit.c +index 8af1266..0b90a39 100644 +--- a/modules/pam_sepermit/pam_sepermit.c ++++ b/modules/pam_sepermit/pam_sepermit.c +@@ -363,7 +363,7 @@ sepermit_match(pam_handle_t *pamh, const char *cfgfile, const char *user, + return -1; + } + +-PAM_EXTERN int ++int + pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -430,31 +430,17 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED, + return rv; + } + +-PAM_EXTERN int ++int + pam_sm_setcred (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return PAM_IGNORE; + } + +-PAM_EXTERN int ++int + pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, + int argc, const char **argv) + { + return pam_sm_authenticate(pamh, flags, argc, argv); + } + +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_sepermit_modstruct = { +- "pam_sepermit", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- NULL, +- NULL, +- NULL +-}; +-#endif +diff --git a/modules/pam_shells/pam_shells.c b/modules/pam_shells/pam_shells.c +index 68bd607..c8acb9e 100644 +--- a/modules/pam_shells/pam_shells.c ++++ b/modules/pam_shells/pam_shells.c +@@ -104,14 +104,12 @@ static int perform_check(pam_handle_t *pamh) + + /* --- authentication management functions (only) --- */ + +-PAM_EXTERN + int pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return perform_check(pamh); + } + +-PAM_EXTERN + int pam_sm_setcred(pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { +@@ -120,27 +118,10 @@ int pam_sm_setcred(pam_handle_t *pamh UNUSED, int flags UNUSED, + + /* --- account management functions (only) --- */ + +-PAM_EXTERN + int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return perform_check(pamh); + } + +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_shells_modstruct = { +- "pam_shells", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- NULL, +- NULL, +- NULL, +-}; +- +-#endif /* PAM_STATIC */ +- + /* end of module definition */ +diff --git a/modules/pam_stress/pam_stress.c b/modules/pam_stress/pam_stress.c +index c1695d7..44c3a30 100644 +--- a/modules/pam_stress/pam_stress.c ++++ b/modules/pam_stress/pam_stress.c +@@ -213,7 +213,6 @@ wipe_up (pam_handle_t *pamh UNUSED, void *data, int error UNUSED) + free(data); + } + +-PAM_EXTERN + int pam_sm_authenticate(pam_handle_t *pamh, int flags, + int argc, const char **argv) + { +@@ -281,7 +280,6 @@ int pam_sm_authenticate(pam_handle_t *pamh, int flags, + return retval; + } + +-PAM_EXTERN + int pam_sm_setcred(pam_handle_t *pamh, int flags, + int argc, const char **argv) + { +@@ -299,7 +297,6 @@ int pam_sm_setcred(pam_handle_t *pamh, int flags, + + /* account management functions */ + +-PAM_EXTERN + int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, + int argc, const char **argv) + { +@@ -334,7 +331,6 @@ int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, + return PAM_SUCCESS; + } + +-PAM_EXTERN + int pam_sm_open_session(pam_handle_t *pamh, int flags, + int argc, const char **argv) + { +@@ -362,7 +358,6 @@ int pam_sm_open_session(pam_handle_t *pamh, int flags, + return PAM_SUCCESS; + } + +-PAM_EXTERN + int pam_sm_close_session(pam_handle_t *pamh, int flags, + int argc, const char **argv) + { +@@ -390,7 +385,6 @@ int pam_sm_close_session(pam_handle_t *pamh, int flags, + return PAM_SUCCESS; + } + +-PAM_EXTERN + int pam_sm_chauthtok(pam_handle_t *pamh, int flags, + int argc, const char **argv) + { +@@ -552,19 +546,3 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags, + return retval; + } + +- +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_stress_modstruct = { +- "pam_stress", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- pam_sm_open_session, +- pam_sm_close_session, +- pam_sm_chauthtok +-}; +- +-#endif +diff --git a/modules/pam_succeed_if/pam_succeed_if.c b/modules/pam_succeed_if/pam_succeed_if.c +index aa828fc..c39b1cb 100644 +--- a/modules/pam_succeed_if/pam_succeed_if.c ++++ b/modules/pam_succeed_if/pam_succeed_if.c +@@ -400,7 +400,7 @@ evaluate(pam_handle_t *pamh, int debug, + return PAM_SERVICE_ERR; + } + +-PAM_EXTERN int ++int + pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -544,46 +544,33 @@ pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED, + return ret; + } + +-PAM_EXTERN int ++int + pam_sm_setcred(pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return PAM_IGNORE; + } + +-PAM_EXTERN int ++int + pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, int argc, const char **argv) + { + return pam_sm_authenticate(pamh, flags, argc, argv); + } + +-PAM_EXTERN int ++int + pam_sm_open_session(pam_handle_t *pamh, int flags, int argc, const char **argv) + { + return pam_sm_authenticate(pamh, flags, argc, argv); + } + +-PAM_EXTERN int ++int + pam_sm_close_session(pam_handle_t *pamh, int flags, int argc, const char **argv) + { + return pam_sm_authenticate(pamh, flags, argc, argv); + } + +-PAM_EXTERN int ++int + pam_sm_chauthtok(pam_handle_t *pamh, int flags, int argc, const char **argv) + { + return pam_sm_authenticate(pamh, flags, argc, argv); + } +- +-/* static module data */ +-#ifdef PAM_STATIC +-struct pam_module _pam_succeed_if_modstruct = { +- "pam_succeed_if", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- pam_sm_open_session, +- pam_sm_close_session, +- pam_sm_chauthtok +-}; +-#endif +diff --git a/modules/pam_tally/pam_tally.c b/modules/pam_tally/pam_tally.c +index c712885..66a515c 100644 +--- a/modules/pam_tally/pam_tally.c ++++ b/modules/pam_tally/pam_tally.c +@@ -615,7 +615,7 @@ tally_reset (pam_handle_t *pamh, uid_t uid, struct tally_options *opts) + + #ifdef PAM_SM_AUTH + +-PAM_EXTERN int ++int + pam_sm_authenticate(pam_handle_t *pamh, int flags, + int argc, const char **argv) + { +@@ -649,7 +649,7 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags, + return rvcheck != PAM_SUCCESS ? rvcheck : rvbump; + } + +-PAM_EXTERN int ++int + pam_sm_setcred(pam_handle_t *pamh, int flags, + int argc, const char **argv) + { +@@ -694,7 +694,7 @@ pam_sm_setcred(pam_handle_t *pamh, int flags, + + /* To reset failcount of user on successfull login */ + +-PAM_EXTERN int ++int + pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, + int argc, const char **argv) + { +@@ -733,33 +733,6 @@ pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, + + /*-----------------------------------------------------------------------*/ + +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_tally_modstruct = { +- MODULE_NAME, +-#ifdef PAM_SM_AUTH +- pam_sm_authenticate, +- pam_sm_setcred, +-#else +- NULL, +- NULL, +-#endif +-#ifdef PAM_SM_ACCOUNT +- pam_sm_acct_mgmt, +-#else +- NULL, +-#endif +- NULL, +- NULL, +- NULL, +-}; +- +-#endif /* #ifdef PAM_STATIC */ +- +-/*-----------------------------------------------------------------------*/ +- + #else /* #ifndef MAIN */ + + static const char *cline_filename = DEFAULT_LOGFILE; +diff --git a/modules/pam_tally2/pam_tally2.c b/modules/pam_tally2/pam_tally2.c +index 9187cbf..9f3bebe 100644 +--- a/modules/pam_tally2/pam_tally2.c ++++ b/modules/pam_tally2/pam_tally2.c +@@ -737,7 +737,7 @@ tally_reset (pam_handle_t *pamh, uid_t uid, struct tally_options *opts, int old_ + + /* --- authentication management functions (only) --- */ + +-PAM_EXTERN int ++int + pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -770,7 +770,7 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED, + return rv; + } + +-PAM_EXTERN int ++int + pam_sm_setcred(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -810,7 +810,7 @@ pam_sm_setcred(pam_handle_t *pamh, int flags UNUSED, + + /* To reset failcount of user on successfull login */ + +-PAM_EXTERN int ++int + pam_sm_acct_mgmt(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -846,33 +846,6 @@ pam_sm_acct_mgmt(pam_handle_t *pamh, int flags UNUSED, + + /*-----------------------------------------------------------------------*/ + +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_tally2_modstruct = { +- MODULE_NAME, +-#ifdef PAM_SM_AUTH +- pam_sm_authenticate, +- pam_sm_setcred, +-#else +- NULL, +- NULL, +-#endif +-#ifdef PAM_SM_ACCOUNT +- pam_sm_acct_mgmt, +-#else +- NULL, +-#endif +- NULL, +- NULL, +- NULL, +-}; +- +-#endif /* #ifdef PAM_STATIC */ +- +-/*-----------------------------------------------------------------------*/ +- + #else /* #ifndef MAIN */ + + static const char *cline_filename = DEFAULT_LOGFILE; +diff --git a/modules/pam_time/pam_time.c b/modules/pam_time/pam_time.c +index c94737c..75d0864 100644 +--- a/modules/pam_time/pam_time.c ++++ b/modules/pam_time/pam_time.c +@@ -588,7 +588,7 @@ check_account(pam_handle_t *pamh, const char *service, + + /* --- public account management functions --- */ + +-PAM_EXTERN int ++int + pam_sm_acct_mgmt(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -663,18 +663,3 @@ pam_sm_acct_mgmt(pam_handle_t *pamh, int flags UNUSED, + } + + /* end of module definition */ +- +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_time_modstruct = { +- "pam_time", +- NULL, +- NULL, +- pam_sm_acct_mgmt, +- NULL, +- NULL, +- NULL +-}; +-#endif +diff --git a/modules/pam_timestamp/pam_timestamp.c b/modules/pam_timestamp/pam_timestamp.c +index 1bf0e84..b18efdf 100644 +--- a/modules/pam_timestamp/pam_timestamp.c ++++ b/modules/pam_timestamp/pam_timestamp.c +@@ -357,7 +357,7 @@ verbose_success(pam_handle_t *pamh, long diff) + pam_info(pamh, _("Access granted (last access was %ld seconds ago)."), diff); + } + +-PAM_EXTERN int ++int + pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv) + { + struct stat st; +@@ -547,13 +547,13 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv) + return PAM_AUTH_ERR; + } + +-PAM_EXTERN int ++int + pam_sm_setcred(pam_handle_t *pamh UNUSED, int flags UNUSED, int argc UNUSED, const char **argv UNUSED) + { + return PAM_SUCCESS; + } + +-PAM_EXTERN int ++int + pam_sm_open_session(pam_handle_t *pamh, int flags UNUSED, int argc, const char **argv) + { + char path[BUFLEN], subdir[BUFLEN], *text, *p; +@@ -670,27 +670,12 @@ pam_sm_open_session(pam_handle_t *pamh, int flags UNUSED, int argc, const char * + return PAM_SUCCESS; + } + +-PAM_EXTERN int ++int + pam_sm_close_session(pam_handle_t *pamh UNUSED, int flags UNUSED, int argc UNUSED, const char **argv UNUSED) + { + return PAM_SUCCESS; + } + +-#ifdef PAM_STATIC +-/* static module data */ +- +-struct pam_module _pam_timestamp_modstruct = { +- "pam_timestamp", +- pam_sm_authenticate, +- pam_sm_setcred, +- NULL, +- pam_sm_open_session, +- pam_sm_close_session, +- NULL +-}; +-#endif +- +- + #else /* PAM_TIMESTAMP_MAIN */ + + #define USAGE "Usage: %s [[-k] | [-d]] [target user]\n" +diff --git a/modules/pam_tty_audit/pam_tty_audit.c b/modules/pam_tty_audit/pam_tty_audit.c +index 6003f4e..bce3ab7 100644 +--- a/modules/pam_tty_audit/pam_tty_audit.c ++++ b/modules/pam_tty_audit/pam_tty_audit.c +@@ -360,16 +360,3 @@ pam_sm_close_session (pam_handle_t *pamh, int flags, int argc, + } + return PAM_SUCCESS; + } +- +-/* static module data */ +-#ifdef PAM_STATIC +-struct pam_module _pam_tty_audit_modstruct = { +- "pam_tty_audit", +- NULL, +- NULL, +- NULL, +- pam_sm_open_session, +- pam_sm_close_session, +- NULL +-}; +-#endif +diff --git a/modules/pam_umask/pam_umask.c b/modules/pam_umask/pam_umask.c +index 863f038..ab49064 100644 +--- a/modules/pam_umask/pam_umask.c ++++ b/modules/pam_umask/pam_umask.c +@@ -249,7 +249,7 @@ setup_limits_from_gecos (pam_handle_t *pamh, options_t *options, + } + + +-PAM_EXTERN int ++int + pam_sm_open_session (pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -297,27 +297,11 @@ pam_sm_open_session (pam_handle_t *pamh, int flags UNUSED, + return retval; + } + +-PAM_EXTERN int ++int + pam_sm_close_session (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return PAM_SUCCESS; + } + +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_umask_modstruct = { +- "pam_umask", +- NULL, +- NULL, +- NULL, +- pam_sm_open_session, +- pam_sm_close_session, +- NULL +-}; +- +-#endif +- + /* end of module definition */ +diff --git a/modules/pam_unix/Makefile.am b/modules/pam_unix/Makefile.am +index 56ed591..ab0d55a 100644 +--- a/modules/pam_unix/Makefile.am ++++ b/modules/pam_unix/Makefile.am +@@ -34,8 +34,7 @@ pam_unix_la_LIBADD = $(top_builddir)/libpam/libpam.la \ + + securelib_LTLIBRARIES = pam_unix.la + +-noinst_HEADERS = md5.h support.h yppasswd.h bigcrypt.h passverify.h \ +- pam_unix_static.h ++noinst_HEADERS = md5.h support.h yppasswd.h bigcrypt.h passverify.h + + sbin_PROGRAMS = unix_chkpwd unix_update + +@@ -44,9 +43,6 @@ noinst_PROGRAMS = bigcrypt + pam_unix_la_SOURCES = bigcrypt.c pam_unix_acct.c \ + pam_unix_auth.c pam_unix_passwd.c pam_unix_sess.c support.c \ + passverify.c yppasswd_xdr.c md5_good.c md5_broken.c +-if STATIC_MODULES +-pam_unix_la_SOURCES += pam_unix_static.c +-endif + + bigcrypt_SOURCES = bigcrypt.c bigcrypt_main.c + bigcrypt_CFLAGS = $(AM_CFLAGS) +diff --git a/modules/pam_unix/pam_unix_acct.c b/modules/pam_unix/pam_unix_acct.c +index f8b39c9..17a0890 100644 +--- a/modules/pam_unix/pam_unix_acct.c ++++ b/modules/pam_unix/pam_unix_acct.c +@@ -53,11 +53,7 @@ + + /* indicate that the following groups are defined */ + +-#ifdef PAM_STATIC +-# include "pam_unix_static.h" +-#else +-# define PAM_SM_ACCOUNT +-#endif ++#define PAM_SM_ACCOUNT + + #include + #include +diff --git a/modules/pam_unix/pam_unix_auth.c b/modules/pam_unix/pam_unix_auth.c +index 9a547b3..9f66c5d 100644 +--- a/modules/pam_unix/pam_unix_auth.c ++++ b/modules/pam_unix/pam_unix_auth.c +@@ -50,11 +50,7 @@ + + /* indicate the following groups are defined */ + +-#ifdef PAM_STATIC +-# include "pam_unix_static.h" +-#else +-# define PAM_SM_AUTH +-#endif ++#define PAM_SM_AUTH + + #define _PAM_EXTERN_FUNCTIONS + #include +diff --git a/modules/pam_unix/pam_unix_passwd.c b/modules/pam_unix/pam_unix_passwd.c +index c2e5de5..e3d3209 100644 +--- a/modules/pam_unix/pam_unix_passwd.c ++++ b/modules/pam_unix/pam_unix_passwd.c +@@ -64,11 +64,7 @@ + + /* indicate the following groups are defined */ + +-#ifdef PAM_STATIC +-# include "pam_unix_static.h" +-#else +-# define PAM_SM_PASSWORD +-#endif ++#define PAM_SM_PASSWORD + + #include + #include +diff --git a/modules/pam_unix/pam_unix_sess.c b/modules/pam_unix/pam_unix_sess.c +index 5d00181..dbc6298 100644 +--- a/modules/pam_unix/pam_unix_sess.c ++++ b/modules/pam_unix/pam_unix_sess.c +@@ -49,11 +49,7 @@ + + /* indicate the following groups are defined */ + +-#ifdef PAM_STATIC +-# include "pam_unix_static.h" +-#else +-# define PAM_SM_SESSION +-#endif ++#define PAM_SM_SESSION + + #include + #include +diff --git a/modules/pam_unix/pam_unix_static.c b/modules/pam_unix/pam_unix_static.c +deleted file mode 100644 +index 160268c..0000000 +--- a/modules/pam_unix/pam_unix_static.c ++++ /dev/null +@@ -1,23 +0,0 @@ +-#include "config.h" +- +-#ifdef PAM_STATIC +- +-#define static extern +-#define PAM_SM_ACCOUNT +-#define PAM_SM_AUTH +-#define PAM_SM_PASSWORD +-#define PAM_SM_SESSION +-#include "pam_unix_static.h" +-#include +- +-struct pam_module _pam_unix_modstruct = { +- "pam_unix", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- pam_sm_open_session, +- pam_sm_close_session, +- pam_sm_chauthtok, +-}; +- +-#endif +diff --git a/modules/pam_unix/pam_unix_static.h b/modules/pam_unix/pam_unix_static.h +deleted file mode 100644 +index 39b05ef..0000000 +--- a/modules/pam_unix/pam_unix_static.h ++++ /dev/null +@@ -1,6 +0,0 @@ +-#define pam_sm_acct_mgmt _pam_unix_sm_acct_mgmt +-#define pam_sm_authenticate _pam_unix_sm_authenticate +-#define pam_sm_setcred _pam_unix_sm_setcred +-#define pam_sm_chauthtok _pam_unix_sm_chauthtok +-#define pam_sm_open_session _pam_unix_sm_open_session +-#define pam_sm_close_session _pam_unix_sm_close_session +diff --git a/modules/pam_userdb/pam_userdb.c b/modules/pam_userdb/pam_userdb.c +index 8df1a40..09ab8d3 100644 +--- a/modules/pam_userdb/pam_userdb.c ++++ b/modules/pam_userdb/pam_userdb.c +@@ -334,7 +334,7 @@ user_lookup (pam_handle_t *pamh, const char *database, const char *cryptmode, + + /* --- authentication management functions (only) --- */ + +-PAM_EXTERN int ++int + pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -423,14 +423,14 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED, + return PAM_IGNORE; + } + +-PAM_EXTERN int ++int + pam_sm_setcred(pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return PAM_SUCCESS; + } + +-PAM_EXTERN int ++int + pam_sm_acct_mgmt(pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -475,23 +475,6 @@ pam_sm_acct_mgmt(pam_handle_t *pamh, int flags UNUSED, + return PAM_SUCCESS; + } + +- +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_userdb_modstruct = { +- "pam_userdb", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- NULL, +- NULL, +- NULL, +-}; +- +-#endif +- + /* + * Copyright (c) Cristian Gafton , 1999 + * All rights reserved +diff --git a/modules/pam_warn/pam_warn.c b/modules/pam_warn/pam_warn.c +index a26c48d..1d196ad 100644 +--- a/modules/pam_warn/pam_warn.c ++++ b/modules/pam_warn/pam_warn.c +@@ -54,7 +54,6 @@ static void log_items(pam_handle_t *pamh, const char *function, int flags) + + /* --- authentication management functions (only) --- */ + +-PAM_EXTERN + int pam_sm_authenticate(pam_handle_t *pamh, int flags, + int argc UNUSED, const char **argv UNUSED) + { +@@ -62,7 +61,6 @@ int pam_sm_authenticate(pam_handle_t *pamh, int flags, + return PAM_IGNORE; + } + +-PAM_EXTERN + int pam_sm_setcred(pam_handle_t *pamh, int flags, + int argc UNUSED, const char **argv UNUSED) + { +@@ -72,7 +70,6 @@ int pam_sm_setcred(pam_handle_t *pamh, int flags, + + /* password updating functions */ + +-PAM_EXTERN + int pam_sm_chauthtok(pam_handle_t *pamh, int flags, + int argc UNUSED, const char **argv UNUSED) + { +@@ -80,7 +77,7 @@ int pam_sm_chauthtok(pam_handle_t *pamh, int flags, + return PAM_IGNORE; + } + +-PAM_EXTERN int ++int + pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, + int argc UNUSED, const char **argv UNUSED) + { +@@ -88,7 +85,7 @@ pam_sm_acct_mgmt(pam_handle_t *pamh, int flags, + return PAM_IGNORE; + } + +-PAM_EXTERN int ++int + pam_sm_open_session(pam_handle_t *pamh, int flags, + int argc UNUSED, const char **argv UNUSED) + { +@@ -96,7 +93,7 @@ pam_sm_open_session(pam_handle_t *pamh, int flags, + return PAM_IGNORE; + } + +-PAM_EXTERN int ++int + pam_sm_close_session(pam_handle_t *pamh, int flags, + int argc UNUSED, const char **argv UNUSED) + { +@@ -104,20 +101,4 @@ pam_sm_close_session(pam_handle_t *pamh, int flags, + return PAM_IGNORE; + } + +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_warn_modstruct = { +- "pam_warn", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- pam_sm_open_session, +- pam_sm_close_session, +- pam_sm_chauthtok, +-}; +- +-#endif +- + /* end of module definition */ +diff --git a/modules/pam_wheel/pam_wheel.c b/modules/pam_wheel/pam_wheel.c +index d7d8096..6ea7b84 100644 +--- a/modules/pam_wheel/pam_wheel.c ++++ b/modules/pam_wheel/pam_wheel.c +@@ -232,7 +232,7 @@ perform_check (pam_handle_t *pamh, int ctrl, const char *use_group) + + /* --- authentication management functions --- */ + +-PAM_EXTERN int ++int + pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -244,14 +244,14 @@ pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED, + return perform_check(pamh, ctrl, use_group); + } + +-PAM_EXTERN int ++int + pam_sm_setcred (pam_handle_t *pamh UNUSED, int flags UNUSED, + int argc UNUSED, const char **argv UNUSED) + { + return PAM_SUCCESS; + } + +-PAM_EXTERN int ++int + pam_sm_acct_mgmt (pam_handle_t *pamh, int flags UNUSED, + int argc, const char **argv) + { +@@ -263,22 +263,6 @@ pam_sm_acct_mgmt (pam_handle_t *pamh, int flags UNUSED, + return perform_check(pamh, ctrl, use_group); + } + +-#ifdef PAM_STATIC +- +-/* static module data */ +- +-struct pam_module _pam_wheel_modstruct = { +- "pam_wheel", +- pam_sm_authenticate, +- pam_sm_setcred, +- pam_sm_acct_mgmt, +- NULL, +- NULL, +- NULL +-}; +- +-#endif /* PAM_STATIC */ +- + /* + * Copyright (c) Cristian Gafton , 1996, 1997 + * All rights reserved +diff --git a/modules/pam_xauth/pam_xauth.c b/modules/pam_xauth/pam_xauth.c +index 2be4351..6778aa8 100644 +--- a/modules/pam_xauth/pam_xauth.c ++++ b/modules/pam_xauth/pam_xauth.c +@@ -798,16 +798,3 @@ pam_sm_close_session (pam_handle_t *pamh, int flags UNUSED, + + return PAM_SUCCESS; + } +- +-/* static module data */ +-#ifdef PAM_STATIC +-struct pam_module _pam_xauth_modstruct = { +- "pam_xauth", +- NULL, +- NULL, +- NULL, +- pam_sm_open_session, +- pam_sm_close_session, +- NULL +-}; +-#endif +diff --git a/po/POTFILES.in b/po/POTFILES.in +index 76d9640..fcec3d8 100644 +--- a/po/POTFILES.in ++++ b/po/POTFILES.in +@@ -29,7 +29,6 @@ + ./libpam/pam_prelude.c + ./libpam/pam_session.c + ./libpam/pam_start.c +-./libpam/pam_static.c + ./libpam/pam_strerror.c + ./libpam/pam_syslog.c + ./libpam/pam_vprompt.c +diff --git a/tests/tst-dlopen.c b/tests/tst-dlopen.c +index 3000055..7092716 100644 +--- a/tests/tst-dlopen.c ++++ b/tests/tst-dlopen.c +@@ -19,9 +19,6 @@ + /* Simple program to see if dlopen() would succeed. */ + int main(int argc, char **argv) + { +-#ifdef PAM_STATIC +- return 77; +-#else + int i; + struct stat st; + char buf[PATH_MAX]; +@@ -43,5 +40,4 @@ int main(int argc, char **argv) + } + } + return 0; +-#endif + } +-- +1.8.5.6 + diff --git a/0003-fix-nis-checks.patch b/0003-fix-nis-checks.patch new file mode 100644 index 0000000..6f842a6 --- /dev/null +++ b/0003-fix-nis-checks.patch @@ -0,0 +1,70 @@ +diff --git a/configure.ac b/configure.ac +index d5cc644..534194d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -447,22 +447,26 @@ AC_SUBST(LIBDB) + AM_CONDITIONAL([HAVE_LIBDB], [test ! -z "$LIBDB"]) + + AC_ARG_ENABLE([nis], +- AS_HELP_STRING([--disable-nis], [Disable building NIS/YP support in pam_unix and pam_access])) ++ AS_HELP_STRING([--disable-nis], [Disable building NIS/YP support in pam_unix])) + + AS_IF([test "x$enable_nis" != "xno"], [ +- CFLAGS=$old_CFLAGS +- LIBS=$old_LIBS ++ old_CFLAGS=$CFLAGS ++ old_LIBS=$LIBS + + dnl if there's libtirpc available, prefer that over the system + dnl implementation. +- PKG_CHECK_MODULES([libtirpc], [libtirpc], [ +- CFLAGS="$CFLAGS $libtirpc_CFLAGS" +- LIBS="$LIBS $libtirpc_LIBS" ++ PKG_CHECK_MODULES([TIRPC], [libtirpc], [ ++ CFLAGS="$CFLAGS $TIRPC_CFLAGS" ++ LIBS="$LIBS $TIRPC_LIBS" + ], [:;]) + +- AC_SEARCH_LIBS([yp_get_default_domain], [nsl]) ++ PKG_CHECK_MODULES([NSL], [libnsl], [], ++ [AC_CHECK_LIB([nsl],[yp_match],[NSL_LIBS="-lnsl"],[NSL_LIBS=""])]) ++ CFLAGS="$CFLAGS $NSL_CFLAGS" ++ LIBS="$LIBS $NSL_LIBS" + + AC_CHECK_FUNCS([yp_get_default_domain yperr_string yp_master yp_bind yp_match yp_unbind]) ++ AC_CHECK_FUNCS([getrpcport rpcb_getaddr]) + AC_CHECK_HEADERS([rpc/rpc.h rpcsvc/ypclnt.h rpcsvc/yp_prot.h]) + AC_CHECK_DECLS([getrpcport], , , [ + #if HAVE_RPC_RPC_H +@@ -470,9 +474,6 @@ AS_IF([test "x$enable_nis" != "xno"], [ + #endif + ]) + +- NIS_CFLAGS="${CFLAGS%${old_CFLAGS}}" +- NIS_LIBS="${LIBS%${old_LIBS}}" +- + CFLAGS="$old_CFLAGS" + LIBS="$old_LIBS" + ]) +diff --git a/modules/pam_unix/Makefile.am b/modules/pam_unix/Makefile.am +index ab0d55a..56df178 100644 +--- a/modules/pam_unix/Makefile.am ++++ b/modules/pam_unix/Makefile.am +@@ -19,7 +19,7 @@ secureconfdir = $(SCONFIGDIR) + AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include \ + -DCHKPWD_HELPER=\"$(sbindir)/unix_chkpwd\" \ + -DUPDATE_HELPER=\"$(sbindir)/unix_update\" \ +- $(NIS_CFLAGS) ++ @TIRPC_CFLAGS@ @NSL_CFLAGS@ + + if HAVE_LIBSELINUX + AM_CFLAGS += -D"WITH_SELINUX" +@@ -30,7 +30,7 @@ if HAVE_VERSIONING + pam_unix_la_LDFLAGS += -Wl,--version-script=$(srcdir)/../modules.map + endif + pam_unix_la_LIBADD = $(top_builddir)/libpam/libpam.la \ +- @LIBCRYPT@ @LIBSELINUX@ $(NIS_LIBS) ++ @LIBCRYPT@ @LIBSELINUX@ @TIRPC_LIBS@ @NSL_LIBS@ + + securelib_LTLIBRARIES = pam_unix.la + diff --git a/pam.changes b/pam.changes index d447c3b..086ff99 100644 --- a/pam.changes +++ b/pam.changes @@ -2,6 +2,8 @@ Wed Mar 23 11:21:16 CET 2016 - kukuk@suse.de - Add 0001-Remove-YP-dependencies-from-pam_access-they-were-nev.patch +- Add 0002-Remove-enable-static-modules-option-and-support-from.patch +- Add 0003-fix-nis-checks.patch ------------------------------------------------------------------- Sat Jul 25 16:03:33 UTC 2015 - joschibrauchle@gmx.de diff --git a/pam.spec b/pam.spec index 0e4b3e5..6e9e939 100644 --- a/pam.spec +++ b/pam.spec @@ -55,6 +55,8 @@ Patch0: fix-man-links.dif Patch2: pam-limit-nproc.patch Patch3: encryption_method_nis.diff Patch4: 0001-Remove-YP-dependencies-from-pam_access-they-were-nev.patch +Patch5: 0002-Remove-enable-static-modules-option-and-support-from.patch +Patch6: 0003-fix-nis-checks.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build # Remove with next version update: BuildRequires: autoconf @@ -106,6 +108,8 @@ building both PAM-aware applications and modules for use with PAM. %patch2 -p1 %patch3 -p1 %patch4 -p1 +%patch5 -p1 +%patch6 -p1 %build autoreconf -fiv