diff options
author | dfr <dfr@FreeBSD.org> | 2008-05-07 13:39:42 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 2008-05-07 13:39:42 +0000 |
commit | 51b6601db456e699ea5d4843cbc7239ee92d9c13 (patch) | |
tree | 4dbb862199a916e3ffe75f1cb08703ec0e662ffc /crypto/heimdal/appl/login | |
parent | 2565fa13487d5bfc858144e431e3dfd7ffa5200e (diff) | |
download | FreeBSD-src-51b6601db456e699ea5d4843cbc7239ee92d9c13.zip FreeBSD-src-51b6601db456e699ea5d4843cbc7239ee92d9c13.tar.gz |
Vendor import of Heimdal 1.1
Diffstat (limited to 'crypto/heimdal/appl/login')
-rw-r--r-- | crypto/heimdal/appl/login/ChangeLog | 75 | ||||
-rw-r--r-- | crypto/heimdal/appl/login/Makefile.am | 10 | ||||
-rw-r--r-- | crypto/heimdal/appl/login/Makefile.in | 314 | ||||
-rw-r--r-- | crypto/heimdal/appl/login/conf.c | 2 | ||||
-rw-r--r-- | crypto/heimdal/appl/login/env.c | 2 | ||||
-rw-r--r-- | crypto/heimdal/appl/login/limits_conf.c | 214 | ||||
-rw-r--r-- | crypto/heimdal/appl/login/login.1 | 33 | ||||
-rw-r--r-- | crypto/heimdal/appl/login/login.access.5 | 2 | ||||
-rw-r--r-- | crypto/heimdal/appl/login/login.c | 57 | ||||
-rw-r--r-- | crypto/heimdal/appl/login/login_access.c | 2 | ||||
-rw-r--r-- | crypto/heimdal/appl/login/login_locl.h | 13 | ||||
-rw-r--r-- | crypto/heimdal/appl/login/login_protos.h | 13 | ||||
-rw-r--r-- | crypto/heimdal/appl/login/loginpaths.h | 52 | ||||
-rw-r--r-- | crypto/heimdal/appl/login/osfc2.c | 2 | ||||
-rw-r--r-- | crypto/heimdal/appl/login/read_string.c | 22 | ||||
-rw-r--r-- | crypto/heimdal/appl/login/shadow.c | 2 | ||||
-rw-r--r-- | crypto/heimdal/appl/login/stty_default.c | 2 | ||||
-rw-r--r-- | crypto/heimdal/appl/login/tty.c | 2 | ||||
-rw-r--r-- | crypto/heimdal/appl/login/utmp_login.c | 2 | ||||
-rw-r--r-- | crypto/heimdal/appl/login/utmpx_login.c | 2 |
20 files changed, 632 insertions, 191 deletions
diff --git a/crypto/heimdal/appl/login/ChangeLog b/crypto/heimdal/appl/login/ChangeLog index 3da3237..2400808 100644 --- a/crypto/heimdal/appl/login/ChangeLog +++ b/crypto/heimdal/appl/login/ChangeLog @@ -1,8 +1,79 @@ +2006-12-05 Love Hörnquist Åstrand <lha@it.su.se> + + * limits_conf.c: Clear errno before calling the strtol + functions. From Paul Stoeber to OpenBSD by Ray Lai and Björn + Sandell. + + * limits_conf.c: Report to syslog strings that start with NUL; + prevents negative index array access. Ray Lai of OpenBSD via Björn + Sandell. + +2006-10-07 Love Hörnquist Åstrand <lha@it.su.se> + + * Makefile.am: Add man_MANS to EXTRA_DIST + +2006-09-22 Love Hörnquist Åstrand <lha@it.su.se> + + * read_string.c: try to not call signaction for signal 0 and use + NSIG if it exists to determin how many signals there exists, also, + only restore those signalhandlers that we got out. + +2006-04-27 Love Hörnquist Åstrand <lha@it.su.se> + + * login_locl.h: Include "loginpaths.h" + + * loginpaths.h: Shared paths between login and rshd. + +2006-01-09 Johan Danielsson <joda@blubb.pdc.kth.se> + + * login.c: log successful logins + +2005-08-08 Love Hörnquist Åstrand <lha@it.su.se> + + * login.c (do_login): only do krb4_get_afs_tokens if we have done + v4 authentication or done a 5to4 conversion of tickets. This is to + avoid delays on a realm that only support Kerberos 5 and drop + Kerberos 4 requests. + +2005-05-10 Dave Love <fx@gnu.org> + + * login.c: Include <crypt.h>. + +2005-05-02 Dave Love <fx@gnu.org> + + * limits_conf.c: Check RLIMIT_MEMLOCK, not RLIMIT_LOCK. + +2005-04-28 Dave Love <fx@gnu.org> + + * limits_conf.c: Maybe include sys/resource.h. Use various + RLIMIT_ macros conditionally. For Solaris, Irix and Tru64. + +2005-04-22 Johan Danielsson <joda@pdc.kth.se> + + * login.1: document limits.conf + + * Makefile.am: limits_conf.c + + * login_locl.h: template for limits.conf + + * login.c: read limits.conf (from /etc/security by default, + overridable in login.conf) + + * limits_conf.c: implement a parser for limits.conf + 2004-09-08 Johan Danielsson <joda@pdc.kth.se> - * login.c: pull up 1.62->1.63: use krb5_appdefault_boolean instead - of krb5_config_get_bool + * login.c: use krb5_appdefault_boolean instead of + krb5_config_get_bool + +2003-09-03 Love Hörnquist Åstrand <lha@it.su.se> + * login.c (krb5_to4): set client princ of the mcred + +2003-07-07 Love Hörnquist Åstrand <lha@it.su.se> + + * login.c (krb5_to4): use krb5_cc_clear_mcred + 2003-03-24 Johan Danielsson <joda@pdc.kth.se> * Makefile.am: install man pages diff --git a/crypto/heimdal/appl/login/Makefile.am b/crypto/heimdal/appl/login/Makefile.am index 860ce70..b7c9f93 100644 --- a/crypto/heimdal/appl/login/Makefile.am +++ b/crypto/heimdal/appl/login/Makefile.am @@ -1,8 +1,8 @@ -# $Id: Makefile.am,v 1.21 2003/03/24 16:15:48 joda Exp $ +# $Id: Makefile.am 20466 2007-04-20 08:29:05Z lha $ include $(top_srcdir)/Makefile.am.common -INCLUDES += $(INCLUDE_krb4) +AM_CPPFLAGS += $(INCLUDE_krb4) man_MANS = login.1 login.access.5 @@ -15,6 +15,8 @@ login_SOURCES = \ login_access.c \ login_locl.h \ login_protos.h \ + loginpaths.h \ + limits_conf.c \ osfc2.c \ read_string.c \ shadow.c \ @@ -27,7 +29,7 @@ LDADD = $(LIB_otp) \ $(LIB_kafs) \ $(top_builddir)/lib/krb5/libkrb5.la \ $(LIB_krb4) \ - $(LIB_des) \ + $(LIB_hcrypto) \ $(top_builddir)/lib/asn1/libasn1.la \ $(LIB_roken) \ $(LIB_security) \ @@ -37,3 +39,5 @@ $(srcdir)/login_protos.h: cd $(srcdir); perl ../../cf/make-proto.pl -o login_protos.h -q -P comment $(login_SOURCES) || rm -f login_protos.h $(login_OBJECTS): $(srcdir)/login_protos.h + +EXTRA_DIST = $(man_MANS) diff --git a/crypto/heimdal/appl/login/Makefile.in b/crypto/heimdal/appl/login/Makefile.in index 72648ab..faa632a 100644 --- a/crypto/heimdal/appl/login/Makefile.in +++ b/crypto/heimdal/appl/login/Makefile.in @@ -1,8 +1,8 @@ -# Makefile.in generated by automake 1.8.3 from Makefile.am. +# Makefile.in generated by automake 1.10 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -14,23 +14,17 @@ @SET_MAKE@ -# $Id: Makefile.am,v 1.21 2003/03/24 16:15:48 joda Exp $ +# $Id: Makefile.am 20466 2007-04-20 08:29:05Z lha $ -# $Id: Makefile.am.common,v 1.5 2002/05/19 18:35:37 joda Exp $ +# $Id: Makefile.am.common 10998 2002-05-19 18:35:37Z joda $ -# $Id: Makefile.am.common,v 1.37.2.2 2003/10/13 13:15:39 joda Exp $ +# $Id: Makefile.am.common 22488 2008-01-21 11:47:22Z lha $ -SOURCES = $(login_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c @@ -42,6 +36,7 @@ POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : +build_triplet = @build@ host_triplet = @host@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/Makefile.am.common \ @@ -50,16 +45,14 @@ bin_PROGRAMS = login$(EXEEXT) subdir = appl/login ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/cf/aix.m4 \ - $(top_srcdir)/cf/auth-modules.m4 \ + $(top_srcdir)/cf/auth-modules.m4 $(top_srcdir)/cf/autobuild.m4 \ $(top_srcdir)/cf/broken-getaddrinfo.m4 \ - $(top_srcdir)/cf/broken-getnameinfo.m4 \ $(top_srcdir)/cf/broken-glob.m4 \ $(top_srcdir)/cf/broken-realloc.m4 \ $(top_srcdir)/cf/broken-snprintf.m4 $(top_srcdir)/cf/broken.m4 \ $(top_srcdir)/cf/broken2.m4 $(top_srcdir)/cf/c-attribute.m4 \ $(top_srcdir)/cf/capabilities.m4 \ $(top_srcdir)/cf/check-compile-et.m4 \ - $(top_srcdir)/cf/check-declaration.m4 \ $(top_srcdir)/cf/check-getpwnam_r-posix.m4 \ $(top_srcdir)/cf/check-man.m4 \ $(top_srcdir)/cf/check-netinet-ip-and-tcp.m4 \ @@ -72,6 +65,7 @@ am__aclocal_m4_deps = $(top_srcdir)/cf/aix.m4 \ $(top_srcdir)/cf/find-func-no-libs2.m4 \ $(top_srcdir)/cf/find-func.m4 \ $(top_srcdir)/cf/find-if-not-broken.m4 \ + $(top_srcdir)/cf/framework-security.m4 \ $(top_srcdir)/cf/have-struct-field.m4 \ $(top_srcdir)/cf/have-type.m4 $(top_srcdir)/cf/irix.m4 \ $(top_srcdir)/cf/krb-bigendian.m4 \ @@ -80,25 +74,30 @@ am__aclocal_m4_deps = $(top_srcdir)/cf/aix.m4 \ $(top_srcdir)/cf/krb-readline.m4 \ $(top_srcdir)/cf/krb-struct-spwd.m4 \ $(top_srcdir)/cf/krb-struct-winsize.m4 \ - $(top_srcdir)/cf/mips-abi.m4 $(top_srcdir)/cf/misc.m4 \ - $(top_srcdir)/cf/need-proto.m4 $(top_srcdir)/cf/osfc2.m4 \ - $(top_srcdir)/cf/otp.m4 $(top_srcdir)/cf/proto-compat.m4 \ - $(top_srcdir)/cf/retsigtype.m4 $(top_srcdir)/cf/roken-frag.m4 \ - $(top_srcdir)/cf/sunos.m4 $(top_srcdir)/cf/telnet.m4 \ - $(top_srcdir)/cf/test-package.m4 $(top_srcdir)/cf/wflags.m4 \ - $(top_srcdir)/cf/with-all.m4 $(top_srcdir)/configure.in + $(top_srcdir)/cf/largefile.m4 $(top_srcdir)/cf/mips-abi.m4 \ + $(top_srcdir)/cf/misc.m4 $(top_srcdir)/cf/need-proto.m4 \ + $(top_srcdir)/cf/osfc2.m4 $(top_srcdir)/cf/otp.m4 \ + $(top_srcdir)/cf/proto-compat.m4 $(top_srcdir)/cf/pthreads.m4 \ + $(top_srcdir)/cf/resolv.m4 $(top_srcdir)/cf/retsigtype.m4 \ + $(top_srcdir)/cf/roken-frag.m4 \ + $(top_srcdir)/cf/socket-wrapper.m4 $(top_srcdir)/cf/sunos.m4 \ + $(top_srcdir)/cf/telnet.m4 $(top_srcdir)/cf/test-package.m4 \ + $(top_srcdir)/cf/version-script.m4 $(top_srcdir)/cf/wflags.m4 \ + $(top_srcdir)/cf/win32.m4 $(top_srcdir)/cf/with-all.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/include/config.h CONFIG_CLEAN_FILES = -am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \ + "$(DESTDIR)$(man5dir)" binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(bin_PROGRAMS) am_login_OBJECTS = conf.$(OBJEXT) env.$(OBJEXT) login.$(OBJEXT) \ - login_access.$(OBJEXT) osfc2.$(OBJEXT) read_string.$(OBJEXT) \ - shadow.$(OBJEXT) stty_default.$(OBJEXT) tty.$(OBJEXT) \ - utmp_login.$(OBJEXT) utmpx_login.$(OBJEXT) + login_access.$(OBJEXT) limits_conf.$(OBJEXT) osfc2.$(OBJEXT) \ + read_string.$(OBJEXT) shadow.$(OBJEXT) stty_default.$(OBJEXT) \ + tty.$(OBJEXT) utmp_login.$(OBJEXT) utmpx_login.$(OBJEXT) login_OBJECTS = $(am_login_OBJECTS) login_LDADD = $(LDADD) am__DEPENDENCIES_1 = @@ -109,17 +108,18 @@ login_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \ $(am__DEPENDENCIES_1) $(top_builddir)/lib/asn1/libasn1.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include +DEFAULT_INCLUDES = -I. -I$(top_builddir)/include@am__isrc@ depcomp = am__depfiles_maybe = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) -LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(login_SOURCES) DIST_SOURCES = $(login_SOURCES) man1dir = $(mandir)/man1 @@ -129,13 +129,7 @@ ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ -AIX4_FALSE = @AIX4_FALSE@ -AIX4_TRUE = @AIX4_TRUE@ -AIX_DYNAMIC_AFS_FALSE = @AIX_DYNAMIC_AFS_FALSE@ -AIX_DYNAMIC_AFS_TRUE = @AIX_DYNAMIC_AFS_TRUE@ AIX_EXTRA_KAFS = @AIX_EXTRA_KAFS@ -AIX_FALSE = @AIX_FALSE@ -AIX_TRUE = @AIX_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ @@ -145,8 +139,6 @@ AWK = @AWK@ CANONICAL_HOST = @CANONICAL_HOST@ CATMAN = @CATMAN@ CATMANEXT = @CATMANEXT@ -CATMAN_FALSE = @CATMAN_FALSE@ -CATMAN_TRUE = @CATMAN_TRUE@ CC = @CC@ CFLAGS = @CFLAGS@ COMPILE_ET = @COMPILE_ET@ @@ -157,11 +149,10 @@ CXXCPP = @CXXCPP@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DBLIB = @DBLIB@ -DCE_FALSE = @DCE_FALSE@ -DCE_TRUE = @DCE_TRUE@ DEFS = @DEFS@ DIR_com_err = @DIR_com_err@ -DIR_des = @DIR_des@ +DIR_hcrypto = @DIR_hcrypto@ +DIR_hdbdir = @DIR_hdbdir@ DIR_roken = @DIR_roken@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ @@ -169,42 +160,27 @@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ -EXTRA_LIB45 = @EXTRA_LIB45@ F77 = @F77@ FFLAGS = @FFLAGS@ +GREP = @GREP@ GROFF = @GROFF@ -HAVE_DB1_FALSE = @HAVE_DB1_FALSE@ -HAVE_DB1_TRUE = @HAVE_DB1_TRUE@ -HAVE_DB3_FALSE = @HAVE_DB3_FALSE@ -HAVE_DB3_TRUE = @HAVE_DB3_TRUE@ -HAVE_DLOPEN_FALSE = @HAVE_DLOPEN_FALSE@ -HAVE_DLOPEN_TRUE = @HAVE_DLOPEN_TRUE@ -HAVE_NDBM_FALSE = @HAVE_NDBM_FALSE@ -HAVE_NDBM_TRUE = @HAVE_NDBM_TRUE@ -HAVE_OPENSSL_FALSE = @HAVE_OPENSSL_FALSE@ -HAVE_OPENSSL_TRUE = @HAVE_OPENSSL_TRUE@ -HAVE_X_FALSE = @HAVE_X_FALSE@ -HAVE_X_TRUE = @HAVE_X_TRUE@ INCLUDES_roken = @INCLUDES_roken@ -INCLUDE_des = @INCLUDE_des@ +INCLUDE_hcrypto = @INCLUDE_hcrypto@ INCLUDE_hesiod = @INCLUDE_hesiod@ INCLUDE_krb4 = @INCLUDE_krb4@ INCLUDE_openldap = @INCLUDE_openldap@ INCLUDE_readline = @INCLUDE_readline@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -IRIX_FALSE = @IRIX_FALSE@ -IRIX_TRUE = @IRIX_TRUE@ -KRB4_FALSE = @KRB4_FALSE@ -KRB4_TRUE = @KRB4_TRUE@ -KRB5_FALSE = @KRB5_FALSE@ -KRB5_TRUE = @KRB5_TRUE@ LDFLAGS = @LDFLAGS@ +LDFLAGS_VERSION_SCRIPT = @LDFLAGS_VERSION_SCRIPT@ LEX = @LEX@ LEXLIB = @LEXLIB@ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBADD_roken = @LIBADD_roken@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -222,12 +198,9 @@ LIB_crypt = @LIB_crypt@ LIB_db_create = @LIB_db_create@ LIB_dbm_firstkey = @LIB_dbm_firstkey@ LIB_dbopen = @LIB_dbopen@ -LIB_des = @LIB_des@ -LIB_des_a = @LIB_des_a@ -LIB_des_appl = @LIB_des_appl@ -LIB_des_so = @LIB_des_so@ LIB_dlopen = @LIB_dlopen@ LIB_dn_expand = @LIB_dn_expand@ +LIB_door_create = @LIB_door_create@ LIB_el_init = @LIB_el_init@ LIB_freeaddrinfo = @LIB_freeaddrinfo@ LIB_gai_strerror = @LIB_gai_strerror@ @@ -237,15 +210,14 @@ LIB_gethostbyname2 = @LIB_gethostbyname2@ LIB_getnameinfo = @LIB_getnameinfo@ LIB_getpwnam_r = @LIB_getpwnam_r@ LIB_getsockopt = @LIB_getsockopt@ +LIB_hcrypto = @LIB_hcrypto@ +LIB_hcrypto_a = @LIB_hcrypto_a@ +LIB_hcrypto_appl = @LIB_hcrypto_appl@ +LIB_hcrypto_so = @LIB_hcrypto_so@ LIB_hesiod = @LIB_hesiod@ LIB_hstrerror = @LIB_hstrerror@ LIB_kdb = @LIB_kdb@ LIB_krb4 = @LIB_krb4@ -LIB_krb_disable_debug = @LIB_krb_disable_debug@ -LIB_krb_enable_debug = @LIB_krb_enable_debug@ -LIB_krb_get_kdc_time_diff = @LIB_krb_get_kdc_time_diff@ -LIB_krb_get_our_ip_for_realm = @LIB_krb_get_our_ip_for_realm@ -LIB_krb_kdctimeofday = @LIB_krb_kdctimeofday@ LIB_loadquery = @LIB_loadquery@ LIB_logout = @LIB_logout@ LIB_logwtmp = @LIB_logwtmp@ @@ -254,6 +226,7 @@ LIB_openpty = @LIB_openpty@ LIB_otp = @LIB_otp@ LIB_pidfile = @LIB_pidfile@ LIB_readline = @LIB_readline@ +LIB_res_ndestroy = @LIB_res_ndestroy@ LIB_res_nsearch = @LIB_res_nsearch@ LIB_res_search = @LIB_res_search@ LIB_roken = @LIB_roken@ @@ -265,15 +238,10 @@ LIB_tgetent = @LIB_tgetent@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ -MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ -MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ -NEED_WRITEAUTH_FALSE = @NEED_WRITEAUTH_FALSE@ -NEED_WRITEAUTH_TRUE = @NEED_WRITEAUTH_TRUE@ +MKDIR_P = @MKDIR_P@ NROFF = @NROFF@ OBJEXT = @OBJEXT@ -OTP_FALSE = @OTP_FALSE@ -OTP_TRUE = @OTP_TRUE@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ @@ -281,74 +249,80 @@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PTHREADS_CFLAGS = @PTHREADS_CFLAGS@ +PTHREADS_LIBS = @PTHREADS_LIBS@ RANLIB = @RANLIB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ +VERSIONING = @VERSIONING@ VOID_RETSIGTYPE = @VOID_RETSIGTYPE@ WFLAGS = @WFLAGS@ WFLAGS_NOIMPLICITINT = @WFLAGS_NOIMPLICITINT@ WFLAGS_NOUNUSED = @WFLAGS_NOUNUSED@ +XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ YACC = @YACC@ -ac_ct_AR = @ac_ct_AR@ +YFLAGS = @YFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ -do_roken_rename_FALSE = @do_roken_rename_FALSE@ -do_roken_rename_TRUE = @do_roken_rename_TRUE@ +datarootdir = @datarootdir@ +docdir = @docdir@ dpagaix_cflags = @dpagaix_cflags@ dpagaix_ldadd = @dpagaix_ldadd@ dpagaix_ldflags = @dpagaix_ldflags@ -el_compat_FALSE = @el_compat_FALSE@ -el_compat_TRUE = @el_compat_TRUE@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ -have_err_h_FALSE = @have_err_h_FALSE@ -have_err_h_TRUE = @have_err_h_TRUE@ -have_fnmatch_h_FALSE = @have_fnmatch_h_FALSE@ -have_fnmatch_h_TRUE = @have_fnmatch_h_TRUE@ -have_glob_h_FALSE = @have_glob_h_FALSE@ -have_glob_h_TRUE = @have_glob_h_TRUE@ -have_ifaddrs_h_FALSE = @have_ifaddrs_h_FALSE@ -have_ifaddrs_h_TRUE = @have_ifaddrs_h_TRUE@ -have_vis_h_FALSE = @have_vis_h_FALSE@ -have_vis_h_TRUE = @have_vis_h_TRUE@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ +htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ +localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ -SUFFIXES = .et .h .x .1 .3 .5 .8 .cat1 .cat3 .cat5 .cat8 -INCLUDES = -I$(top_builddir)/include $(INCLUDES_roken) $(INCLUDE_krb4) +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUFFIXES = .et .h .x .z .1 .3 .5 .8 .cat1 .cat3 .cat5 .cat8 +AM_CPPFLAGS = -I$(top_builddir)/include $(INCLUDES_roken) \ + $(INCLUDE_krb4) @do_roken_rename_TRUE@ROKEN_RENAME = -DROKEN_RENAME AM_CFLAGS = $(WFLAGS) CP = cp @@ -365,6 +339,7 @@ LIB_kafs = $(top_builddir)/lib/kafs/libkafs.la $(AIX_EXTRA_KAFS) @KRB5_TRUE@ $(top_builddir)/lib/asn1/libasn1.la @KRB5_TRUE@LIB_gssapi = $(top_builddir)/lib/gssapi/libgssapi.la +@KRB5_TRUE@LIB_tsasl = $(top_builddir)/lib/tsasl/libtsasl.la @DCE_TRUE@LIB_kdfs = $(top_builddir)/lib/kdfs/libkdfs.la man_MANS = login.1 login.access.5 login_SOURCES = \ @@ -374,6 +349,8 @@ login_SOURCES = \ login_access.c \ login_locl.h \ login_protos.h \ + loginpaths.h \ + limits_conf.c \ osfc2.c \ read_string.c \ shadow.c \ @@ -386,16 +363,17 @@ LDADD = $(LIB_otp) \ $(LIB_kafs) \ $(top_builddir)/lib/krb5/libkrb5.la \ $(LIB_krb4) \ - $(LIB_des) \ + $(LIB_hcrypto) \ $(top_builddir)/lib/asn1/libasn1.la \ $(LIB_roken) \ $(LIB_security) \ $(DBLIB) +EXTRA_DIST = $(man_MANS) all: all-am .SUFFIXES: -.SUFFIXES: .et .h .x .1 .3 .5 .8 .cat1 .cat3 .cat5 .cat8 .c .lo .o .obj +.SUFFIXES: .et .h .x .z .1 .3 .5 .8 .cat1 .cat3 .cat5 .cat8 .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.am.common $(top_srcdir)/cf/Makefile.am.common $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ @@ -427,7 +405,7 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ @@ -455,7 +433,7 @@ clean-binPROGRAMS: done login$(EXEEXT): $(login_OBJECTS) $(login_DEPENDENCIES) @rm -f login$(EXEEXT) - $(LINK) $(login_LDFLAGS) $(login_OBJECTS) $(login_LDADD) $(LIBS) + $(LINK) $(login_OBJECTS) $(login_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -477,13 +455,9 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-man1: $(man1_MANS) $(man_MANS) @$(NORMAL_INSTALL) - test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)" + test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ @@ -528,7 +502,7 @@ uninstall-man1: done install-man5: $(man5_MANS) $(man_MANS) @$(NORMAL_INSTALL) - test -z "$(man5dir)" || $(mkdir_p) "$(DESTDIR)$(man5dir)" + test -z "$(man5dir)" || $(MKDIR_P) "$(DESTDIR)$(man5dir)" @list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ for i in $$l2; do \ @@ -592,9 +566,11 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$tags$$unique" \ - || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) @@ -619,23 +595,21 @@ distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) - $(mkdir_p) $(distdir)/../.. $(distdir)/../../cf - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ @@ -655,7 +629,7 @@ check: check-am all-am: Makefile $(PROGRAMS) $(MANS) all-local installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am @@ -676,7 +650,7 @@ mostlyclean-generic: clean-generic: distclean-generic: - -rm -f $(CONFIG_CLEAN_FILES) + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -688,7 +662,7 @@ clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-am @@ -704,14 +678,22 @@ install-data-am: install-man @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook +install-dvi: install-dvi-am + install-exec-am: install-binPROGRAMS @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-exec-hook +install-html: install-html-am + install-info: install-info-am install-man: install-man1 install-man5 +install-pdf: install-pdf-am + +install-ps: install-ps-am + installcheck-am: maintainer-clean: maintainer-clean-am @@ -731,23 +713,30 @@ ps: ps-am ps-am: -uninstall-am: uninstall-binPROGRAMS uninstall-info-am uninstall-man +uninstall-am: uninstall-binPROGRAMS uninstall-man + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) uninstall-hook uninstall-man: uninstall-man1 uninstall-man5 +.MAKE: install-am install-data-am install-exec-am install-strip \ + uninstall-am + .PHONY: CTAGS GTAGS all all-am all-local check check-am check-local \ clean clean-binPROGRAMS clean-generic clean-libtool ctags \ - distclean distclean-compile distclean-generic \ + dist-hook distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ - install-data install-data-am install-exec install-exec-am \ - install-info install-info-am install-man install-man1 \ - install-man5 install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-binPROGRAMS uninstall-info-am \ - uninstall-man uninstall-man1 uninstall-man5 + install-data install-data-am install-data-hook install-dvi \ + install-dvi-am install-exec install-exec-am install-exec-hook \ + install-html install-html-am install-info install-info-am \ + install-man install-man1 install-man5 install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-hook uninstall-man uninstall-man1 uninstall-man5 install-suid-programs: @@ -762,8 +751,8 @@ install-suid-programs: install-exec-hook: install-suid-programs -install-build-headers:: $(include_HEADERS) $(build_HEADERZ) - @foo='$(include_HEADERS) $(nodist_include_HEADERS) $(build_HEADERZ)'; \ +install-build-headers:: $(include_HEADERS) $(dist_include_HEADERS) $(nodist_include_HEADERS) $(build_HEADERZ) $(nobase_include_HEADERS) + @foo='$(include_HEADERS) $(dist_include_HEADERS) $(nodist_include_HEADERS) $(build_HEADERZ)'; \ for f in $$foo; do \ f=`basename $$f`; \ if test -f "$(srcdir)/$$f"; then file="$(srcdir)/$$f"; \ @@ -773,19 +762,31 @@ install-build-headers:: $(include_HEADERS) $(build_HEADERZ) echo " $(CP) $$file $(buildinclude)/$$f"; \ $(CP) $$file $(buildinclude)/$$f; \ fi ; \ + done ; \ + foo='$(nobase_include_HEADERS)'; \ + for f in $$foo; do \ + if test -f "$(srcdir)/$$f"; then file="$(srcdir)/$$f"; \ + else file="$$f"; fi; \ + $(mkdir_p) $(buildinclude)/`dirname $$f` ; \ + if cmp -s $$file $(buildinclude)/$$f 2> /dev/null ; then \ + : ; else \ + echo " $(CP) $$file $(buildinclude)/$$f"; \ + $(CP) $$file $(buildinclude)/$$f; \ + fi ; \ done all-local: install-build-headers check-local:: - @if test '$(CHECK_LOCAL)'; then \ + @if test '$(CHECK_LOCAL)' = "no-check-local"; then \ + foo=''; elif test '$(CHECK_LOCAL)'; then \ foo='$(CHECK_LOCAL)'; else \ foo='$(PROGRAMS)'; fi; \ if test "$$foo"; then \ failed=0; all=0; \ for i in $$foo; do \ all=`expr $$all + 1`; \ - if ./$$i --version > /dev/null 2>&1; then \ + if (./$$i --version && ./$$i --help) > /dev/null 2>&1; then \ echo "PASS: $$i"; \ else \ echo "FAIL: $$i"; \ @@ -801,7 +802,7 @@ check-local:: echo "$$dashes"; \ echo "$$banner"; \ echo "$$dashes"; \ - test "$$failed" -eq 0; \ + test "$$failed" -eq 0 || exit 1; \ fi .x.c: @@ -871,15 +872,40 @@ dist-cat8-mans: dist-hook: dist-cat1-mans dist-cat3-mans dist-cat5-mans dist-cat8-mans install-cat-mans: - $(SHELL) $(top_srcdir)/cf/install-catman.sh "$(INSTALL_DATA)" "$(mkinstalldirs)" "$(srcdir)" "$(DESTDIR)$(mandir)" '$(CATMANEXT)' $(man_MANS) $(man1_MANS) $(man3_MANS) $(man5_MANS) $(man8_MANS) + $(SHELL) $(top_srcdir)/cf/install-catman.sh install "$(INSTALL_DATA)" "$(mkinstalldirs)" "$(srcdir)" "$(DESTDIR)$(mandir)" '$(CATMANEXT)' $(man_MANS) $(man1_MANS) $(man3_MANS) $(man5_MANS) $(man8_MANS) + +uninstall-cat-mans: + $(SHELL) $(top_srcdir)/cf/install-catman.sh uninstall "$(INSTALL_DATA)" "$(mkinstalldirs)" "$(srcdir)" "$(DESTDIR)$(mandir)" '$(CATMANEXT)' $(man_MANS) $(man1_MANS) $(man3_MANS) $(man5_MANS) $(man8_MANS) install-data-hook: install-cat-mans +uninstall-hook: uninstall-cat-mans .et.h: $(COMPILE_ET) $< .et.c: $(COMPILE_ET) $< +# +# Useful target for debugging +# + +check-valgrind: + tobjdir=`cd $(top_builddir) && pwd` ; \ + tsrcdir=`cd $(top_srcdir) && pwd` ; \ + env TESTS_ENVIRONMENT="$${tobjdir}/libtool --mode execute valgrind --leak-check=full --trace-children=yes --quiet -q --num-callers=30 --suppressions=$${tsrcdir}/cf/valgrind-suppressions" make check + +# +# Target to please samba build farm, builds distfiles in-tree. +# Will break when automake changes... +# + +distdir-in-tree: $(DISTFILES) $(INFO_DEPS) + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" != .; then \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) distdir-in-tree) ; \ + fi ; \ + done + $(srcdir)/login_protos.h: cd $(srcdir); perl ../../cf/make-proto.pl -o login_protos.h -q -P comment $(login_SOURCES) || rm -f login_protos.h diff --git a/crypto/heimdal/appl/login/conf.c b/crypto/heimdal/appl/login/conf.c index 85cfc00..81a3c74 100644 --- a/crypto/heimdal/appl/login/conf.c +++ b/crypto/heimdal/appl/login/conf.c @@ -32,7 +32,7 @@ #include "login_locl.h" -RCSID("$Id: conf.c,v 1.3 2000/05/29 16:52:24 assar Exp $"); +RCSID("$Id: conf.c 8302 2000-05-29 16:52:24Z assar $"); static char *confbuf; diff --git a/crypto/heimdal/appl/login/env.c b/crypto/heimdal/appl/login/env.c index 57f68b1..e1b33ba 100644 --- a/crypto/heimdal/appl/login/env.c +++ b/crypto/heimdal/appl/login/env.c @@ -32,7 +32,7 @@ */ #include "login_locl.h" -RCSID("$Id: env.c,v 1.1 2000/06/28 12:27:38 joda Exp $"); +RCSID("$Id: env.c 8476 2000-06-28 12:27:38Z joda $"); /* * the environment we will send to execle and the shell. diff --git a/crypto/heimdal/appl/login/limits_conf.c b/crypto/heimdal/appl/login/limits_conf.c new file mode 100644 index 0000000..ac9837f --- /dev/null +++ b/crypto/heimdal/appl/login/limits_conf.c @@ -0,0 +1,214 @@ +/* + * Copyright (c) 2005 Kungliga Tekniska Högskolan + * (Royal Institute of Technology, Stockholm, Sweden). + * 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, this list of conditions and the following disclaimer. + * + * 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. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``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 INSTITUTE OR CONTRIBUTORS 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. + */ + +#include "login_locl.h" + +RCSID("$Id: limits_conf.c 19215 2006-12-04 23:41:18Z lha $"); + +#include <errno.h> +#include <limits.h> +#ifdef HAVE_SYS_RESOURCE_H +#include <sys/resource.h> +#endif + +struct limit { + const char *name; + int resource; + int scale; + int has_limit; + struct rlimit limit; +} limits[] = { +#define LIM(X, S) { #X, RLIMIT_##X, S, 0 } + LIM(CORE, 1024), + LIM(CPU, 60), + LIM(DATA, 1024), + LIM(FSIZE, 1024), +#ifdef RLIMIT_MEMLOCK + LIM(MEMLOCK, 1024), +#endif + LIM(NOFILE, 1), +#ifdef RLIMIT_NPROC + LIM(NPROC, 1), +#endif +#ifdef RLIMIT_RSS + LIM(RSS, 1024), +#endif + LIM(STACK, 1024), + +#ifdef RLIMIT_AS + LIM(AS, 1024), +#endif +#ifdef RLIMIT_LOCKS + LIM(LOCKS, 1), +#endif + /* + maxlogins + priority + */ + { NULL, 0 } +}; + +static struct limit * +find_limit(const char *name) +{ + struct limit *l; + for(l = limits; l->name != NULL; l++) + if(strcasecmp(name, l->name) == 0) + return l; + return NULL; +} + +/* this function reads limits.conf files similar to pam_limits + unimplemented features include: + % maxlogins + "-" no limits, + priorities etc that are not set via setrlimit + XXX uses static storage, and clobbers getgr* +*/ + +int +read_limits_conf(const char *file, const struct passwd *pwd) +{ + FILE *f; + char *args[4]; + int lineno = 0; + char buf[1024]; + struct limit *l; + rlim_t value; + + f = fopen(file, "r"); + if(f == NULL) { + if(errno != ENOENT && errno != ENOTDIR) + syslog(LOG_ERR, "%s: %m", file); + return -1; + } + + while(fgets(buf, sizeof(buf), f) != NULL) { + char *last = NULL; + char *end = NULL; + int level; + + lineno++; + + if(buf[0] == '\0') { + syslog(LOG_ERR, "%s: line %d: NUL character", file, lineno); + continue; + } + if(buf[strlen(buf) - 1] != '\n') { + /* file did not end with a newline, figure out if we're at + the EOF, or if our buffer was too small */ + int eof = 1; + int c; + while((c = fgetc(f)) != EOF) { + eof = 0; + if(c == '\n') + break; + } + if(!eof) { + syslog(LOG_ERR, "%s: line %d: line too long", file, lineno); + continue; + } + } + buf[strcspn(buf, "#\r\n")] = '\0'; + if((args[0] = strtok_r(buf, " \t", &last)) == NULL || + (args[1] = strtok_r(NULL, " \t", &last)) == NULL || + (args[2] = strtok_r(NULL, " \t", &last)) == NULL || + (args[3] = strtok_r(NULL, " \t", &last)) == NULL) { + if(args[0] != NULL) /* this would include comment lines */ + syslog(LOG_ERR, "%s: line %d: malformed line", file, lineno); + continue; + } + + l = find_limit(args[2]); + if(l == NULL) { + syslog(LOG_ERR, "%s: line %d: unknown limit %s", file, lineno, args[2]); + continue; + } + if(strcmp(args[3], "-") == 0) { + value = RLIM_INFINITY; + } else { + errno = 0; + value = strtol(args[3], &end, 10); + if(*end != '\0') { + syslog(LOG_ERR, "%s: line %d: bad value %s", file, lineno, args[3]); + continue; + } + if((value == LONG_MIN || value == LONG_MAX) && errno == ERANGE) { + syslog(LOG_ERR, "%s: line %d: bad value %s", file, lineno, args[3]); + continue; + } + if(value * l->scale < value) + value = RLIM_INFINITY; + else + value *= l->scale; + } + level = 0; + /* XXX unclear: if you set group hard and user soft limit, + should the hard limit still apply? this code doesn't. */ + if(strcmp(args[0], pwd->pw_name) == 0) + level = 3; + if(*args[0] == '@') { + struct group *gr; + gr = getgrnam(args[0] + 1); + if(gr != NULL && gr->gr_gid == pwd->pw_gid) + level = 2; + } + if(strcmp(args[0], "*") == 0) + level = 1; + if(level == 0 || level < l->has_limit) /* not for us */ + continue; + if(l->has_limit < level) { + if(getrlimit(l->resource, &l->limit) < 0) + continue; + l->has_limit = level; + } + + /* XXX unclear: if you soft to more than default hard, should + we set hard to soft? this code doesn't. */ + if(strcasecmp(args[1], "soft") == 0 || strcmp(args[1], "-") == 0) + l->limit.rlim_cur = value; + if(strcasecmp(args[1], "hard") == 0 || strcmp(args[1], "-") == 0) + l->limit.rlim_max = value; + } + fclose(f); + for(l = limits; l->name != NULL; l++) { + if(l->has_limit) { + if(l->limit.rlim_cur > l->limit.rlim_max) + l->limit.rlim_cur = l->limit.rlim_max; + if(setrlimit(l->resource, &l->limit) != 0) + syslog(LOG_ERR, "setrlimit RLIM_%s failed: %m", l->name); + } + l->has_limit = 0; + } + return 0; +} diff --git a/crypto/heimdal/appl/login/login.1 b/crypto/heimdal/appl/login/login.1 index b0c9a6c..1ae4f3e 100644 --- a/crypto/heimdal/appl/login/login.1 +++ b/crypto/heimdal/appl/login/login.1 @@ -1,6 +1,6 @@ -.\" $Id: login.1,v 1.1 2003/03/24 16:15:12 joda Exp $ +.\" $Id: login.1 14891 2005-04-22 15:49:25Z joda $ .\" -.Dd March 24, 2003 +.Dd April 22, 2005 .Dt LOGIN 1 .Os HEIMDAL .Sh NAME @@ -189,6 +189,10 @@ A comma separated list of text files that will be printed to the user's terminal before starting the shell. The string .Li welcome works similarly, but points to a single file. +.It Li limits +Points to a file containing ulimit settings for various users. Syntax +is inspired by what pam_limits uses, and the default is +.Pa /etc/security/limits.conf . .El .It Pa /etc/nologin If it exists, login is denied to all but root. The contents of this @@ -213,8 +217,31 @@ A file could look like: .Bd -literal -offset indent default:\\ - :motd=/etc/motd,/etc/motd.local: + :motd=/etc/motd,/etc/motd.local:\\ + :limits=/etc/limits.conf: .Ed +.Pp +The +.Pa limits.conf +file consists of a table with four whitespace separated fields. First +field is a username or a groupname (prefixed with +.Sq @ ) , +or +.Sq * . +Second field is +.Sq soft , +.Sq hard , +or +.Sq - +(the last meaning both soft and hard). +Third field is a limit name (such as +.Sq cpu +or +.Sq core ) . +Last field is the limit value (a number or +.Sq - +for unlimited). In the case of data sizes, the value is in kilobytes, +and cputime is in minutes. .Sh SEE ALSO .Xr su 1 , .Xr login.access 5 , diff --git a/crypto/heimdal/appl/login/login.access.5 b/crypto/heimdal/appl/login/login.access.5 index be8828c..23290be 100644 --- a/crypto/heimdal/appl/login/login.access.5 +++ b/crypto/heimdal/appl/login/login.access.5 @@ -1,4 +1,4 @@ -.\" $Id: login.access.5,v 1.1 2003/03/24 15:49:30 joda Exp $ +.\" $Id: login.access.5 11902 2003-03-24 15:49:30Z joda $ .\" .Dd March 21, 2003 .Dt LOGIN.ACCESS 5 diff --git a/crypto/heimdal/appl/login/login.c b/crypto/heimdal/appl/login/login.c index 1531eec..cc41097 100644 --- a/crypto/heimdal/appl/login/login.c +++ b/crypto/heimdal/appl/login/login.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997 - 2003 Kungliga Tekniska Högskolan + * Copyright (c) 1997 - 2006 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -38,8 +38,11 @@ #ifdef HAVE_SYS_CAPABILITY_H #include <sys/capability.h> #endif +#ifdef HAVE_CRYPT_H +#include <crypt.h> +#endif -RCSID("$Id: login.c,v 1.59.2.1 2004/09/08 09:15:39 joda Exp $"); +RCSID("$Id: login.c 16498 2006-01-09 16:26:25Z joda $"); static int login_timeout = 60; @@ -118,7 +121,8 @@ exec_shell(const char *shell, int fallback) p++; else p = shell; - asprintf(&sh, "-%s", p); + if (asprintf(&sh, "-%s", p) == -1) + errx(1, "Out of memory"); execle(shell, sh, NULL, env); if(fallback){ warnx("Can't exec %s, trying %s", @@ -131,6 +135,10 @@ exec_shell(const char *shell, int fallback) static enum { NONE = 0, AUTH_KRB4 = 1, AUTH_KRB5 = 2, AUTH_OTP = 3 } auth; +#ifdef KRB4 +static krb5_boolean get_v4_tgt = FALSE; +#endif + #ifdef OTP static OtpContext otp_ctx; @@ -179,8 +187,6 @@ krb5_to4 (krb5_ccache id) krb5_error_code ret; krb5_principal princ; - int get_v4_tgt; - ret = krb5_cc_get_principal(context, id, &princ); if(ret == 0) { krb5_appdefault_boolean(context, "login", @@ -203,6 +209,8 @@ krb5_to4 (krb5_ccache id) krb5_error_code ret; krb5_principal princ; + krb5_cc_clear_mcred(&mcred); + ret = krb5_cc_get_principal (context, id, &princ); if (ret) return ret; @@ -212,9 +220,11 @@ krb5_to4 (krb5_ccache id) "krbtgt", princ->realm, NULL); - krb5_free_principal (context, princ); - if (ret) + if (ret) { + krb5_free_principal(context, princ); return ret; + } + mcred.client = princ; ret = krb5_cc_retrieve_cred(context, id, 0, &mcred, &cred); if(ret == 0) { @@ -226,9 +236,12 @@ krb5_to4 (krb5_ccache id) tf_setup(&c, c.pname, c.pinst); } memset(&c, 0, sizeof(c)); - krb5_free_creds_contents(context, &cred); + krb5_free_cred_contents(context, &cred); } + if (ret != 0) + get_v4_tgt = FALSE; krb5_free_principal(context, mcred.server); + krb5_free_principal(context, mcred.client); } return 0; } @@ -476,6 +489,14 @@ do_login(const struct passwd *pwd, char *tty, char *ttyn) exit(1); } #endif + if(rootlogin == 0) { + const char *file = login_conf_get_string("limits"); + if(file == NULL) + file = _PATH_LIMITS_CONF; + + read_limits_conf(file, pwd); + } + #ifdef HAVE_SETPCRED if (setpcred (pwd->pw_name, NULL) == -1) warn("setpcred(%s)", pwd->pw_name); @@ -598,7 +619,8 @@ do_login(const struct passwd *pwd, char *tty, char *ttyn) #endif /* KRB5 */ #ifdef KRB4 - krb4_get_afs_tokens (pwd); + if (auth == AUTH_KRB4 || get_v4_tgt) + krb4_get_afs_tokens (pwd); #endif /* KRB4 */ add_env("PATH", _PATH_DEFPATH); @@ -700,7 +722,7 @@ main(int argc, char **argv) int try; char username[32]; - int optind = 0; + int optidx = 0; int ask = 1; struct sigaction sa; @@ -717,13 +739,13 @@ main(int argc, char **argv) } #endif - openlog("login", LOG_ODELAY, LOG_AUTH); + openlog("login", LOG_ODELAY | LOG_PID, LOG_AUTH); if (getarg (args, sizeof(args) / sizeof(args[0]), argc, argv, - &optind)) + &optidx)) usage (1); - argc -= optind; - argv += optind; + argc -= optidx; + argv += optidx; if(help_flag) usage(0); @@ -850,6 +872,13 @@ main(int argc, char **argv) syslog(LOG_NOTICE, "%s LOGIN REFUSED ON %s", pwd->pw_name, tty); exit (1); + } else { + if (remote_host) + syslog(LOG_NOTICE, "%s LOGIN ACCEPTED FROM %s ppid=%d", + pwd->pw_name, remote_host, (int) getppid()); + else + syslog(LOG_NOTICE, "%s LOGIN ACCEPTED ON %s ppid=%d", + pwd->pw_name, tty, (int) getppid()); } alarm(0); do_login(pwd, tty, ttyn); diff --git a/crypto/heimdal/appl/login/login_access.c b/crypto/heimdal/appl/login/login_access.c index d6275fd..e1bfe42e 100644 --- a/crypto/heimdal/appl/login/login_access.c +++ b/crypto/heimdal/appl/login/login_access.c @@ -25,7 +25,7 @@ #include "login_locl.h" -RCSID("$Id: login_access.c,v 1.2 2001/06/04 14:09:45 assar Exp $"); +RCSID("$Id: login_access.c 10020 2001-06-04 14:10:19Z assar $"); /* Delimiters for fields and for lists of users, ttys or hosts. */ diff --git a/crypto/heimdal/appl/login/login_locl.h b/crypto/heimdal/appl/login/login_locl.h index cc1d920..08b960c 100644 --- a/crypto/heimdal/appl/login/login_locl.h +++ b/crypto/heimdal/appl/login/login_locl.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997 - 2002 Kungliga Tekniska Högskolan + * Copyright (c) 1997 - 2005 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -31,7 +31,7 @@ * SUCH DAMAGE. */ -/* $Id: login_locl.h,v 1.24 2002/08/12 15:09:15 joda Exp $ */ +/* $Id: login_locl.h 17302 2006-04-27 09:17:01Z lha $ */ #ifndef __LOGIN_LOCL_H__ #define __LOGIN_LOCL_H__ @@ -111,9 +111,6 @@ #ifndef _PATH_DEV #define _PATH_DEV "/dev/" #endif -#ifndef _PATH_NOLOGIN -#define _PATH_NOLOGIN "/etc/nologin" -#endif #ifndef _PATH_WTMP #ifdef WTMP_FILE #define _PATH_WTMP WTMP_FILE @@ -137,14 +134,12 @@ #define _PATH_LOGIN_CONF SYSCONFDIR "/login.conf" #endif /* _PATH_LOGIN_CONF */ -#ifndef _PATH_ETC_ENVIRONMENT -#define _PATH_ETC_ENVIRONMENT SYSCONFDIR "/environment" -#endif - #ifndef _PATH_DEFPATH #define _PATH_DEFPATH "/usr/bin:/bin" #endif +#include "loginpaths.h" + struct spwd; extern char **env; diff --git a/crypto/heimdal/appl/login/login_protos.h b/crypto/heimdal/appl/login/login_protos.h index 48b8101..7fdbb35 100644 --- a/crypto/heimdal/appl/login/login_protos.h +++ b/crypto/heimdal/appl/login/login_protos.h @@ -4,6 +4,10 @@ #include <stdarg.h> +#ifdef __cplusplus +extern "C" { +#endif + void add_env ( const char */*var*/, @@ -48,6 +52,11 @@ prepare_utmp ( const char */*hostname*/); int +read_limits_conf ( + const char */*file*/, + const struct passwd */*pwd*/); + +int read_string ( const char */*prompt*/, char */*buf*/, @@ -75,4 +84,8 @@ utmpx_login ( const char */*user*/, const char */*host*/); +#ifdef __cplusplus +} +#endif + #endif /* __login_protos_h__ */ diff --git a/crypto/heimdal/appl/login/loginpaths.h b/crypto/heimdal/appl/login/loginpaths.h new file mode 100644 index 0000000..141f81e --- /dev/null +++ b/crypto/heimdal/appl/login/loginpaths.h @@ -0,0 +1,52 @@ +/* + * Copyright (c) 1997 - 2005 Kungliga Tekniska Högskolan + * (Royal Institute of Technology, Stockholm, Sweden). + * 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, this list of conditions and the following disclaimer. + * + * 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. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``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 INSTITUTE OR CONTRIBUTORS 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. + */ + +/* $Id: loginpaths.h 17299 2006-04-27 09:14:20Z lha $ */ + +#ifndef __LOGIN_PATH_H +#define __LOGIN_PATH_H + +#ifndef _PATH_NOLOGIN +#define _PATH_NOLOGIN "/etc/nologin" +#endif + +#ifndef _PATH_ETC_ENVIRONMENT +#define _PATH_ETC_ENVIRONMENT SYSCONFDIR "/environment" +#endif + +#ifndef _PATH_LIMITS_CONF +#define _PATH_LIMITS_CONF "/etc/security/limits.conf" +#endif + + +#endif /* __LOGIN_PATH_H */ diff --git a/crypto/heimdal/appl/login/osfc2.c b/crypto/heimdal/appl/login/osfc2.c index 056484c..e9c3679 100644 --- a/crypto/heimdal/appl/login/osfc2.c +++ b/crypto/heimdal/appl/login/osfc2.c @@ -32,7 +32,7 @@ */ #include "login_locl.h" -RCSID("$Id: osfc2.c,v 1.4 2001/02/20 01:44:46 assar Exp $"); +RCSID("$Id: osfc2.c 9704 2001-02-20 01:44:56Z assar $"); int do_osfc2_magic(uid_t uid) diff --git a/crypto/heimdal/appl/login/read_string.c b/crypto/heimdal/appl/login/read_string.c index f3cee14..925345e 100644 --- a/crypto/heimdal/appl/login/read_string.c +++ b/crypto/heimdal/appl/login/read_string.c @@ -33,7 +33,7 @@ #include "login_locl.h" -RCSID("$Id: read_string.c,v 1.4 2000/06/21 02:09:36 assar Exp $"); +RCSID("$Id: read_string.c 18156 2006-09-22 15:42:39Z lha $"); static sig_atomic_t intr_flag; @@ -43,10 +43,15 @@ intr(int sig) intr_flag++; } +#ifndef NSIG +#define NSIG 47 +#endif + int read_string(const char *prompt, char *buf, size_t len, int echo) { - struct sigaction sigs[47]; + struct sigaction sigs[NSIG]; + int oksigs[NSIG]; struct sigaction sa; FILE *tty; int ret = 0; @@ -57,12 +62,16 @@ read_string(const char *prompt, char *buf, size_t len, int echo) struct termios t_new, t_old; + memset(&oksigs, 0, sizeof(oksigs)); + memset(&sa, 0, sizeof(sa)); sa.sa_handler = intr; sigemptyset(&sa.sa_mask); sa.sa_flags = 0; - for(i = 0; i < sizeof(sigs) / sizeof(sigs[0]); i++) - if (i != SIGALRM) sigaction(i, &sa, &sigs[i]); + for(i = 1; i < sizeof(sigs) / sizeof(sigs[0]); i++) + if (i != SIGALRM) + if (sigaction(i, &sa, &sigs[i]) == 0) + oksigs[i] = 1; if((tty = fopen("/dev/tty", "r")) == NULL) tty = stdin; @@ -103,8 +112,9 @@ read_string(const char *prompt, char *buf, size_t len, int echo) if(tty != stdin) fclose(tty); - for(i = 0; i < sizeof(sigs) / sizeof(sigs[0]); i++) - if (i != SIGALRM) sigaction(i, &sigs[i], NULL); + for(i = 1; i < sizeof(sigs) / sizeof(sigs[0]); i++) + if (oksigs[i]) + sigaction(i, &sigs[i], NULL); if(ret) return -3; diff --git a/crypto/heimdal/appl/login/shadow.c b/crypto/heimdal/appl/login/shadow.c index 0923831..081fe1c 100644 --- a/crypto/heimdal/appl/login/shadow.c +++ b/crypto/heimdal/appl/login/shadow.c @@ -33,7 +33,7 @@ #include "login_locl.h" -RCSID("$Id: shadow.c,v 1.5 1999/12/02 17:04:56 joda Exp $"); +RCSID("$Id: shadow.c 7464 1999-12-02 17:05:13Z joda $"); #ifdef HAVE_SHADOW_H diff --git a/crypto/heimdal/appl/login/stty_default.c b/crypto/heimdal/appl/login/stty_default.c index 5e38566..df49048 100644 --- a/crypto/heimdal/appl/login/stty_default.c +++ b/crypto/heimdal/appl/login/stty_default.c @@ -33,7 +33,7 @@ #include "login_locl.h" -RCSID("$Id: stty_default.c,v 1.8 1999/12/02 17:04:56 joda Exp $"); +RCSID("$Id: stty_default.c 7464 1999-12-02 17:05:13Z joda $"); #include <termios.h> diff --git a/crypto/heimdal/appl/login/tty.c b/crypto/heimdal/appl/login/tty.c index 0ffea72..8dd68ee 100644 --- a/crypto/heimdal/appl/login/tty.c +++ b/crypto/heimdal/appl/login/tty.c @@ -33,7 +33,7 @@ #include "login_locl.h" -RCSID("$Id: tty.c,v 1.4 1999/12/02 17:04:56 joda Exp $"); +RCSID("$Id: tty.c 7464 1999-12-02 17:05:13Z joda $"); /* * Clean the tty name. Return a pointer to the cleaned version. diff --git a/crypto/heimdal/appl/login/utmp_login.c b/crypto/heimdal/appl/login/utmp_login.c index 0be6cdb..5f6c79c 100644 --- a/crypto/heimdal/appl/login/utmp_login.c +++ b/crypto/heimdal/appl/login/utmp_login.c @@ -33,7 +33,7 @@ #include "login_locl.h" -RCSID("$Id: utmp_login.c,v 1.18 2001/02/08 16:08:26 assar Exp $"); +RCSID("$Id: utmp_login.c 9661 2001-02-08 16:08:47Z assar $"); /* try to put something useful from hostname into dst, dst_sz: * full name, first component or address */ diff --git a/crypto/heimdal/appl/login/utmpx_login.c b/crypto/heimdal/appl/login/utmpx_login.c index b6e5fcf..5e25c09 100644 --- a/crypto/heimdal/appl/login/utmpx_login.c +++ b/crypto/heimdal/appl/login/utmpx_login.c @@ -18,7 +18,7 @@ #include "login_locl.h" -RCSID("$Id: utmpx_login.c,v 1.26 2001/06/04 14:10:19 assar Exp $"); +RCSID("$Id: utmpx_login.c 10020 2001-06-04 14:10:19Z assar $"); /* utmpx_login - update utmp and wtmp after login */ |