merge r787,r830-r840,r845,r852-r853: build and packaging improvements
merge r854: silence all cast-qual warnings except in test suite git-svn-id: svn+ssh://svn.openpam.org/svn/openpam/branches/nooath@855 185d5e19-27fe-0310-9dcf-9bff6b9f3609
This commit is contained in:
parent
3f96e13f70
commit
6b947dd00a
1
CREDITS
1
CREDITS
|
@ -21,6 +21,7 @@ ideas:
|
||||||
Christos Zoulas <christos@netbsd.org>
|
Christos Zoulas <christos@netbsd.org>
|
||||||
Daniel Richard G. <skunk@iskunk.org>
|
Daniel Richard G. <skunk@iskunk.org>
|
||||||
Darren J. Moffat <darren.moffat@sun.com>
|
Darren J. Moffat <darren.moffat@sun.com>
|
||||||
|
Dimitry Andric <dim@freebsd.org>
|
||||||
Dmitry V. Levin <ldv@altlinux.org>
|
Dmitry V. Levin <ldv@altlinux.org>
|
||||||
Don Lewis <truckman@freebsd.org>
|
Don Lewis <truckman@freebsd.org>
|
||||||
Emmanuel Dreyfus <manu@netbsd.org>
|
Emmanuel Dreyfus <manu@netbsd.org>
|
||||||
|
|
15
README
15
README
|
@ -7,19 +7,4 @@ implementations disagree, OpenPAM tries to remain compatible with
|
||||||
Solaris, at the expense of XSSO conformance and Linux-PAM
|
Solaris, at the expense of XSSO conformance and Linux-PAM
|
||||||
compatibility.
|
compatibility.
|
||||||
|
|
||||||
These are some of OpenPAM's features:
|
|
||||||
|
|
||||||
- Implements the complete PAM API as described in the original PAM
|
|
||||||
paper and in OSF-RFC 86.0; this corresponds to the full XSSO API
|
|
||||||
except for mappings and secondary authentication. Also
|
|
||||||
implements some extensions found in Solaris 9.
|
|
||||||
|
|
||||||
- Extends the API with several useful and time-saving functions.
|
|
||||||
|
|
||||||
- Performs strict checking of return values from service modules.
|
|
||||||
|
|
||||||
- Reads configuration from /etc/pam.d/, /etc/pam.conf,
|
|
||||||
/usr/local/etc/pam.d/ and /usr/local/etc/pam.conf, in that order;
|
|
||||||
this will be made configurable in a future release.
|
|
||||||
|
|
||||||
Please direct bug reports and inquiries to <des@des.no>.
|
Please direct bug reports and inquiries to <des@des.no>.
|
||||||
|
|
13
autogen.des
13
autogen.des
|
@ -10,6 +10,19 @@ set -ex
|
||||||
# autoconf prior to 2.62 has issues with zsh 4.2 and newer
|
# autoconf prior to 2.62 has issues with zsh 4.2 and newer
|
||||||
export CONFIG_SHELL=/bin/sh
|
export CONFIG_SHELL=/bin/sh
|
||||||
|
|
||||||
|
# BullseyeCoverage needs to know exactly which compiler we're using
|
||||||
|
if [ -z "$CC" -a -z "$CPP" -a -z "$CXX" ] ; then
|
||||||
|
if $(which clang clang++ >/dev/null) ; then
|
||||||
|
export CC=${CC:-clang}
|
||||||
|
export CPP=${CPP:-clang -E}
|
||||||
|
export CXX=${CXX:-clang++}
|
||||||
|
elif $(which gcc g++ >/dev/null) ; then
|
||||||
|
export CC=${CC:-gcc}
|
||||||
|
export CPP=${CPP:-gcc -E}
|
||||||
|
export CXX=${CXX:-g++}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
./configure \
|
./configure \
|
||||||
--with-doc \
|
--with-doc \
|
||||||
--with-pam-unix \
|
--with-pam-unix \
|
||||||
|
|
|
@ -4,4 +4,8 @@ AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/lib/libpam
|
||||||
|
|
||||||
noinst_PROGRAMS = openpam_dump_policy
|
noinst_PROGRAMS = openpam_dump_policy
|
||||||
openpam_dump_policy_SOURCES = openpam_dump_policy.c
|
openpam_dump_policy_SOURCES = openpam_dump_policy.c
|
||||||
|
if WITH_SYSTEM_LIBPAM
|
||||||
|
openpam_dump_policy_LDADD = $(SYSTEM_LIBPAM)
|
||||||
|
else
|
||||||
openpam_dump_policy_LDADD = $(top_builddir)/lib/libpam/libpam.la
|
openpam_dump_policy_LDADD = $(top_builddir)/lib/libpam/libpam.la
|
||||||
|
endif
|
||||||
|
|
|
@ -4,6 +4,10 @@ AM_CPPFLAGS = -I$(top_srcdir)/include
|
||||||
|
|
||||||
bin_PROGRAMS = pamtest
|
bin_PROGRAMS = pamtest
|
||||||
pamtest_SOURCES = pamtest.c
|
pamtest_SOURCES = pamtest.c
|
||||||
|
if WITH_SYSTEM_LIBPAM
|
||||||
|
pamtest_LDADD = $(SYSTEM_LIBPAM)
|
||||||
|
else
|
||||||
pamtest_LDADD = $(top_builddir)/lib/libpam/libpam.la
|
pamtest_LDADD = $(top_builddir)/lib/libpam/libpam.la
|
||||||
|
endif
|
||||||
|
|
||||||
dist_man1_MANS = pamtest.1
|
dist_man1_MANS = pamtest.1
|
||||||
|
|
|
@ -4,6 +4,10 @@ AM_CPPFLAGS = -I$(top_srcdir)/include
|
||||||
|
|
||||||
bin_PROGRAMS = su
|
bin_PROGRAMS = su
|
||||||
su_SOURCES = su.c
|
su_SOURCES = su.c
|
||||||
|
if WITH_SYSTEM_LIBPAM
|
||||||
|
su_LDADD = $(SYSTEM_LIBPAM)
|
||||||
|
else
|
||||||
su_LDADD = $(top_builddir)/lib/libpam/libpam.la
|
su_LDADD = $(top_builddir)/lib/libpam/libpam.la
|
||||||
|
endif
|
||||||
|
|
||||||
dist_man1_MANS = su.1
|
dist_man1_MANS = su.1
|
||||||
|
|
29
configure.ac
29
configure.ac
|
@ -79,6 +79,18 @@ AC_ARG_WITH(su,
|
||||||
[with_su=no])
|
[with_su=no])
|
||||||
AM_CONDITIONAL([WITH_SU], [test x"$with_su" = x"yes"])
|
AM_CONDITIONAL([WITH_SU], [test x"$with_su" = x"yes"])
|
||||||
|
|
||||||
|
AC_ARG_WITH(system-libpam,
|
||||||
|
AC_HELP_STRING([--with-system-libpam], [use system libpam]),
|
||||||
|
[],
|
||||||
|
[with_system_libpam=no])
|
||||||
|
AM_CONDITIONAL([WITH_SYSTEM_LIBPAM], [test x"$with_system_libpam" = x"yes"])
|
||||||
|
|
||||||
|
AC_ARG_WITH(system-liboath,
|
||||||
|
AC_HELP_STRING([--with-system-liboath], [use system liboath]),
|
||||||
|
[],
|
||||||
|
[with_system_liboath=no])
|
||||||
|
AM_CONDITIONAL([WITH_SYSTEM_LIBOATH], [test x"$with_system_liboath" = x"yes"])
|
||||||
|
|
||||||
AC_CHECK_HEADERS([crypt.h])
|
AC_CHECK_HEADERS([crypt.h])
|
||||||
|
|
||||||
AC_CHECK_FUNCS([asprintf vasprintf])
|
AC_CHECK_FUNCS([asprintf vasprintf])
|
||||||
|
@ -108,9 +120,23 @@ CRYPTO_LIBS="${LIBS}"
|
||||||
LIBS="${saved_LIBS}"
|
LIBS="${saved_LIBS}"
|
||||||
AC_SUBST(CRYPTO_LIBS)
|
AC_SUBST(CRYPTO_LIBS)
|
||||||
|
|
||||||
|
saved_LIBS="${LIBS}"
|
||||||
|
LIBS=""
|
||||||
|
AC_CHECK_LIB([pam], [pam_start])
|
||||||
|
SYSTEM_LIBPAM="${LIBS}"
|
||||||
|
LIBS="${saved_LIBS}"
|
||||||
|
AC_SUBST(SYSTEM_LIBPAM)
|
||||||
|
|
||||||
|
saved_LIBS="${LIBS}"
|
||||||
|
LIBS=""
|
||||||
|
AC_CHECK_LIB([oath], [oath_key_alloc])
|
||||||
|
SYSTEM_LIBOATH="${LIBS}"
|
||||||
|
LIBS="${saved_LIBS}"
|
||||||
|
AC_SUBST(SYSTEM_LIBOATH)
|
||||||
|
|
||||||
AC_ARG_ENABLE([developer-warnings],
|
AC_ARG_ENABLE([developer-warnings],
|
||||||
AS_HELP_STRING([--enable-developer-warnings], [enable strict warnings (default is NO)]),
|
AS_HELP_STRING([--enable-developer-warnings], [enable strict warnings (default is NO)]),
|
||||||
[CFLAGS="${CFLAGS} -Wall -Wextra"])
|
[CFLAGS="${CFLAGS} -Wall -Wextra -Wcast-qual"])
|
||||||
AC_ARG_ENABLE([debugging-symbols],
|
AC_ARG_ENABLE([debugging-symbols],
|
||||||
AS_HELP_STRING([--enable-debugging-symbols], [enable debugging symbols (default is NO)]),
|
AS_HELP_STRING([--enable-debugging-symbols], [enable debugging symbols (default is NO)]),
|
||||||
[CFLAGS="${CFLAGS} -O0 -g -fno-inline"])
|
[CFLAGS="${CFLAGS} -O0 -g -fno-inline"])
|
||||||
|
@ -136,6 +162,5 @@ AC_CONFIG_FILES([
|
||||||
modules/pam_unix/Makefile
|
modules/pam_unix/Makefile
|
||||||
t/Makefile
|
t/Makefile
|
||||||
])
|
])
|
||||||
AC_CONFIG_FILES([pamgdb],[chmod +x pamgdb])
|
|
||||||
AC_CONFIG_FILES([mkpkgng],[chmod +x mkpkgng])
|
AC_CONFIG_FILES([mkpkgng],[chmod +x mkpkgng])
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|
|
@ -65,6 +65,10 @@ EXTRA_DIST = openpam.man pam.man
|
||||||
|
|
||||||
ALLCMAN = $(PMAN) $(MMAN) $(OMAN)
|
ALLCMAN = $(PMAN) $(MMAN) $(OMAN)
|
||||||
GENMAN = $(ALLCMAN) openpam.3 pam.3
|
GENMAN = $(ALLCMAN) openpam.3 pam.3
|
||||||
|
endif
|
||||||
|
|
||||||
|
ALLCMAN = $(PAMCMAN) $(OATHCMAN)
|
||||||
|
GENMAN = $(ALLCMAN) $(PAMXMAN) $(OATHXMAN)
|
||||||
|
|
||||||
dist_man3_MANS = $(GENMAN) pam_conv.3
|
dist_man3_MANS = $(GENMAN) pam_conv.3
|
||||||
|
|
||||||
|
@ -75,6 +79,7 @@ CLEANFILES = $(GENMAN)
|
||||||
GENDOC = $(top_srcdir)/misc/gendoc.pl
|
GENDOC = $(top_srcdir)/misc/gendoc.pl
|
||||||
|
|
||||||
LIBSRCDIR = $(top_srcdir)/lib/libpam
|
LIBSRCDIR = $(top_srcdir)/lib/libpam
|
||||||
|
endif
|
||||||
|
|
||||||
VPATH = $(LIBSRCDIR) $(srcdir)
|
VPATH = $(LIBSRCDIR) $(srcdir)
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
# $Id$
|
# $Id$
|
||||||
|
|
||||||
SUBDIRS = libpam
|
SUBDIRS =
|
||||||
|
|
||||||
|
if !WITH_SYSTEM_LIBPAM
|
||||||
|
SUBDIRS += libpam
|
||||||
|
endif
|
||||||
|
|
|
@ -79,8 +79,8 @@ libpam_la_SOURCES = \
|
||||||
pam_vprompt.c \
|
pam_vprompt.c \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
libpam_la_LDFLAGS = -no-undefined -version-info @LIB_MAJ@
|
libpam_la_LDFLAGS = -no-undefined -version-info $(LIB_MAJ)
|
||||||
libpam_la_LIBADD = @DL_LIBS@
|
libpam_la_LIBADD = $(DL_LIBS)
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
pam_authenticate_secondary.c \
|
pam_authenticate_secondary.c \
|
||||||
|
|
|
@ -117,7 +117,7 @@ openpam_dispatch(pam_handle_t *pamh,
|
||||||
openpam_log(PAM_LOG_LIBDEBUG, "calling %s() in %s",
|
openpam_log(PAM_LOG_LIBDEBUG, "calling %s() in %s",
|
||||||
pam_sm_func_name[primitive], chain->module->path);
|
pam_sm_func_name[primitive], chain->module->path);
|
||||||
r = (chain->module->func[primitive])(pamh, flags,
|
r = (chain->module->func[primitive])(pamh, flags,
|
||||||
chain->optc, (const char **)chain->optv);
|
chain->optc, (const char **)(intptr_t)chain->optv);
|
||||||
pamh->current = NULL;
|
pamh->current = NULL;
|
||||||
openpam_log(PAM_LOG_LIBDEBUG, "%s: %s(): %s",
|
openpam_log(PAM_LOG_LIBDEBUG, "%s: %s(): %s",
|
||||||
chain->module->path, pam_sm_func_name[primitive],
|
chain->module->path, pam_sm_func_name[primitive],
|
||||||
|
|
|
@ -84,6 +84,7 @@ openpam_load_module(const char *modulename)
|
||||||
static void
|
static void
|
||||||
openpam_release_module(pam_module_t *module)
|
openpam_release_module(pam_module_t *module)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (module == NULL)
|
if (module == NULL)
|
||||||
return;
|
return;
|
||||||
if (module->dlh == NULL)
|
if (module->dlh == NULL)
|
||||||
|
@ -104,6 +105,7 @@ openpam_release_module(pam_module_t *module)
|
||||||
static void
|
static void
|
||||||
openpam_destroy_chain(pam_chain_t *chain)
|
openpam_destroy_chain(pam_chain_t *chain)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (chain == NULL)
|
if (chain == NULL)
|
||||||
return;
|
return;
|
||||||
openpam_destroy_chain(chain->next);
|
openpam_destroy_chain(chain->next);
|
||||||
|
|
|
@ -292,7 +292,7 @@ sub parse_source($) {
|
||||||
}
|
}
|
||||||
s/\s*=($func)\b\s*/\n.Fn $1\n/gs;
|
s/\s*=($func)\b\s*/\n.Fn $1\n/gs;
|
||||||
s/\s*=($argnames)\b\s*/\n.Fa $1\n/gs;
|
s/\s*=($argnames)\b\s*/\n.Fa $1\n/gs;
|
||||||
s/\s*=(struct \w+(?: \*)?)\b\s*/\n.Vt $1\n/gs;
|
s/\s*=((?:enum|struct|union) \w+(?: \*)?)\b\s*/\n.Vt $1\n/gs;
|
||||||
s/\s*:([a-z][0-9a-z_]+)\b\s*/\n.Va $1\n/gs;
|
s/\s*:([a-z][0-9a-z_]+)\b\s*/\n.Va $1\n/gs;
|
||||||
s/\s*;([a-z][0-9a-z_]+)\b\s*/\n.Dv $1\n/gs;
|
s/\s*;([a-z][0-9a-z_]+)\b\s*/\n.Dv $1\n/gs;
|
||||||
s/\s*=!([a-z][0-9a-z_]+)\b\s*/\n.Xr $1 3\n/gs;
|
s/\s*=!([a-z][0-9a-z_]+)\b\s*/\n.Xr $1 3\n/gs;
|
||||||
|
|
43
mkpkgng.in
43
mkpkgng.in
|
@ -61,8 +61,6 @@ yesno() {
|
||||||
# Locate source and build directory
|
# Locate source and build directory
|
||||||
#
|
#
|
||||||
srcdir="@abs_top_srcdir@"
|
srcdir="@abs_top_srcdir@"
|
||||||
[ -f "$srcdir/include/security/openpam.h" ] || \
|
|
||||||
error "Unable to locate source directory."
|
|
||||||
builddir="@abs_top_builddir@"
|
builddir="@abs_top_builddir@"
|
||||||
cd "$srcdir"
|
cd "$srcdir"
|
||||||
|
|
||||||
|
@ -83,7 +81,8 @@ if ! expr "$version" : "[0-9]{1,}$" >/dev/null ; then
|
||||||
svnversion="$(svnversion 2>&1)"
|
svnversion="$(svnversion 2>&1)"
|
||||||
svnversion=$(expr "$svnversion" : '\([0-9][0-9]*\)[A-Z]\{0,1\}$')
|
svnversion=$(expr "$svnversion" : '\([0-9][0-9]*\)[A-Z]\{0,1\}$')
|
||||||
if [ -n "$svnversion" ] ; then
|
if [ -n "$svnversion" ] ; then
|
||||||
version="$version-r${svnversion}"
|
package="$package-$version"
|
||||||
|
version="r$svnversion"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -114,6 +113,21 @@ set -e
|
||||||
info "Installing into the temporary directory."
|
info "Installing into the temporary directory."
|
||||||
$make install DESTDIR="$tmproot"
|
$make install DESTDIR="$tmproot"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Compress man pages
|
||||||
|
#
|
||||||
|
find $tmproot -type d -name 'man[0-9]' |
|
||||||
|
while read mandir ; do
|
||||||
|
find $mandir -type f -name '*.[0-9]' |
|
||||||
|
while read manpage ; do
|
||||||
|
gzip "$manpage"
|
||||||
|
done
|
||||||
|
find $mandir -type l -name '*.[0-9]' |
|
||||||
|
while read manlink ; do
|
||||||
|
ln -s "$(readlink $manlink).gz" "$manlink.gz"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
#
|
#
|
||||||
# Generate stub manifest
|
# Generate stub manifest
|
||||||
#
|
#
|
||||||
|
@ -128,30 +142,27 @@ arch: $pkgabi
|
||||||
www: @PACKAGE_URL@
|
www: @PACKAGE_URL@
|
||||||
maintainer: @PACKAGE_BUGREPORT@
|
maintainer: @PACKAGE_BUGREPORT@
|
||||||
prefix: @prefix@
|
prefix: @prefix@
|
||||||
desc:
|
categories: [ local, security ]
|
||||||
OpenPAM is an open source PAM library that focuses on simplicity,
|
|
||||||
correctness, and cleanliness.
|
|
||||||
|
|
||||||
OpenPAM aims to gather the best features of Solaris PAM, XSSO and
|
|
||||||
Linux-PAM, plus some innovations of its own. In areas where these
|
|
||||||
implementations disagree, OpenPAM tries to remain compatible with
|
|
||||||
Solaris, at the expense of XSSO conformance and Linux-PAM
|
|
||||||
compatibility.
|
|
||||||
categories: local, security
|
|
||||||
EOF
|
EOF
|
||||||
|
cp "$srcdir/README" "$tmproot/+DESC"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Generate file list
|
# Generate file list
|
||||||
#
|
#
|
||||||
info "Generating the file list."
|
info "Generating the file list."
|
||||||
(
|
(
|
||||||
echo "files:"
|
echo "files: {"
|
||||||
find -s "$tmproot" -type f | while read file ; do
|
find -s "$tmproot@prefix@" -type f -or -type l | while read file ; do
|
||||||
[ "$file" = "$manifest" ] && continue
|
case $file in
|
||||||
|
*.la)
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
esac
|
||||||
mode=$(stat -f%p "$file" | cut -c 3-)
|
mode=$(stat -f%p "$file" | cut -c 3-)
|
||||||
file="${file#$tmproot}"
|
file="${file#$tmproot}"
|
||||||
echo " $file: { uname: root, gname: wheel, perm: $mode }"
|
echo " $file: { uname: root, gname: wheel, perm: $mode }"
|
||||||
done
|
done
|
||||||
|
echo "}"
|
||||||
)>>"$manifest"
|
)>>"$manifest"
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# $Id$
|
# $Id$
|
||||||
|
|
||||||
if CUSTOM_MODULES_DIR
|
if CUSTOM_MODULES_DIR
|
||||||
moduledir = @OPENPAM_MODULES_DIR@
|
moduledir = $(OPENPAM_MODULES_DIR)
|
||||||
else
|
else
|
||||||
moduledir = $(libdir)
|
moduledir = $(libdir)
|
||||||
endif
|
endif
|
||||||
|
@ -10,6 +10,10 @@ AM_CPPFLAGS = -I$(top_srcdir)/include
|
||||||
module_LTLIBRARIES = pam_deny.la
|
module_LTLIBRARIES = pam_deny.la
|
||||||
|
|
||||||
pam_deny_la_SOURCES = pam_deny.c
|
pam_deny_la_SOURCES = pam_deny.c
|
||||||
pam_deny_la_LDFLAGS = -no-undefined -module -version-info @LIB_MAJ@ \
|
pam_deny_la_LDFLAGS = -no-undefined -module -version-info $(LIB_MAJ) \
|
||||||
-export-symbols-regex '^pam_sm_'
|
-export-symbols-regex '^pam_sm_'
|
||||||
|
if WITH_SYSTEM_LIBPAM
|
||||||
|
pam_deny_la_LIBADD = $(SYSTEM_LIBPAM)
|
||||||
|
else
|
||||||
pam_deny_la_LIBADD = $(top_builddir)/lib/libpam/libpam.la
|
pam_deny_la_LIBADD = $(top_builddir)/lib/libpam/libpam.la
|
||||||
|
endif
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# $Id$
|
# $Id$
|
||||||
|
|
||||||
if CUSTOM_MODULES_DIR
|
if CUSTOM_MODULES_DIR
|
||||||
moduledir = @OPENPAM_MODULES_DIR@
|
moduledir = $(OPENPAM_MODULES_DIR)
|
||||||
else
|
else
|
||||||
moduledir = $(libdir)
|
moduledir = $(libdir)
|
||||||
endif
|
endif
|
||||||
|
@ -10,6 +10,10 @@ AM_CPPFLAGS = -I$(top_srcdir)/include
|
||||||
module_LTLIBRARIES = pam_permit.la
|
module_LTLIBRARIES = pam_permit.la
|
||||||
|
|
||||||
pam_permit_la_SOURCES = pam_permit.c
|
pam_permit_la_SOURCES = pam_permit.c
|
||||||
pam_permit_la_LDFLAGS = -no-undefined -module -version-info @LIB_MAJ@ \
|
pam_permit_la_LDFLAGS = -no-undefined -module -version-info $(LIB_MAJ) \
|
||||||
-export-symbols-regex '^pam_sm_'
|
-export-symbols-regex '^pam_sm_'
|
||||||
|
if WITH_SYSTEM_LIBPAM
|
||||||
|
pam_permit_la_LIBADD = $(SYSTEM_LIBPAM)
|
||||||
|
else
|
||||||
pam_permit_la_LIBADD = $(top_builddir)/lib/libpam/libpam.la
|
pam_permit_la_LIBADD = $(top_builddir)/lib/libpam/libpam.la
|
||||||
|
endif
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# $Id$
|
# $Id$
|
||||||
|
|
||||||
if CUSTOM_MODULES_DIR
|
if CUSTOM_MODULES_DIR
|
||||||
moduledir = @OPENPAM_MODULES_DIR@
|
moduledir = $(OPENPAM_MODULES_DIR)
|
||||||
else
|
else
|
||||||
moduledir = $(libdir)
|
moduledir = $(libdir)
|
||||||
endif
|
endif
|
||||||
|
@ -10,6 +10,10 @@ AM_CPPFLAGS = -I$(top_srcdir)/include
|
||||||
module_LTLIBRARIES = pam_unix.la
|
module_LTLIBRARIES = pam_unix.la
|
||||||
|
|
||||||
pam_unix_la_SOURCES = pam_unix.c
|
pam_unix_la_SOURCES = pam_unix.c
|
||||||
pam_unix_la_LDFLAGS = -no-undefined -module -version-info @LIB_MAJ@ \
|
pam_unix_la_LDFLAGS = -no-undefined -module -version-info $(LIB_MAJ) \
|
||||||
-export-symbols-regex '^pam_sm_'
|
-export-symbols-regex '^pam_sm_'
|
||||||
pam_unix_la_LIBADD = $(top_builddir)/lib/libpam/libpam.la @CRYPT_LIBS@
|
if WITH_SYSTEM_LIBPAM
|
||||||
|
pam_unix_la_LIBADD = $(SYSTEM_LIBPAM)
|
||||||
|
else
|
||||||
|
pam_unix_la_LIBADD = $(top_builddir)/lib/libpam/libpam.la $(CRYPT_LIBS)
|
||||||
|
endif
|
||||||
|
|
|
@ -74,7 +74,7 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags,
|
||||||
#endif
|
#endif
|
||||||
struct passwd *pwd;
|
struct passwd *pwd;
|
||||||
const char *user;
|
const char *user;
|
||||||
char *crypt_password, *password;
|
const char *crypt_password, *password;
|
||||||
int pam_err, retry;
|
int pam_err, retry;
|
||||||
|
|
||||||
(void)argc;
|
(void)argc;
|
||||||
|
@ -98,7 +98,7 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags,
|
||||||
for (retry = 0; retry < 3; ++retry) {
|
for (retry = 0; retry < 3; ++retry) {
|
||||||
#ifdef OPENPAM
|
#ifdef OPENPAM
|
||||||
pam_err = pam_get_authtok(pamh, PAM_AUTHTOK,
|
pam_err = pam_get_authtok(pamh, PAM_AUTHTOK,
|
||||||
(const char **)&password, NULL);
|
&password, NULL);
|
||||||
#else
|
#else
|
||||||
resp = NULL;
|
resp = NULL;
|
||||||
pam_err = (*conv->conv)(1, &msgp, &resp, conv->appdata_ptr);
|
pam_err = (*conv->conv)(1, &msgp, &resp, conv->appdata_ptr);
|
||||||
|
|
41
pamgdb.in
41
pamgdb.in
|
@ -1,41 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# $Id$
|
|
||||||
#
|
|
||||||
|
|
||||||
srcdir="@abs_top_srcdir@"
|
|
||||||
builddir="@abs_top_builddir@"
|
|
||||||
|
|
||||||
# Make sure we get the right version of libpam
|
|
||||||
pam_libdir="${builddir}/lib/.libs"
|
|
||||||
LD_LIBRARY_PATH="${pam_libdir}:${LD_LIBRARY_PATH}"
|
|
||||||
LD_LIBRARY_PATH="${LD_LIBRARY_PATH%:}"
|
|
||||||
export LD_LIBRARY_PATH
|
|
||||||
|
|
||||||
# DWIM, assuming that the first positional argument is the name of the
|
|
||||||
# program to debug rather than a gdb option.
|
|
||||||
prog="$1"
|
|
||||||
if expr "${prog}" : ".*/.*" >/dev/null ; then
|
|
||||||
# The first argument is an absolute or relative path. There
|
|
||||||
# is a good chance that it points to the wrapper script
|
|
||||||
# generated by libtool rather than the actual binary.
|
|
||||||
altprog="${prog%/*}/.libs/${prog##*/}"
|
|
||||||
if [ -x "${altprog}" ] ; then
|
|
||||||
shift
|
|
||||||
set "${altprog}" "$@"
|
|
||||||
fi
|
|
||||||
elif expr "${prog}" : "[a-z.-][a-z.-]*" >/dev/null ; then
|
|
||||||
# The first argument is just the name of the program. Look for
|
|
||||||
# it in the build directory.
|
|
||||||
for libdir in $(find "${builddir}" -type d -name .libs -print) ; do
|
|
||||||
altprog="${libdir}/${prog}"
|
|
||||||
if [ -x "${altprog}" ] ; then
|
|
||||||
shift
|
|
||||||
set "${altprog}" "$@"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Let's go!
|
|
||||||
exec gdb "$@"
|
|
|
@ -16,4 +16,9 @@ check_LIBRARIES = libt.a
|
||||||
libt_a_SOURCES = t_main.c t_file.c
|
libt_a_SOURCES = t_main.c t_file.c
|
||||||
|
|
||||||
# link with libpam and libt
|
# link with libpam and libt
|
||||||
LDADD = libt.a $(top_builddir)/lib/libpam/libpam.la
|
LDADD = libt.a
|
||||||
|
if WITH_SYSTEM_LIBPAM
|
||||||
|
LDADD += $(SYSTEM_LIBPAM)
|
||||||
|
else
|
||||||
|
LDADD += $(top_builddir)/lib/libpam/libpam.la
|
||||||
|
endif
|
||||||
|
|
|
@ -94,7 +94,7 @@ T_OC(pfcs)
|
||||||
* Boilerplate
|
* Boilerplate
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const struct t_test *t_plan[] = {
|
static const struct t_test *t_plan[] = {
|
||||||
T(t_oc_digit),
|
T(t_oc_digit),
|
||||||
T(t_oc_xdigit),
|
T(t_oc_xdigit),
|
||||||
T(t_oc_upper),
|
T(t_oc_upper),
|
||||||
|
|
|
@ -223,6 +223,20 @@ T_FUNC(whitespace_before_comment, "whitespace before comment")
|
||||||
return (ret);
|
return (ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
T_FUNC(line_continuation_within_whitespace, "line continuation within whitespace")
|
||||||
|
{
|
||||||
|
struct t_file *tf;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
tf = t_fopen(NULL);
|
||||||
|
t_fprintf(tf, "%s \\\n %s\n", hello_world[0], hello_world[1]);
|
||||||
|
t_frewind(tf);
|
||||||
|
ret = orlv_expect(tf, hello_world, 2 /*lines*/, 0 /*eof*/) &&
|
||||||
|
orlv_expect(tf, NULL, 0 /*lines*/, 1 /*eof*/);
|
||||||
|
t_fclose(tf);
|
||||||
|
return (ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* Simple words
|
* Simple words
|
||||||
|
@ -288,13 +302,14 @@ T_FUNC(unterminated_line, "unterminated line")
|
||||||
* Boilerplate
|
* Boilerplate
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const struct t_test *t_plan[] = {
|
static const struct t_test *t_plan[] = {
|
||||||
T(empty_input),
|
T(empty_input),
|
||||||
T(empty_line),
|
T(empty_line),
|
||||||
T(unterminated_empty_line),
|
T(unterminated_empty_line),
|
||||||
T(whitespace),
|
T(whitespace),
|
||||||
T(comment),
|
T(comment),
|
||||||
T(whitespace_before_comment),
|
T(whitespace_before_comment),
|
||||||
|
T(line_continuation_within_whitespace),
|
||||||
|
|
||||||
T(one_word),
|
T(one_word),
|
||||||
T(two_words),
|
T(two_words),
|
||||||
|
|
|
@ -895,9 +895,10 @@ T_FUNC(line_continuation_within_whitespace, "line continuation within whitespace
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
tf = t_fopen(NULL);
|
tf = t_fopen(NULL);
|
||||||
t_fprintf(tf, " \\\n \n");
|
t_fprintf(tf, "hello \\\n world\n");
|
||||||
t_frewind(tf);
|
t_frewind(tf);
|
||||||
ret = orw_expect(tf, NULL, 1 /*lines*/, 0 /*eof*/, 1 /*eol*/);
|
ret = orw_expect(tf, "hello", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
|
||||||
|
orw_expect(tf, "world", 1 /*lines*/, 0 /*eof*/, 1 /*eol*/);
|
||||||
t_fclose(tf);
|
t_fclose(tf);
|
||||||
return (ret);
|
return (ret);
|
||||||
}
|
}
|
||||||
|
@ -908,10 +909,10 @@ T_FUNC(line_continuation_before_whitespace, "line continuation before whitespace
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
tf = t_fopen(NULL);
|
tf = t_fopen(NULL);
|
||||||
t_fprintf(tf, "xyzzy\\\n \n");
|
t_fprintf(tf, "hello\\\n world\n");
|
||||||
t_frewind(tf);
|
t_frewind(tf);
|
||||||
ret = orw_expect(tf, "xyzzy", 1 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
|
ret = orw_expect(tf, "hello", 1 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
|
||||||
orw_expect(tf, NULL, 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
|
orw_expect(tf, "world", 0 /*lines*/, 0 /*eof*/, 1 /*eol*/);
|
||||||
t_fclose(tf);
|
t_fclose(tf);
|
||||||
return (ret);
|
return (ret);
|
||||||
}
|
}
|
||||||
|
@ -922,9 +923,10 @@ T_FUNC(line_continuation_after_whitespace, "line continuation after whitespace")
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
tf = t_fopen(NULL);
|
tf = t_fopen(NULL);
|
||||||
t_fprintf(tf, " \\\nxyzzy\n");
|
t_fprintf(tf, "hello \\\nworld\n");
|
||||||
t_frewind(tf);
|
t_frewind(tf);
|
||||||
ret = orw_expect(tf, "xyzzy", 1 /*lines*/, 0 /*eof*/, 1 /*eol*/);
|
ret = orw_expect(tf, "hello", 0 /*lines*/, 0 /*eof*/, 0 /*eol*/) &&
|
||||||
|
orw_expect(tf, "world", 1 /*lines*/, 0 /*eof*/, 1 /*eol*/);
|
||||||
t_fclose(tf);
|
t_fclose(tf);
|
||||||
return (ret);
|
return (ret);
|
||||||
}
|
}
|
||||||
|
@ -935,9 +937,9 @@ T_FUNC(line_continuation_within_word, "line continuation within word")
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
tf = t_fopen(NULL);
|
tf = t_fopen(NULL);
|
||||||
t_fprintf(tf, "xyz\\\nzy\n");
|
t_fprintf(tf, "hello\\\nworld\n");
|
||||||
t_frewind(tf);
|
t_frewind(tf);
|
||||||
ret = orw_expect(tf, "xyzzy", 1 /*lines*/, 0 /*eof*/, 1 /*eol*/);
|
ret = orw_expect(tf, "helloworld", 1 /*lines*/, 0 /*eof*/, 1 /*eol*/);
|
||||||
t_fclose(tf);
|
t_fclose(tf);
|
||||||
return (ret);
|
return (ret);
|
||||||
}
|
}
|
||||||
|
@ -947,7 +949,7 @@ T_FUNC(line_continuation_within_word, "line continuation within word")
|
||||||
* Boilerplate
|
* Boilerplate
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const struct t_test *t_plan[] = {
|
static const struct t_test *t_plan[] = {
|
||||||
T(empty_input),
|
T(empty_input),
|
||||||
T(empty_line),
|
T(empty_line),
|
||||||
T(unterminated_line),
|
T(unterminated_line),
|
||||||
|
|
Loading…
Reference in New Issue