summaryrefslogtreecommitdiff
path: root/libpam
diff options
context:
space:
mode:
Diffstat (limited to 'libpam')
-rw-r--r--libpam/Makefile170
-rw-r--r--libpam/Makefile.am28
-rw-r--r--libpam/include/security/_pam_macros.h2
-rw-r--r--libpam/include/security/_pam_types.h5
-rw-r--r--libpam/include/security/pam_malloc.h4
-rw-r--r--libpam/libpam.map38
-rw-r--r--libpam/pam_handlers.c5
-rw-r--r--libpam/pam_item.c4
-rw-r--r--libpam/pam_malloc.c26
-rw-r--r--libpam/pam_prelude.c4
-rw-r--r--libpam/pam_second.c12
-rw-r--r--libpam/pam_static.c10
-rw-r--r--libpam/pam_strerror.c2
13 files changed, 84 insertions, 226 deletions
diff --git a/libpam/Makefile b/libpam/Makefile
deleted file mode 100644
index 269bc091..00000000
--- a/libpam/Makefile
+++ /dev/null
@@ -1,170 +0,0 @@
-#
-# $Id$
-#
-#
-
-include ../Make.Rules
-
-# need to tell libpam about the default directory for PAMs
-MOREFLAGS=-D"DEFAULT_MODULE_PATH=\"$(SECUREDIR)/\""
-
-ifeq ($(WITH_LIBDEBUG),yes)
- LIBNAME=libpamd
- CFLAGS += -D"DEBUG"
- CFLAGS += -g
-else
- LIBNAME=libpam
-endif
-ifeq ($(WITH_PRELUDE),yes)
- CFLAGS += -DPRELUDE -DLIBPRELUDE_CONFIG_PREFIX=\"`libprelude-config --prefix`\"
- LINKLIBS += -lprelude
-endif
-VERSION=.$(MAJOR_REL)
-MODIFICATION=.$(MINOR_REL)
-
-# ---------------------------------------------
-
-dummy: ../Make.Rules all
-
-# ---------------------------------------------
-
-CFLAGS += $(DYNAMIC) $(STATIC) $(MOREFLAGS) \
- -DLIBPAM_VERSION_MAJOR=$(MAJOR_REL) \
- -DLIBPAM_VERSION_MINOR=$(MINOR_REL) \
- -DLIBPAM_VERSION_STRING=\"$(MAJOR_REL).$(MINOR_REL)\"
-
-# dynamic library names
-
-LIBPAM = $(LIBNAME).$(DYNTYPE)
-LIBPAMNAME = $(LIBPAM)$(VERSION)
-LIBPAMFULL = $(LIBPAMNAME)$(MODIFICATION)
-
-# static library name
-
-LIBPAMSTATIC = $(LIBNAME).a
-
-ifdef STATIC
-# @echo Did you mean to set STATIC\?
-MODULES = $(shell cat ../modules/_static_module_objects)
-STATICOBJ = pam_static.o
-else
-MODULES =
-endif
-
-ifeq ($(WITH_MEMORY_DEBUG),yes)
-EXTRAS += pam_malloc.o
-endif
-
-LIBOBJECTS = pam_item.o pam_strerror.o pam_end.o pam_start.o pam_data.o \
- pam_delay.o pam_dispatch.o pam_handlers.o pam_misc.o \
- pam_account.o pam_auth.o pam_prelude.o pam_session.o pam_password.o \
- pam_env.o pam_log.o $(EXTRAS)
-
-ifeq ($(DYNAMIC_LIBPAM),yes)
-# libpam.so needs -ldl, too.
-DLIBOBJECTS = $(addprefix dynamic/,$(LIBOBJECTS) $(STATICOBJ))
-ifeq ($(STATICOBJ),yes)
-dynamic/pam_static.o: pam_static.c ../modules/_static_module_objects
- $(CC) $(CFLAGS) -c pam_static.c -o $@
-endif
-endif
-
-ifeq ($(STATIC_LIBPAM),yes)
-SLIBOBJECTS = $(addprefix static/,$(LIBOBJECTS) $(STATICOBJ))
-ifdef STATICOBJ
-static/pam_static.o: pam_static.c ../modules/_static_module_objects
- $(CC) $(CFLAGS) -c pam_static.c -o $@
-endif
-endif
-
-# ---------------------------------------------
-## rules
-
-all: dirs $(LIBPAM) $(LIBPAMSTATIC) ../Make.Rules
-
-dirs:
-ifeq ($(DYNAMIC_LIBPAM),yes)
- $(MKDIR) dynamic
-endif
-ifeq ($(STATIC_LIBPAM),yes)
- $(MKDIR) static
-endif
-
-dynamic/%.o : %.c
- $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
-
-static/%.o : %.c
- $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@
-bootstrap-libpam: bootdir $(LIBPAM)
-bootdir:
- test -d dynamic || mkdir dynamic
-
-$(LIBPAM): $(DLIBOBJECTS)
-ifeq ($(DYNAMIC_LIBPAM),yes)
- ifeq ($(USESONAME),yes)
- $(LD_L) $(SOSWITCH)$(LIBPAMNAME) -o $@ $(DLIBOBJECTS) \
- $(MODULES) $(LINKLIBS)
- else
- $(LD_L) -o $@ $(DLIBOBJECTS) $(MODULES) $(LINKLIBS)
- endif
- ifeq ($(NEEDSONAME),yes)
- rm -f $(LIBPAMFULL)
- ln -sf $(LIBPAM) $(LIBPAMFULL)
- rm -f $(LIBPAMNAME)
- ln -sf $(LIBPAM) $(LIBPAMNAME)
- endif
-endif
-
-$(LIBPAMSTATIC): $(SLIBOBJECTS)
-ifeq ($(STATIC_LIBPAM),yes)
- $(AR) cru $@ $(SLIBOBJECTS) $(MODULES)
-ifdef RANLIB
- $(RANLIB) $@
-endif
-endif
-
-install: all
- $(MKDIR) $(FAKEROOT)$(INCLUDED) $(FAKEROOT)$(libdir)
- $(INSTALL) -m 644 include/security/pam_appl.h $(FAKEROOT)$(INCLUDED)
- $(INSTALL) -m 644 include/security/pam_modules.h $(FAKEROOT)$(INCLUDED)
- $(INSTALL) -m 644 include/security/_pam_macros.h $(FAKEROOT)$(INCLUDED)
- $(INSTALL) -m 644 include/security/_pam_types.h $(FAKEROOT)$(INCLUDED)
- $(INSTALL) -m 644 include/security/_pam_compat.h $(FAKEROOT)$(INCLUDED)
-ifdef MEMORY_DEBUG
- $(INSTALL) -m 644 include/security/pam_malloc.h $(FAKEROOT)$(INCLUDED)
-endif
-ifeq ($(DYNAMIC_LIBPAM),yes)
- $(INSTALL) -m $(SHLIBMODE) $(LIBPAM) $(FAKEROOT)$(libdir)/$(LIBPAMFULL)
-ifndef FAKEROOT
- $(LDCONFIG)
-else
- $(LDCONFIG) -n $(FAKEROOT)$(libdir)
-endif
- ifneq ($(DYNTYPE),"sl")
- ( cd $(FAKEROOT)$(libdir) ; rm -f $(LIBPAM) ; \
- ln -sf $(LIBPAMNAME) $(LIBPAM) )
- endif
-endif
-ifeq ($(STATIC_LIBPAM),yes)
- $(INSTALL) -m 644 $(LIBPAMSTATIC) $(FAKEROOT)$(libdir)
-endif
-
-remove:
- rm -f $(FAKEROOT)$(INCLUDED)/_pam_types.h
- rm -f $(FAKEROOT)$(INCLUDED)/_pam_macros.h
- rm -f $(FAKEROOT)$(INCLUDED)/pam_appl.h
- rm -f $(FAKEROOT)$(INCLUDED)/pam_modules.h
- rm -f $(FAKEROOT)$(INCLUDED)/pam_malloc.h
- rm -f $(FAKEROOT)$(libdir)/$(LIBPAM).*
- rm -f $(FAKEROOT)$(libdir)/$(LIBPAM)
-ifndef FAKEROOT
- $(LDCONFIG)
-endif
- rm -f $(FAKEROOT)$(libdir)/$(LIBPAMSTATIC)
-
-clean:
- rm -f a.out core *~ static/*.o dynamic/*.o
- rm -f *.orig $(LIBPAMNAME) $(LIBPAMFULL)
- rm -f *.a *.o *.so ./include/security/*~
- if [ -d dynamic ]; then rmdir dynamic ; fi
- if [ -d static ]; then rmdir static ; fi
diff --git a/libpam/Makefile.am b/libpam/Makefile.am
new file mode 100644
index 00000000..b7ac5a33
--- /dev/null
+++ b/libpam/Makefile.am
@@ -0,0 +1,28 @@
+#
+# Copyright (c) 2005 Thorsten Kukuk <kukuk@suse.de>
+#
+
+AM_CFLAGS = -DDEFAULT_MODULE_PATH=\"$(SECUREDIR)/\" \
+ -I$(srcdir)/include $(LIBPRELUDE_CFLAGS) -DPAM_VERSION=\"$(VERSION)\"
+AM_LDFLAGS = $(LIBPRELUDE_LIBS) @LIBDL@
+
+CLEANFILES = *~
+
+EXTRA_DIST = libpam.map pam_map.c
+
+include_HEADERS = $(addprefix include/security/, _pam_compat.h _pam_macros.h _pam_types.h pam_appl.h pam_malloc.h pam_modules.h)
+
+noinst_HEADERS = pam_prelude.h pam_private.h pam_tokens.h
+
+libpam_la_LDFLAGS = -version-info 1:0:0
+if HAVE_VERSIONING
+ libpam_la_LDFLAGS += -Wl,--version-script=libpam.map
+endif
+
+lib_LTLIBRARIES = libpam.la
+
+libpam_la_SOURCES = pam_account.c pam_auth.c pam_data.c pam_delay.c \
+ pam_dispatch.c pam_end.c pam_env.c pam_handlers.c pam_item.c \
+ pam_log.c pam_malloc.c pam_misc.c pam_password.c \
+ pam_prelude.c pam_second.c pam_session.c pam_start.c \
+ pam_static.c pam_strerror.c
diff --git a/libpam/include/security/_pam_macros.h b/libpam/include/security/_pam_macros.h
index 2827fabf..e328d989 100644
--- a/libpam/include/security/_pam_macros.h
+++ b/libpam/include/security/_pam_macros.h
@@ -9,8 +9,8 @@
/* a 'safe' version of strdup */
-#include <string.h>
#include <stdlib.h>
+#include <string.h>
#define x_strdup(s) ( (s) ? strdup(s):NULL )
diff --git a/libpam/include/security/_pam_types.h b/libpam/include/security/_pam_types.h
index a48a7942..366b7e04 100644
--- a/libpam/include/security/_pam_types.h
+++ b/libpam/include/security/_pam_types.h
@@ -14,11 +14,6 @@
#ifndef _SECURITY__PAM_TYPES_H
#define _SECURITY__PAM_TYPES_H
-#ifndef __LIBPAM_VERSION
-# define __LIBPAM_VERSION __libpam_version
-#endif
-extern unsigned int __libpam_version;
-
/*
* include local definition for POSIX - NULL
*/
diff --git a/libpam/include/security/pam_malloc.h b/libpam/include/security/pam_malloc.h
index cc95d7de..05ca16f0 100644
--- a/libpam/include/security/pam_malloc.h
+++ b/libpam/include/security/pam_malloc.h
@@ -18,11 +18,9 @@
#define malloc(s) pam_malloc(s,__FILE__,__FUNCTION__,__LINE__)
#define calloc(n,s) pam_calloc(n,s,__FILE__,__FUNCTION__,__LINE__)
#define free(x) pam_free(x,__FILE__,__FUNCTION__,__LINE__)
-/* #define memalign(a,s) pam_memalign(a,s,__FILE__,__FUNCTION__,__LINE__) */
#define realloc(x,s) pam_realloc(x,s,__FILE__,__FUNCTION__,__LINE__)
-/* #define valloc(s) pam_valloc(s,__FILE__,__FUNCTION__,__LINE__) */
-/* #define alloca(s) pam_alloca(s,__FILE__,__FUNCTION__,__LINE__) */
#define exit(i) pam_exit(i,__FILE__,__FUNCTION__,__LINE__)
+#undef strdup
#define strdup(s) pam_strdup(s,__FILE__,__FUNCTION__,__LINE__)
/* these are the prototypes for the wrapper functions */
diff --git a/libpam/libpam.map b/libpam/libpam.map
new file mode 100644
index 00000000..66bfed9b
--- /dev/null
+++ b/libpam/libpam.map
@@ -0,0 +1,38 @@
+LIBPAM_1.0 {
+ global:
+ pam_acct_mgmt;
+ pam_authenticate;
+ pam_authenticate_secondary;
+ pam_chauthtok;
+ pam_close_session;
+ pam_end;
+ pam_open_session;
+ pam_setcred;
+ pam_start;
+ pam_getenv;
+ pam_putenv;
+ pam_getenvlist;
+ pam_set_item;
+ pam_get_item;
+ pam_strerror;
+ pam_fail_delay;
+ pam_set_data;
+ pam_get_data;
+ pam_get_user;
+ pam_get_mapped_authtok;
+ pam_set_mapped_authtok;
+ pam_get_mapped_username;
+ pam_set_mapped_username;
+
+ local:
+ *;
+};
+LIBPAM_MALLOC_DEBUG_1.0 {
+ global:
+ pam_malloc;
+ pam_calloc;
+ pam_free;
+ pam_realloc;
+ pam_exit;
+ pam_strdup;
+};
diff --git a/libpam/pam_handlers.c b/libpam/pam_handlers.c
index ef444c58..3e861115 100644
--- a/libpam/pam_handlers.c
+++ b/libpam/pam_handlers.c
@@ -594,7 +594,10 @@ int _pam_add_handler(pam_handle_t *pamh
#ifdef PAM_SHL
const char *_sym, *_sym2;
#endif
- char *mod_full_path=NULL, *mod_full_isa_path=NULL, *isa=NULL;
+ char *mod_full_path=NULL;
+#ifdef PAM_DYNAMIC
+ char *mod_full_isa_path=NULL, *isa=NULL;
+#endif
servicefn func, func2;
int success;
diff --git a/libpam/pam_item.c b/libpam/pam_item.c
index 230f5068..96e88247 100644
--- a/libpam/pam_item.c
+++ b/libpam/pam_item.c
@@ -21,10 +21,6 @@
} \
}
-/* handy version id */
-
-unsigned int __libpam_version = LIBPAM_VERSION;
-
/* functions */
int pam_set_item (pam_handle_t *pamh, int item_type, const void *item)
diff --git a/libpam/pam_malloc.c b/libpam/pam_malloc.c
index 75a1045d..f899c283 100644
--- a/libpam/pam_malloc.c
+++ b/libpam/pam_malloc.c
@@ -323,14 +323,6 @@ void pam_free(void *ptr
}
}
-void *pam_memalign(size_t ali, size_t size
- , const char *file, const char *fn, const int line)
-{
- _fn("memalign");
- if (on(0)) err(("not implemented currently (Sorry)"));
- exit(1);
-}
-
void *pam_realloc(void *ptr, size_t size
, const char *file, const char *fn, const int line)
{
@@ -363,24 +355,6 @@ void *pam_realloc(void *ptr, size_t size
return new;
}
-void *pam_valloc(size_t size
- , const char *file, const char *fn, const int line)
-{
- _fn("valloc");
- if (on(0)) err(("not implemented currently (Sorry)"));
- exit(1);
-}
-
-#include <alloca.h>
-
-void *pam_alloca(size_t size
- , const char *file, const char *fn, const int line)
-{
- _fn("alloca");
- if (on(0)) err(("not implemented currently (Sorry)"));
- exit(1);
-}
-
void pam_exit(int i
, const char *file, const char *fn, const int line)
{
diff --git a/libpam/pam_prelude.c b/libpam/pam_prelude.c
index 6226db5f..a6eaca5d 100644
--- a/libpam/pam_prelude.c
+++ b/libpam/pam_prelude.c
@@ -23,10 +23,6 @@
#define ANALYZER_MANUFACTURER "Sebastien Tricaud, http://www.kernel.org/pub/linux/libs/pam/"
#define DEFAULT_ANALYZER_NAME "PAM"
-#define DEFAULT_ANALYZER_CONFIG LIBPRELUDE_CONFIG_PREFIX "/etc/prelude/default/idmef-client.conf"
-
-#define PAM_VERSION LIBPAM_VERSION_STRING
-
static const char *
pam_get_item_service(pam_handle_t *pamh)
diff --git a/libpam/pam_second.c b/libpam/pam_second.c
index 31bdc6cb..75d86650 100644
--- a/libpam/pam_second.c
+++ b/libpam/pam_second.c
@@ -25,12 +25,12 @@ int pam_authenticate_secondary(pam_handle_t *pamh,
int flags);
int pam_authenticate_secondary(pam_handle_t *pamh,
- char *target_username,
- char *target_module_type,
- char *target_authn_domain,
- char *target_supp_data,
- unsigned char *target_module_authtok,
- int flags)
+ char *target_username UNUSED,
+ char *target_module_type UNUSED,
+ char *target_authn_domain UNUSED,
+ char *target_supp_data UNUSED,
+ unsigned char *target_module_authtok UNUSED,
+ int flags UNUSED)
{
int retval=PAM_SYSTEM_ERR;
diff --git a/libpam/pam_static.c b/libpam/pam_static.c
index 64a3dd31..db73c127 100644
--- a/libpam/pam_static.c
+++ b/libpam/pam_static.c
@@ -47,7 +47,7 @@ struct pam_module * _pam_open_static_handler(const char *path)
if (strchr(clpath, '/')) {
/* ignore path and leading "/" */
- clpath = strrchr(lpath, '/') + 1;
+ clpath = strrchr(path, '/') + 1;
}
/* create copy to muck with (must free before return) */
lpath = _pam_strdup(clpath);
@@ -68,8 +68,8 @@ struct pam_module * _pam_open_static_handler(const char *path)
}
if (static_modules[i] == NULL) {
- _pam_system_log(NULL, NULL, LOG_ERR, "no static module named %s",
- lpath);
+ _pam_system_log (LOG_ERR, "no static module named %s",
+ lpath);
}
free(lpath);
@@ -120,13 +120,13 @@ voidfunc *_pam_get_static_sym(struct pam_module *mod, const char *symname) {
* 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
diff --git a/libpam/pam_strerror.c b/libpam/pam_strerror.c
index ecdad0c0..ca7bde83 100644
--- a/libpam/pam_strerror.c
+++ b/libpam/pam_strerror.c
@@ -6,7 +6,7 @@
#include "pam_private.h"
-const char *pam_strerror(pam_handle_t *pamh, int errnum)
+const char *pam_strerror(pam_handle_t *pamh UNUSED, int errnum)
{
switch (errnum) {
case PAM_SUCCESS: