From 6d8f508fe9bed97a12d8f2a8dd01a413d7a60560 Mon Sep 17 00:00:00 2001 From: "Andrew G. Morgan" Date: Mon, 26 Nov 2001 03:04:46 +0000 Subject: Relevant BUGIDs: 485454 Purpose of commit: revive feature Commit summary: --------------- malloc et al. debugging was not supported by the new autoconf setup, this commit rectifies that. It also adds a couple of header file inclusions that seem to be needed with recent glibc headers. --- CHANGELOG | 2 + Make.Rules.in | 1 + _pam_aconf.h.in | 13 ++ configure | 318 ++++++++++++++++++----------------- configure.in | 7 +- examples/xsh.c | 2 + libpam/Makefile | 2 +- libpam/include/security/pam_malloc.h | 18 +- libpam/pam_delay.c | 1 + libpam/pam_malloc.c | 30 +++- 10 files changed, 229 insertions(+), 165 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 800d5069..5a3d3e10 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -49,6 +49,8 @@ bug report - outstanding bugs are listed here: 0.76: please submit patches for this section with actual code/doc patches! +* pam_malloc: revived malloc debugging code, now tied to + --enable-memory-debug and added strdup() (Bug 485454 - agmorgan) * pam_tally: Nalin's fix for lastlog corruption (Bug 476985 - agmorgan) * pam_rhosts: Nalin adds support for '+hostname', and zdd fix compilation warning. (Bug 476986 - agmorgan) diff --git a/Make.Rules.in b/Make.Rules.in index 48e89206..b36f36c4 100644 --- a/Make.Rules.in +++ b/Make.Rules.in @@ -61,6 +61,7 @@ MANDIR=@MANDIR@ # configuration settings WITH_DEBUG=@WITH_DEBUG@ +WITH_MEMORY_DEBUG=@WITH_MEMORY_DEBUG@ WITH_LIBDEBUG=@WITH_LIBDEBUG@ WITH_PAMLOCKING=@WITH_PAMLOCKING@ WITH_LCKPWDF=@WITH_LCKPWDF@ diff --git a/_pam_aconf.h.in b/_pam_aconf.h.in index 1b2cea75..0569554d 100644 --- a/_pam_aconf.h.in +++ b/_pam_aconf.h.in @@ -83,4 +83,17 @@ defined, we get it from unistd.h */ #undef HAVE_SYS_FSUID_H +/* track all memory allocations and liberations */ +#undef MEMORY_DEBUG +#ifdef MEMORY_DEBUG +/* + * this is basically a hack - we need to include a semiarbitrary + * number of headers to ensure that we don't get silly prototype/macro + * confusion. + */ +# include +# include +# include +#endif /* MEMORY_DEBUG */ + #endif /* PAM_ACONF_H */ diff --git a/configure b/configure index f4b21869..19ef1c20 100755 --- a/configure +++ b/configure @@ -13,7 +13,9 @@ ac_default_prefix=/usr/local # Any additions from configure.in: ac_default_prefix= ac_help="$ac_help - --enable-debug qspecify you are building with debugging on" + --enable-debug specify you are building with debugging on" +ac_help="$ac_help + --enable-memory-debug specify you want every malloc etc. call tracked" ac_help="$ac_help --enable-libdebug specify you are building debugging libraries" ac_help="$ac_help @@ -603,7 +605,7 @@ fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:607: checking for $ac_word" >&5 +echo "configure:609: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -633,7 +635,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:637: checking for $ac_word" >&5 +echo "configure:639: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -684,7 +686,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:688: checking for $ac_word" >&5 +echo "configure:690: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -716,7 +718,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:720: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:722: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -727,12 +729,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 731 "configure" +#line 733 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:736: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -758,12 +760,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:762: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:764: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:767: checking whether we are using GNU C" >&5 +echo "configure:769: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -772,7 +774,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:776: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:778: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -791,7 +793,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:795: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:797: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -827,7 +829,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:831: checking for $ac_word" >&5 +echo "configure:833: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -860,7 +862,7 @@ test -n "$YACC" || YACC="yacc" # Extract the first word of "flex", so it can be a program name with args. set dummy flex; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:864: checking for $ac_word" >&5 +echo "configure:866: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -894,7 +896,7 @@ then *) ac_lib=l ;; esac echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6 -echo "configure:898: checking for yywrap in -l$ac_lib" >&5 +echo "configure:900: checking for yywrap in -l$ac_lib" >&5 ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -902,7 +904,7 @@ else ac_save_LIBS="$LIBS" LIBS="-l$ac_lib $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:919: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -936,7 +938,7 @@ fi fi echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:940: checking whether ln -s works" >&5 +echo "configure:942: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -957,7 +959,7 @@ else fi echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:961: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:963: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -998,6 +1000,19 @@ fi +# Check whether --enable-memory-debug or --disable-memory-debug was given. +if test "${enable_memory_debug+set}" = set; then + enableval="$enable_memory_debug" + WITH_MEMORY_DEBUG=yes ; cat >> confdefs.h <<\EOF +#define MEMORY_DEBUG 1 +EOF + +else + WITH_MEMORY_DEBUG=no +fi + + + # Check whether --enable-libdebug or --disable-libdebug was given. if test "${enable_libdebug+set}" = set; then enableval="$enable_libdebug" @@ -1155,7 +1170,7 @@ fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1159: checking how to run the C preprocessor" >&5 +echo "configure:1174: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1170,13 +1185,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1180: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1195: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1187,13 +1202,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1197: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1212: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1204,13 +1219,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1214: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1229: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1238,17 +1253,17 @@ for ac_hdr in paths.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1242: checking for $ac_hdr" >&5 +echo "configure:1257: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1252: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1267: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1287,7 +1302,7 @@ else pam_mail_spool="\"/var/spool/mail\"" else cat > conftest.$ac_ext < @@ -1299,7 +1314,7 @@ exit(1); #endif } EOF -if { (eval echo configure:1303: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then pam_mail_spool="_PATH_MAILDIR" else @@ -1318,7 +1333,7 @@ EOF echo $ac_n "checking for __libc_sched_setscheduler in -lc""... $ac_c" 1>&6 -echo "configure:1322: checking for __libc_sched_setscheduler in -lc" >&5 +echo "configure:1337: checking for __libc_sched_setscheduler in -lc" >&5 ac_lib_var=`echo c'_'__libc_sched_setscheduler | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1326,7 +1341,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1361,7 +1376,7 @@ fi echo $ac_n "checking for lckpwdf in -lc""... $ac_c" 1>&6 -echo "configure:1365: checking for lckpwdf in -lc" >&5 +echo "configure:1380: checking for lckpwdf in -lc" >&5 ac_lib_var=`echo c'_'lckpwdf | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1369,7 +1384,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1399: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1404,7 +1419,7 @@ fi echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:1408: checking for dlopen in -ldl" >&5 +echo "configure:1423: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1412,7 +1427,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1446,7 +1461,7 @@ fi echo $ac_n "checking for FascistCheck in -lcrack""... $ac_c" 1>&6 -echo "configure:1450: checking for FascistCheck in -lcrack" >&5 +echo "configure:1465: checking for FascistCheck in -lcrack" >&5 ac_lib_var=`echo crack'_'FascistCheck | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1454,7 +1469,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lcrack $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1484: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1492,7 +1507,7 @@ fi echo $ac_n "checking for fcrypt in -lcrypt""... $ac_c" 1>&6 -echo "configure:1496: checking for fcrypt in -lcrypt" >&5 +echo "configure:1511: checking for fcrypt in -lcrypt" >&5 ac_lib_var=`echo crypt'_'fcrypt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1500,7 +1515,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lcrypt $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1530: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1537,7 +1552,7 @@ fi echo $ac_n "checking for logwtmp in -lutil""... $ac_c" 1>&6 -echo "configure:1541: checking for logwtmp in -lutil" >&5 +echo "configure:1556: checking for logwtmp in -lutil" >&5 ac_lib_var=`echo util'_'logwtmp | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1545,7 +1560,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lutil $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1575: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1582,7 +1597,7 @@ fi echo $ac_n "checking for dbm_store in -lndbm""... $ac_c" 1>&6 -echo "configure:1586: checking for dbm_store in -lndbm" >&5 +echo "configure:1601: checking for dbm_store in -lndbm" >&5 ac_lib_var=`echo ndbm'_'dbm_store | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1590,7 +1605,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lndbm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1620: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1627,7 +1642,7 @@ fi echo $ac_n "checking for dbm_store in -ldb""... $ac_c" 1>&6 -echo "configure:1631: checking for dbm_store in -ldb" >&5 +echo "configure:1646: checking for dbm_store in -ldb" >&5 ac_lib_var=`echo db'_'dbm_store | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1635,7 +1650,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldb $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1665: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1672,7 +1687,7 @@ fi if test x$HAVE_LIBDB != xyes ; then echo $ac_n "checking for db_create in -ldb""... $ac_c" 1>&6 -echo "configure:1676: checking for db_create in -ldb" >&5 +echo "configure:1691: checking for db_create in -ldb" >&5 ac_lib_var=`echo db'_'db_create | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1680,7 +1695,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldb $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1710: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1718,7 +1733,7 @@ fi fi echo $ac_n "checking for yylex in -lfl""... $ac_c" 1>&6 -echo "configure:1722: checking for yylex in -lfl" >&5 +echo "configure:1737: checking for yylex in -lfl" >&5 ac_lib_var=`echo fl'_'yylex | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1726,7 +1741,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lfl HAVE_LIBFL=no $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1756: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1763,7 +1778,7 @@ fi echo $ac_n "checking for yp_maplist in -lnsl""... $ac_c" 1>&6 -echo "configure:1767: checking for yp_maplist in -lnsl" >&5 +echo "configure:1782: checking for yp_maplist in -lnsl" >&5 ac_lib_var=`echo nsl'_'yp_maplist | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1771,7 +1786,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1808,7 +1823,7 @@ fi echo $ac_n "checking for pwdb_db_name in -lpwdb""... $ac_c" 1>&6 -echo "configure:1812: checking for pwdb_db_name in -lpwdb" >&5 +echo "configure:1827: checking for pwdb_db_name in -lpwdb" >&5 ac_lib_var=`echo pwdb'_'pwdb_db_name | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1816,7 +1831,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lpwdb $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1858,12 +1873,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6 -echo "configure:1862: checking for $ac_hdr that defines DIR" >&5 +echo "configure:1877: checking for $ac_hdr that defines DIR" >&5 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_hdr> @@ -1871,7 +1886,7 @@ int main() { DIR *dirp = 0; ; return 0; } EOF -if { (eval echo configure:1875: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1890: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "ac_cv_header_dirent_$ac_safe=yes" else @@ -1896,7 +1911,7 @@ done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6 -echo "configure:1900: checking for opendir in -ldir" >&5 +echo "configure:1915: checking for opendir in -ldir" >&5 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1904,7 +1919,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldir $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1934: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1937,7 +1952,7 @@ fi else echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6 -echo "configure:1941: checking for opendir in -lx" >&5 +echo "configure:1956: checking for opendir in -lx" >&5 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1945,7 +1960,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lx $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1975: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1979,12 +1994,12 @@ fi fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:1983: checking for ANSI C header files" >&5 +echo "configure:1998: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -1992,7 +2007,7 @@ else #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1996: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2011: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2009,7 +2024,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -2027,7 +2042,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -2048,7 +2063,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -2059,7 +2074,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:2063: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2078: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -2083,12 +2098,12 @@ EOF fi echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:2087: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:2102: checking for sys/wait.h that is POSIX.1 compatible" >&5 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2104,7 +2119,7 @@ wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:2108: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2123: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -2128,17 +2143,17 @@ for ac_hdr in fcntl.h limits.h malloc.h sys/file.h sys/ioctl.h sys/time.h syslog do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2132: checking for $ac_hdr" >&5 +echo "configure:2147: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2142: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2157: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2169,17 +2184,17 @@ for ac_hdr in features.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2173: checking for $ac_hdr" >&5 +echo "configure:2188: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2183: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2198: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2210,17 +2225,17 @@ for ac_hdr in crypt.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2214: checking for $ac_hdr" >&5 +echo "configure:2229: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2224: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2239: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2251,17 +2266,17 @@ for ac_hdr in ndbm.h db.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2255: checking for $ac_hdr" >&5 +echo "configure:2270: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2265: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2280: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2294,17 +2309,17 @@ for ac_hdr in lastlog.h utmp.h utmpx.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2298: checking for $ac_hdr" >&5 +echo "configure:2313: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2308: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2323: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2333,7 +2348,7 @@ done echo $ac_n "checking path to cracklib dictionary""... $ac_c" 1>&6 -echo "configure:2337: checking path to cracklib dictionary" >&5 +echo "configure:2352: checking path to cracklib dictionary" >&5 DICT_DIR_CANDIDATES="/usr/lib /usr/share/dict /usr/share/lib \ /usr/local/lib /usr/local/share/lib" DICT_FILE_CANDIDATES="pw_dict cracklib_dict" @@ -2456,14 +2471,14 @@ fi echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:2460: checking whether byte ordering is bigendian" >&5 +echo "configure:2475: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -2474,11 +2489,11 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:2478: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2493: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -2489,7 +2504,7 @@ int main() { #endif ; return 0; } EOF -if { (eval echo configure:2493: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2508: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -2509,7 +2524,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2541: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -2546,12 +2561,12 @@ EOF fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:2550: checking for working const" >&5 +echo "configure:2565: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2619: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -2621,12 +2636,12 @@ EOF fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:2625: checking for uid_t in sys/types.h" >&5 +echo "configure:2640: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF @@ -2655,12 +2670,12 @@ EOF fi echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:2659: checking for off_t" >&5 +echo "configure:2674: checking for off_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -2688,12 +2703,12 @@ EOF fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:2692: checking for pid_t" >&5 +echo "configure:2707: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -2721,12 +2736,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:2725: checking for size_t" >&5 +echo "configure:2740: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -2754,12 +2769,12 @@ EOF fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:2758: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:2773: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2768,7 +2783,7 @@ int main() { struct tm *tp; ; return 0; } EOF -if { (eval echo configure:2772: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2787: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -2789,12 +2804,12 @@ EOF fi echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:2793: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:2808: checking whether struct tm is in sys/time.h or time.h" >&5 if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -2802,7 +2817,7 @@ int main() { struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:2806: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2821: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -2824,7 +2839,7 @@ fi echo $ac_n "checking type of array argument to getgroups""... $ac_c" 1>&6 -echo "configure:2828: checking type of array argument to getgroups" >&5 +echo "configure:2843: checking type of array argument to getgroups" >&5 if eval "test \"`echo '$''{'ac_cv_type_getgroups'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2832,7 +2847,7 @@ else ac_cv_type_getgroups=cross else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_type_getgroups=gid_t else @@ -2871,7 +2886,7 @@ fi if test $ac_cv_type_getgroups = cross; then cat > conftest.$ac_ext < EOF @@ -2896,13 +2911,13 @@ EOF if test $ac_cv_prog_gcc = yes; then echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6 -echo "configure:2900: checking whether ${CC-cc} needs -traditional" >&5 +echo "configure:2915: checking whether ${CC-cc} needs -traditional" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_pattern="Autoconf.*'x'" cat > conftest.$ac_ext < Autoconf TIOCGETP @@ -2920,7 +2935,7 @@ rm -f conftest* if test $ac_cv_prog_gcc_traditional = no; then cat > conftest.$ac_ext < Autoconf TCGETA @@ -2942,7 +2957,7 @@ echo "$ac_t""$ac_cv_prog_gcc_traditional" 1>&6 fi echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:2946: checking for 8-bit clean memcmp" >&5 +echo "configure:2961: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2950,7 +2965,7 @@ else ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -2978,12 +2993,12 @@ echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6 test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" echo $ac_n "checking for vprintf""... $ac_c" 1>&6 -echo "configure:2982: checking for vprintf" >&5 +echo "configure:2997: checking for vprintf" >&5 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_vprintf=yes" else @@ -3030,12 +3045,12 @@ fi if test "$ac_cv_func_vprintf" != yes; then echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 -echo "configure:3034: checking for _doprnt" >&5 +echo "configure:3049: checking for _doprnt" >&5 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3077: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func__doprnt=yes" else @@ -3085,12 +3100,12 @@ fi for ac_func in gethostname gettimeofday mkdir select strcspn strdup strerror strspn strstr strtol uname do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3089: checking for $ac_func" >&5 +echo "configure:3104: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3132: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3141,12 +3156,12 @@ done for ac_func in getpwnam_r getgrnam_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3145: checking for $ac_func" >&5 +echo "configure:3160: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3188: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3197,7 +3212,7 @@ done # Extract the first word of "sgml2txt", so it can be a program name with args. set dummy sgml2txt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3201: checking for $ac_word" >&5 +echo "configure:3216: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_HAVE_SGML2TXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3227,7 +3242,7 @@ fi # Extract the first word of "sgml2html", so it can be a program name with args. set dummy sgml2html; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3231: checking for $ac_word" >&5 +echo "configure:3246: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_HAVE_SGML2HTML'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3257,7 +3272,7 @@ fi # Extract the first word of "sgml2latex", so it can be a program name with args. set dummy sgml2latex; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3261: checking for $ac_word" >&5 +echo "configure:3276: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_HAVE_SGML2LATEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3294,7 +3309,7 @@ else # Extract the first word of "sgml2ps", so it can be a program name with args. set dummy sgml2ps; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3298: checking for $ac_word" >&5 +echo "configure:3313: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_HAVE_SGML2PS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3478,6 +3493,7 @@ s%@LEXLIB@%$LEXLIB%g s%@LN_S@%$LN_S%g s%@SET_MAKE@%$SET_MAKE%g s%@WITH_DEBUG@%$WITH_DEBUG%g +s%@WITH_MEMORY_DEBUG@%$WITH_MEMORY_DEBUG%g s%@WITH_LIBDEBUG@%$WITH_LIBDEBUG%g s%@FAKEROOT@%$FAKEROOT%g s%@SECUREDIR@%$SECUREDIR%g diff --git a/configure.in b/configure.in index 0f5b8d89..da06576d 100644 --- a/configure.in +++ b/configure.in @@ -69,10 +69,15 @@ dnl dnl lots of debugging information goes to /tmp/pam-debug.log AC_ARG_ENABLE(debug, -[ --enable-debug qspecify you are building with debugging on], +[ --enable-debug specify you are building with debugging on], WITH_DEBUG=yes ; AC_DEFINE(DEBUG) , WITH_DEBUG=no) AC_SUBST(WITH_DEBUG) +AC_ARG_ENABLE(memory-debug, +[ --enable-memory-debug specify you want every malloc etc. call tracked], + WITH_MEMORY_DEBUG=yes ; AC_DEFINE(MEMORY_DEBUG) , WITH_MEMORY_DEBUG=no) +AC_SUBST(WITH_MEMORY_DEBUG) + dnl build specially named libraries (for debugging purposes) AC_ARG_ENABLE(libdebug, [ --enable-libdebug specify you are building debugging libraries], diff --git a/examples/xsh.c b/examples/xsh.c index 0987da26..7babce42 100644 --- a/examples/xsh.c +++ b/examples/xsh.c @@ -11,6 +11,8 @@ #include #include +#include + /* ------ some local (static) functions ------- */ static void bail_out(pam_handle_t *pamh,int really, int code, const char *fn) diff --git a/libpam/Makefile b/libpam/Makefile index 80fbf957..61958527 100644 --- a/libpam/Makefile +++ b/libpam/Makefile @@ -44,7 +44,7 @@ else MODULES = endif -ifdef MEMORY_DEBUG +ifdef WITH_MEMORY_DEBUG EXTRAS += pam_malloc.o endif diff --git a/libpam/include/security/pam_malloc.h b/libpam/include/security/pam_malloc.h index 62777ca8..cc95d7de 100644 --- a/libpam/include/security/pam_malloc.h +++ b/libpam/include/security/pam_malloc.h @@ -23,20 +23,22 @@ /* #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__) +#define strdup(s) pam_strdup(s,__FILE__,__FUNCTION__,__LINE__) /* these are the prototypes for the wrapper functions */ #include -extern void *pam_malloc(size_t s,const char *,const char *,const int); -extern void *pam_calloc(size_t n,size_t s,const char *,const char *,const int); -extern void pam_free(void *x,const char *,const char *,const int); +extern void *pam_malloc(size_t s,const char *,const char *, int); +extern void *pam_calloc(size_t n,size_t s,const char *,const char *, int); +extern void pam_free(void *x,const char *,const char *, int); extern void *pam_memalign(size_t a,size_t s - ,const char *,const char *,const int); -extern void *pam_realloc(void *x,size_t s,const char *,const char *,const int); -extern void *pam_valloc(size_t s,const char *,const char *,const int); -extern void *pam_alloca(size_t s,const char *,const char *,const int); -extern void pam_exit(int i,const char *,const char *,const int); + ,const char *,const char *, int); +extern void *pam_realloc(void *x,size_t s,const char *,const char *, int); +extern void *pam_valloc(size_t s,const char *,const char *, int); +extern void *pam_alloca(size_t s,const char *,const char *, int); +extern void pam_exit(int i,const char *,const char *, int); +extern char *pam_strdup(const char *,const char *,const char *, int); /* these are the flags used to turn on and off diagnostics */ diff --git a/libpam/pam_delay.c b/libpam/pam_delay.c index 553bf72b..d38d47bc 100644 --- a/libpam/pam_delay.c +++ b/libpam/pam_delay.c @@ -14,6 +14,7 @@ */ #include +#include #include "pam_private.h" /* ********************************************************************** diff --git a/libpam/pam_malloc.c b/libpam/pam_malloc.c index c24ded68..540dceef 100644 --- a/libpam/pam_malloc.c +++ b/libpam/pam_malloc.c @@ -5,7 +5,7 @@ /* * This pair of files helps to locate memory leaks. It is a wrapper for * the malloc family of calls. (Actutally, it currently only deals - * with calloc, malloc, realloc, free and exit) + * with calloc, malloc, realloc, free, strdup and exit) * * To use these functions the header "pam_malloc.h" must be included * in all parts of the code (that use the malloc functions) and this @@ -16,7 +16,7 @@ * * It is a debugging tool and should be turned off in released code. * - * This suite was written by Andrew Morgan for + * This suite was written by Andrew Morgan for * Linux-PAM. */ @@ -35,6 +35,7 @@ #undef free #undef realloc #undef exit +#undef strdup #include #include @@ -128,7 +129,7 @@ struct reference { static void _dump(const char *say, const struct reference *ref) { - _pam_output_debug(" <%s: %p (#%d of %d) req. by %s(); %s line %d>\n" + _pam_output_debug(" <%s: %p (#%d of %d) req. by %s(); %s line %d>" , say , ref->ptr,ref->nelements,ref->size , ref->function,ref->file,ref->line); @@ -311,7 +312,8 @@ void pam_free(void *ptr { _fn("free"); - if (on(PAM_MALLOC_FUNC)) err(("request to free %p", ptr)); + if (on(PAM_MALLOC_FUNC)) + err(("request (%s:%s():%d) to free %p", file, fn, line, ptr)); if (ptr == NULL) { if (on(PAM_MALLOC_NULL)) err(("passed NULL pointer")); @@ -392,4 +394,24 @@ void pam_exit(int i exit(i); } +char *pam_strdup(const char *orig, + const char *file, const char *fn, const int line) +{ + char *new; + + _fn("strdup"); + + if (on(PAM_MALLOC_FUNC)) err(("request for dup of [%s]", orig)); + + new = strdup(orig); + if (new == NULL) { + if (on(PAM_MALLOC_FAIL)) err(("returned NULL")); + } else { + if (on(PAM_MALLOC_REQUEST)) err(("request dup of [%s]", orig)); + add_new_ref(new, 1, strlen(new)+1); + } + + return new; +} + /* end of file */ -- cgit v1.2.3