diff options
author | assar <assar@FreeBSD.org> | 2001-02-13 16:46:19 +0000 |
---|---|---|
committer | assar <assar@FreeBSD.org> | 2001-02-13 16:46:19 +0000 |
commit | 3a971fe69aad52dfd248901ae796e64a96ae3e37 (patch) | |
tree | ac7b5c62510ffa9f0316643bcb19a3fed3d5bef7 /crypto/heimdal/admin | |
parent | 2934fc23653f64b32f4db32233d7eda11ca274f0 (diff) | |
parent | ebfe6dc471c206300fd82c7c0fd145f683aa52f6 (diff) | |
download | FreeBSD-src-3a971fe69aad52dfd248901ae796e64a96ae3e37.zip FreeBSD-src-3a971fe69aad52dfd248901ae796e64a96ae3e37.tar.gz |
This commit was generated by cvs2svn to compensate for changes in r72445,
which included commits to RCS files with non-trunk default branches.
Diffstat (limited to 'crypto/heimdal/admin')
-rw-r--r-- | crypto/heimdal/admin/Makefile.am | 8 | ||||
-rw-r--r-- | crypto/heimdal/admin/Makefile.in | 298 | ||||
-rw-r--r-- | crypto/heimdal/admin/change.c | 4 | ||||
-rw-r--r-- | crypto/heimdal/admin/copy.c | 198 | ||||
-rw-r--r-- | crypto/heimdal/admin/get.c | 22 | ||||
-rw-r--r-- | crypto/heimdal/admin/ktutil.8 | 46 | ||||
-rw-r--r-- | crypto/heimdal/admin/ktutil.c | 15 | ||||
-rw-r--r-- | crypto/heimdal/admin/list.c | 132 | ||||
-rw-r--r-- | crypto/heimdal/admin/purge.c | 19 |
9 files changed, 472 insertions, 270 deletions
diff --git a/crypto/heimdal/admin/Makefile.am b/crypto/heimdal/admin/Makefile.am index 2b9d5b9..f6eca74 100644 --- a/crypto/heimdal/admin/Makefile.am +++ b/crypto/heimdal/admin/Makefile.am @@ -1,4 +1,4 @@ -# $Id: Makefile.am,v 1.30 2000/01/06 08:02:37 assar Exp $ +# $Id: Makefile.am,v 1.33 2000/12/16 00:16:45 joda Exp $ include $(top_srcdir)/Makefile.am.common @@ -15,14 +15,12 @@ ktutil_SOURCES = add.c \ ktutil.c \ list.c \ purge.c \ - remove.c \ - srvconvert.c \ - srvcreate.c + remove.c LDADD = \ $(top_builddir)/lib/kadm5/libkadm5clnt.la \ $(top_builddir)/lib/krb5/libkrb5.la \ - $(top_builddir)/lib/des/libdes.la \ + $(LIB_des) \ $(top_builddir)/lib/asn1/libasn1.la \ $(top_builddir)/lib/sl/libsl.la \ $(LIB_readline) \ diff --git a/crypto/heimdal/admin/Makefile.in b/crypto/heimdal/admin/Makefile.in index 52665a5..9c192ad 100644 --- a/crypto/heimdal/admin/Makefile.in +++ b/crypto/heimdal/admin/Makefile.in @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.4 from Makefile.am +# Makefile.in generated automatically by automake 1.4a from Makefile.am -# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995-9, 2000 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. @@ -10,15 +10,6 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. -# $Id: Makefile.am,v 1.30 2000/01/06 08:02:37 assar Exp $ - - -# $Id: Makefile.am.common,v 1.3 1999/04/01 14:58:43 joda Exp $ - - -# $Id: Makefile.am.common,v 1.13 1999/11/01 03:19:58 assar Exp $ - - SHELL = @SHELL@ srcdir = @srcdir@ @@ -40,8 +31,6 @@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include -DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ @@ -54,9 +43,10 @@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_FLAG = transform = @program_transform_name@ NORMAL_INSTALL = : @@ -65,26 +55,39 @@ POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : + +@SET_MAKE@ host_alias = @host_alias@ host_triplet = @host@ -AFS_EXTRA_LD = @AFS_EXTRA_LD@ AIX_EXTRA_KAFS = @AIX_EXTRA_KAFS@ +AMDEP = @AMDEP@ +AMTAR = @AMTAR@ +AS = @AS@ AWK = @AWK@ CANONICAL_HOST = @CANONICAL_HOST@ CATMAN = @CATMAN@ CATMANEXT = @CATMANEXT@ CC = @CC@ +CPP = @CPP@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ DBLIB = @DBLIB@ +DEPDIR = @DEPDIR@ +DIR_des = @DIR_des@ +DIR_roken = @DIR_roken@ +DLLTOOL = @DLLTOOL@ EXEEXT = @EXEEXT@ EXTRA_LIB45 = @EXTRA_LIB45@ GROFF = @GROFF@ +INCLUDES_roken = @INCLUDES_roken@ INCLUDE_ = @INCLUDE_@ -LD = @LD@ LEX = @LEX@ LIBOBJS = @LIBOBJS@ LIBTOOL = @LIBTOOL@ LIB_ = @LIB_@ LIB_AUTH_SUBDIRS = @LIB_AUTH_SUBDIRS@ +LIB_des = @LIB_des@ +LIB_des_appl = @LIB_des_appl@ LIB_kdb = @LIB_kdb@ LIB_otp = @LIB_otp@ LIB_roken = @LIB_roken@ @@ -92,31 +95,43 @@ LIB_security = @LIB_security@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ -MAKE_X_PROGS_BIN_PROGS = @MAKE_X_PROGS_BIN_PROGS@ -MAKE_X_PROGS_BIN_SCRPTS = @MAKE_X_PROGS_BIN_SCRPTS@ -MAKE_X_PROGS_LIBEXEC_PROGS = @MAKE_X_PROGS_LIBEXEC_PROGS@ NEED_WRITEAUTH_FALSE = @NEED_WRITEAUTH_FALSE@ NEED_WRITEAUTH_TRUE = @NEED_WRITEAUTH_TRUE@ -NM = @NM@ NROFF = @NROFF@ +OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ +STRIP = @STRIP@ VERSION = @VERSION@ VOID_RETSIGTYPE = @VOID_RETSIGTYPE@ WFLAGS = @WFLAGS@ WFLAGS_NOIMPLICITINT = @WFLAGS_NOIMPLICITINT@ WFLAGS_NOUNUSED = @WFLAGS_NOUNUSED@ YACC = @YACC@ +dpagaix_CFLAGS = @dpagaix_CFLAGS@ +dpagaix_LDADD = @dpagaix_LDADD@ +install_sh = @install_sh@ + +# $Id: Makefile.am,v 1.33 2000/12/16 00:16:45 joda Exp $ + + +# $Id: Makefile.am.common,v 1.3 1999/04/01 14:58:43 joda Exp $ + + +# $Id: Makefile.am.common,v 1.23 2000/12/05 09:11:09 joda Exp $ + AUTOMAKE_OPTIONS = foreign no-dependencies SUFFIXES = .et .h .1 .3 .5 .8 .cat1 .cat3 .cat5 .cat8 .x -INCLUDES = -I$(top_builddir)/include $(INCLUDE_readline) +INCLUDES = -I$(top_builddir)/include $(INCLUDES_roken) $(INCLUDE_readline) AM_CFLAGS = $(WFLAGS) +CP = cp + COMPILE_ET = $(top_builddir)/lib/com_err/compile_et buildinclude = $(top_builddir)/include @@ -136,6 +151,7 @@ LIB_getsockopt = @LIB_getsockopt@ LIB_logout = @LIB_logout@ LIB_logwtmp = @LIB_logwtmp@ LIB_odm_initialize = @LIB_odm_initialize@ +LIB_pidfile = @LIB_pidfile@ LIB_readline = @LIB_readline@ LIB_res_search = @LIB_res_search@ LIB_setpcred = @LIB_setpcred@ @@ -144,6 +160,8 @@ LIB_socket = @LIB_socket@ LIB_syslog = @LIB_syslog@ LIB_tgetent = @LIB_tgetent@ +LIBS = @LIBS@ + HESIODLIB = @HESIODLIB@ HESIODINCLUDE = @HESIODINCLUDE@ INCLUDE_hesiod = @INCLUDE_hesiod@ @@ -152,24 +170,20 @@ LIB_hesiod = @LIB_hesiod@ INCLUDE_krb4 = @INCLUDE_krb4@ LIB_krb4 = @LIB_krb4@ +INCLUDE_openldap = @INCLUDE_openldap@ +LIB_openldap = @LIB_openldap@ + INCLUDE_readline = @INCLUDE_readline@ LEXLIB = @LEXLIB@ -cat1dir = $(mandir)/cat1 -cat3dir = $(mandir)/cat3 -cat5dir = $(mandir)/cat5 -cat8dir = $(mandir)/cat8 - -MANRX = \(.*\)\.\([0-9]\) -CATSUFFIX = @CATSUFFIX@ - NROFF_MAN = groff -mandoc -Tascii -@KRB4_TRUE@LIB_kafs = $(top_builddir)/lib/kafs/libkafs.la $(AIX_EXTRA_KAFS) +@KRB4_TRUE@LIB_kafs = @KRB4_TRUE@$(top_builddir)/lib/kafs/libkafs.la $(AIX_EXTRA_KAFS) -@KRB5_TRUE@LIB_krb5 = $(top_builddir)/lib/krb5/libkrb5.la $(top_builddir)/lib/asn1/libasn1.la -@KRB5_TRUE@LIB_gssapi = $(top_builddir)/lib/gssapi/libgssapi.la +@KRB5_TRUE@LIB_krb5 = @KRB5_TRUE@$(top_builddir)/lib/krb5/libkrb5.la \ +@KRB5_TRUE@ $(top_builddir)/lib/asn1/libasn1.la +@KRB5_TRUE@LIB_gssapi = @KRB5_TRUE@$(top_builddir)/lib/gssapi/libgssapi.la CHECK_LOCAL = $(PROGRAMS) @@ -177,11 +191,26 @@ man_MANS = ktutil.8 sbin_PROGRAMS = ktutil -ktutil_SOURCES = add.c change.c copy.c get.c ktutil.c list.c purge.c remove.c srvconvert.c srvcreate.c - - -LDADD = $(top_builddir)/lib/kadm5/libkadm5clnt.la $(top_builddir)/lib/krb5/libkrb5.la $(top_builddir)/lib/des/libdes.la $(top_builddir)/lib/asn1/libasn1.la $(top_builddir)/lib/sl/libsl.la $(LIB_readline) $(LIB_roken) +ktutil_SOURCES = add.c \ + change.c \ + copy.c \ + get.c \ + ktutil.c \ + list.c \ + purge.c \ + remove.c + + +LDADD = \ + $(top_builddir)/lib/kadm5/libkadm5clnt.la \ + $(top_builddir)/lib/krb5/libkrb5.la \ + $(LIB_des) \ + $(top_builddir)/lib/asn1/libasn1.la \ + $(top_builddir)/lib/sl/libsl.la \ + $(LIB_readline) \ + $(LIB_roken) +subdir = admin mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../include/config.h CONFIG_CLEAN_FILES = @@ -192,39 +221,40 @@ PROGRAMS = $(sbin_PROGRAMS) DEFS = @DEFS@ -I. -I$(srcdir) -I../include CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ X_CFLAGS = @X_CFLAGS@ X_LIBS = @X_LIBS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ -ktutil_OBJECTS = add.$(OBJEXT) change.$(OBJEXT) copy.$(OBJEXT) \ +am_ktutil_OBJECTS = add.$(OBJEXT) change.$(OBJEXT) copy.$(OBJEXT) \ get.$(OBJEXT) ktutil.$(OBJEXT) list.$(OBJEXT) purge.$(OBJEXT) \ -remove.$(OBJEXT) srvconvert.$(OBJEXT) srvcreate.$(OBJEXT) +remove.$(OBJEXT) +ktutil_OBJECTS = $(am_ktutil_OBJECTS) ktutil_LDADD = $(LDADD) ktutil_DEPENDENCIES = $(top_builddir)/lib/kadm5/libkadm5clnt.la \ -$(top_builddir)/lib/krb5/libkrb5.la $(top_builddir)/lib/des/libdes.la \ -$(top_builddir)/lib/asn1/libasn1.la $(top_builddir)/lib/sl/libsl.la +$(top_builddir)/lib/krb5/libkrb5.la $(top_builddir)/lib/asn1/libasn1.la \ +$(top_builddir)/lib/sl/libsl.la ktutil_LDFLAGS = -CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CFLAGS = @CFLAGS@ CCLD = $(CC) -LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = $(ktutil_SOURCES) man8dir = $(mandir)/man8 MANS = $(man_MANS) +depcomp = DIST_COMMON = Makefile.am Makefile.in -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -TAR = tar GZIP_ENV = --best SOURCES = $(ktutil_SOURCES) -OBJECTS = $(ktutil_OBJECTS) +OBJECTS = $(am_ktutil_OBJECTS) all: all-redirect .SUFFIXES: -.SUFFIXES: .1 .3 .5 .8 .S .c .cat1 .cat3 .cat5 .cat8 .et .h .lo .o .obj .s .x +.SUFFIXES: .1 .3 .5 .8 .c .cat1 .cat3 .cat5 .cat8 .et .h .lo .o .obj .x $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) $(top_srcdir)/Makefile.am.common $(top_srcdir)/cf/Makefile.am.common cd $(top_srcdir) && $(AUTOMAKE) --foreign admin/Makefile @@ -247,31 +277,20 @@ install-sbinPROGRAMS: $(sbin_PROGRAMS) $(mkinstalldirs) $(DESTDIR)$(sbindir) @list='$(sbin_PROGRAMS)'; for p in $$list; do \ if test -f $$p; then \ - echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ - $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + f="`echo $$p|sed -e 's/$(EXEEXT)$$//' -e '$(transform)' -e 's/$$/$(EXEEXT)/'`"; \ + echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(sbindir)/$$f"; \ + $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(sbindir)/$$f; \ else :; fi; \ done uninstall-sbinPROGRAMS: @$(NORMAL_UNINSTALL) - list='$(sbin_PROGRAMS)'; for p in $$list; do \ - rm -f $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + @list='$(sbin_PROGRAMS)'; for p in $$list; do \ + f="`echo $$p|sed -e 's/$(EXEEXT)$$//' -e '$(transform)' -e 's/$$/$(EXEEXT)/'`"; \ + echo " rm -f $(DESTDIR)$(sbindir)/$$f"; \ + rm -f $(DESTDIR)$(sbindir)/$$f; \ done -.c.o: - $(COMPILE) -c $< - -# FIXME: We should only use cygpath when building on Windows, -# and only if it is available. -.c.obj: - $(COMPILE) -c `cygpath -w $<` - -.s.o: - $(COMPILE) -c $< - -.S.o: - $(COMPILE) -c $< - mostlyclean-compile: -rm -f *.o core *.core -rm -f *.$(OBJEXT) @@ -283,15 +302,6 @@ distclean-compile: maintainer-clean-compile: -.c.lo: - $(LIBTOOL) --mode=compile $(COMPILE) -c $< - -.s.lo: - $(LIBTOOL) --mode=compile $(COMPILE) -c $< - -.S.lo: - $(LIBTOOL) --mode=compile $(COMPILE) -c $< - mostlyclean-libtool: -rm -f *.lo @@ -305,6 +315,12 @@ maintainer-clean-libtool: ktutil$(EXEEXT): $(ktutil_OBJECTS) $(ktutil_DEPENDENCIES) @rm -f ktutil$(EXEEXT) $(LINK) $(ktutil_LDFLAGS) $(ktutil_OBJECTS) $(ktutil_LDADD) $(LIBS) +.c.o: + $(COMPILE) -c $< +.c.obj: + $(COMPILE) -c `cygpath -w $<` +.c.lo: + $(LTCOMPILE) -c -o $@ $< install-man8: $(mkinstalldirs) $(DESTDIR)$(man8dir) @@ -319,6 +335,7 @@ install-man8: else file=$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst"; \ $(INSTALL_DATA) $$file $(DESTDIR)$(man8dir)/$$inst; \ @@ -334,6 +351,7 @@ uninstall-man8: for i in $$list; do \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " rm -f $(DESTDIR)$(man8dir)/$$inst"; \ rm -f $(DESTDIR)$(man8dir)/$$inst; \ @@ -347,23 +365,27 @@ uninstall-man: tags: TAGS -ID: $(HEADERS) $(SOURCES) $(LISP) - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ - here=`pwd` && cd $(srcdir) \ - && mkid -f$$here/ID $$unique $(LISP) + mkid -fID $$unique $(LISP) -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) + || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) mostlyclean-tags: @@ -376,17 +398,16 @@ maintainer-clean-tags: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -subdir = admin - distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ - cp -pr $$/$$file $(distdir)/$$file; \ + cp -pR $$d/$$file $(distdir) \ + || exit 1; \ else \ test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file || :; \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook @@ -415,7 +436,7 @@ uninstall: uninstall-am all-am: Makefile $(PROGRAMS) $(MANS) all-local all-redirect: all-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install + $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install installdirs: $(mkinstalldirs) $(DESTDIR)$(sbindir) $(DESTDIR)$(mandir)/man8 @@ -429,6 +450,7 @@ distclean-generic: -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: + -rm -f Makefile.in mostlyclean-am: mostlyclean-sbinPROGRAMS mostlyclean-compile \ mostlyclean-libtool mostlyclean-tags \ mostlyclean-generic @@ -466,7 +488,7 @@ distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ dvi-am dvi check-local check check-am installcheck-am installcheck \ install-exec-am install-exec install-data-local install-data-am \ install-data install-am install uninstall-am uninstall all-local \ -all-redirect all-am all installdirs mostlyclean-generic \ +all-redirect all-am all install-strip installdirs mostlyclean-generic \ distclean-generic clean-generic maintainer-clean-generic clean \ mostlyclean distclean maintainer-clean @@ -476,7 +498,10 @@ install-suid-programs: for file in $$foo; do \ x=$(DESTDIR)$(bindir)/$$file; \ if chown 0:0 $$x && chmod u+s $$x; then :; else \ - chmod 0 $$x; fi; done + echo "*"; \ + echo "* Failed to install $$x setuid root"; \ + echo "*"; \ + fi; done install-exec-hook: install-suid-programs @@ -488,8 +513,8 @@ install-build-headers:: $(include_HEADERS) $(build_HEADERZ) else file="$$f"; fi; \ if cmp -s $$file $(buildinclude)/$$f 2> /dev/null ; then \ : ; else \ - echo " cp $$file $(buildinclude)/$$f"; \ - cp $$file $(buildinclude)/$$f; \ + echo " $(CP) $$file $(buildinclude)/$$f"; \ + $(CP) $$file $(buildinclude)/$$f; \ fi ; \ done @@ -558,87 +583,8 @@ dist-cat8-mans: dist-hook: dist-cat1-mans dist-cat3-mans dist-cat5-mans dist-cat8-mans -install-cat1-mans: - @ext=1;\ - foo='$(man1_MANS)'; \ - bar='$(man_MANS)'; \ - for i in $$bar; do \ - case $$i in \ - *.1) foo="$$foo $$i";; \ - esac; done; \ - if test "$$foo"; then \ - $(mkinstalldirs) $(DESTDIR)$(cat1dir); \ - for x in $$foo; do \ - f=`echo $$x | sed 's/\.[^.]*$$/.cat1/'`; \ - if test -f "$(srcdir)/$$f"; then \ - b=`echo $$x | sed 's!$(MANRX)!\1!'`; \ - echo "$(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(cat1dir)/$$b.$(CATSUFFIX)";\ - $(INSTALL_DATA) $(srcdir)/$$g $(DESTDIR)$(cat1dir)/$$b.$(CATSUFFIX);\ - fi; \ - done ;\ - fi - -install-cat3-mans: - @ext=3;\ - foo='$(man3_MANS)'; \ - bar='$(man_MANS)'; \ - for i in $$bar; do \ - case $$i in \ - *.3) foo="$$foo $$i";; \ - esac; done; \ - if test "$$foo"; then \ - $(mkinstalldirs) $(DESTDIR)$(cat3dir); \ - for x in $$foo; do \ - f=`echo $$x | sed 's/\.[^.]*$$/.cat3/'`; \ - if test -f "$(srcdir)/$$f"; then \ - b=`echo $$x | sed 's!$(MANRX)!\1!'`; \ - echo "$(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(cat3dir)/$$b.$(CATSUFFIX)";\ - $(INSTALL_DATA) $(srcdir)/$$g $(DESTDIR)$(cat3dir)/$$b.$(CATSUFFIX);\ - fi; \ - done ;\ - fi - -install-cat5-mans: - @ext=5;\ - foo='$(man5_MANS)'; \ - bar='$(man_MANS)'; \ - for i in $$bar; do \ - case $$i in \ - *.5) foo="$$foo $$i";; \ - esac; done; \ - if test "$$foo"; then \ - $(mkinstalldirs) $(DESTDIR)$(cat5dir); \ - for x in $$foo; do \ - f=`echo $$x | sed 's/\.[^.]*$$/.cat5/'`; \ - if test -f "$(srcdir)/$$f"; then \ - b=`echo $$x | sed 's!$(MANRX)!\1!'`; \ - echo "$(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(cat5dir)/$$b.$(CATSUFFIX)";\ - $(INSTALL_DATA) $(srcdir)/$$g $(DESTDIR)$(cat5dir)/$$b.$(CATSUFFIX);\ - fi; \ - done ;\ - fi - -install-cat8-mans: - @ext=8;\ - foo='$(man8_MANS)'; \ - bar='$(man_MANS)'; \ - for i in $$bar; do \ - case $$i in \ - *.8) foo="$$foo $$i";; \ - esac; done; \ - if test "$$foo"; then \ - $(mkinstalldirs) $(DESTDIR)$(cat8dir); \ - for x in $$foo; do \ - f=`echo $$x | sed 's/\.[^.]*$$/.cat8/'`; \ - if test -f "$(srcdir)/$$f"; then \ - b=`echo $$x | sed 's!$(MANRX)!\1!'`; \ - echo "$(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(cat8dir)/$$b.$(CATSUFFIX)";\ - $(INSTALL_DATA) $(srcdir)/$$g $(DESTDIR)$(cat8dir)/$$b.$(CATSUFFIX);\ - fi; \ - done ;\ - fi - -install-cat-mans: install-cat1-mans install-cat3-mans install-cat5-mans install-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) install-data-local: install-cat-mans diff --git a/crypto/heimdal/admin/change.c b/crypto/heimdal/admin/change.c index 3de4f86..128395a 100644 --- a/crypto/heimdal/admin/change.c +++ b/crypto/heimdal/admin/change.c @@ -33,7 +33,7 @@ #include "ktutil_locl.h" -RCSID("$Id: change.c,v 1.1 2000/01/02 04:41:00 assar Exp $"); +RCSID("$Id: change.c,v 1.2 2000/06/03 12:24:03 assar Exp $"); static void change_entry (krb5_context context, krb5_keytab_entry *entry, @@ -158,7 +158,7 @@ kt_change (int argc, char **argv) ret = krb5_kt_start_seq_get(context, keytab, &cursor); if(ret){ - krb5_warn(context, ret, "krb5_kt_start_seq_get"); + krb5_warn(context, ret, "krb5_kt_start_seq_get %s", keytab_string); return 1; } diff --git a/crypto/heimdal/admin/copy.c b/crypto/heimdal/admin/copy.c index d846610..d2b5069 100644 --- a/crypto/heimdal/admin/copy.c +++ b/crypto/heimdal/admin/copy.c @@ -33,17 +33,105 @@ #include "ktutil_locl.h" -RCSID("$Id: copy.c,v 1.1 2000/01/02 04:41:01 assar Exp $"); +RCSID("$Id: copy.c,v 1.5 2000/12/16 00:45:29 joda Exp $"); + + +static krb5_boolean +compare_keyblock(const krb5_keyblock *a, const krb5_keyblock *b) +{ + if(a->keytype != b->keytype || + a->keyvalue.length != b->keyvalue.length || + memcmp(a->keyvalue.data, b->keyvalue.data, a->keyvalue.length) != 0) + return FALSE; + return TRUE; +} + +static int +kt_copy_int (const char *from, const char *to) +{ + krb5_error_code ret; + krb5_keytab src_keytab, dst_keytab; + krb5_kt_cursor cursor; + krb5_keytab_entry entry, dummy; + + ret = krb5_kt_resolve (context, from, &src_keytab); + if (ret) { + krb5_warn (context, ret, "resolving src keytab `%s'", from); + return 0; + } + + ret = krb5_kt_resolve (context, to, &dst_keytab); + if (ret) { + krb5_kt_close (context, src_keytab); + krb5_warn (context, ret, "resolving dst keytab `%s'", to); + return 0; + } + + ret = krb5_kt_start_seq_get (context, src_keytab, &cursor); + if (ret) { + krb5_warn (context, ret, "krb5_kt_start_seq_get %s", keytab_string); + goto fail; + } + + while((ret = krb5_kt_next_entry(context, src_keytab, + &entry, &cursor)) == 0) { + char *name_str; + char *etype_str; + krb5_unparse_name (context, entry.principal, &name_str); + krb5_enctype_to_string(context, entry.keyblock.keytype, &etype_str); + ret = krb5_kt_get_entry(context, dst_keytab, + entry.principal, + entry.vno, + entry.keyblock.keytype, + &dummy); + if(ret == 0) { + /* this entry is already in the new keytab, so no need to + copy it; if the keyblocks are not the same, something + is weird, so complain about that */ + if(!compare_keyblock(&entry.keyblock, &dummy.keyblock)) { + krb5_warnx(context, "entry with different keyvalue " + "already exists for %s, keytype %s, kvno %d", + name_str, etype_str, entry.vno); + } + krb5_kt_free_entry(context, &dummy); + krb5_kt_free_entry (context, &entry); + free(name_str); + free(etype_str); + continue; + } else if(ret != KRB5_KT_NOTFOUND) { + krb5_warn(context, ret, "krb5_kt_get_entry(%s)", name_str); + krb5_kt_free_entry (context, &entry); + free(name_str); + free(etype_str); + break; + } + if (verbose_flag) + fprintf (stderr, "copying %s, keytype %s, kvno %d\n", name_str, + etype_str, entry.vno); + ret = krb5_kt_add_entry (context, dst_keytab, &entry); + krb5_kt_free_entry (context, &entry); + if (ret) { + krb5_warn (context, ret, "krb5_kt_add_entry(%s)", name_str); + free(name_str); + free(etype_str); + break; + } + free(name_str); + free(etype_str); + } + krb5_kt_end_seq_get (context, src_keytab, &cursor); + + fail: + krb5_kt_close (context, src_keytab); + krb5_kt_close (context, dst_keytab); + return 0; +} int kt_copy (int argc, char **argv) { - krb5_error_code ret; int help_flag = 0; int optind = 0; - krb5_keytab src_keytab, dst_keytab; - krb5_kt_cursor cursor; - krb5_keytab_entry entry; struct getargs args[] = { { "help", 'h', arg_flag, NULL} @@ -53,6 +141,7 @@ kt_copy (int argc, char **argv) int i = 0; args[i++].value = &help_flag; + args[i++].value = &verbose_flag; if(getarg(args, num_args, argc, argv, &optind)) { arg_printusage(args, num_args, "ktutil copy", @@ -74,46 +163,83 @@ kt_copy (int argc, char **argv) return 0; } - ret = krb5_kt_resolve (context, argv[0], &src_keytab); - if (ret) { - krb5_warn (context, ret, "resolving src keytab `%s'", argv[0]); - return 0; - } + return kt_copy_int(argv[0], argv[1]); +} - ret = krb5_kt_resolve (context, argv[1], &dst_keytab); - if (ret) { - krb5_kt_close (context, src_keytab); - krb5_warn (context, ret, "resolving dst keytab `%s'", argv[1]); +#ifndef KEYFILE +#define KEYFILE "/etc/srvtab" +#endif + +/* copy to from v4 srvtab, just short for copy */ +static int +conv(int srvconv, int argc, char **argv) +{ + int help_flag = 0; + char *srvtab = KEYFILE; + int optind = 0; + char kt4[1024], kt5[1024]; + + char *name; + + struct getargs args[] = { + { "srvtab", 's', arg_string, NULL}, + { "help", 'h', arg_flag, NULL} + }; + + int num_args = sizeof(args) / sizeof(args[0]); + int i = 0; + + args[i++].value = &srvtab; + args[i++].value = &help_flag; + + if(srvconv) + name = "ktutil srvconvert"; + else + name = "ktutil srvcreate"; + + if(getarg(args, num_args, argc, argv, &optind)){ + arg_printusage(args, num_args, name, ""); + return 1; + } + if(help_flag){ + arg_printusage(args, num_args, name, ""); return 0; } - ret = krb5_kt_start_seq_get (context, src_keytab, &cursor); - if (ret) { - krb5_warn (context, ret, "krb5_kt_start_seq_get"); - goto fail; + argc -= optind; + argv += optind; + + if (argc != 0) { + arg_printusage(args, num_args, name, ""); + return 1; } - while((ret = krb5_kt_next_entry(context, src_keytab, - &entry, &cursor)) == 0) { - ret = krb5_kt_add_entry (context, dst_keytab, &entry); - if (verbose_flag) { - char *name_str; + snprintf(kt4, sizeof(kt4), "krb4:%s", srvtab); - krb5_unparse_name (context, entry.principal, &name_str); - printf ("copying %s\n", name_str); - free (name_str); + if(srvconv) { + if(keytab_string != NULL) + return kt_copy_int(kt4, keytab_string); + else { + krb5_kt_default_name(context, kt5, sizeof(kt5)); + return kt_copy_int(kt4, kt5); } + } else { + if(keytab_string != NULL) + return kt_copy_int(keytab_string, kt4); - krb5_kt_free_entry (context, &entry); - if (ret) { - krb5_warn (context, ret, "krb5_kt_add_entry"); - break; - } + krb5_kt_default_name(context, kt5, sizeof(kt5)); + return kt_copy_int(kt5, kt4); } - krb5_kt_end_seq_get (context, src_keytab, &cursor); +} -fail: - krb5_kt_close (context, src_keytab); - krb5_kt_close (context, dst_keytab); - return 0; +int +srvconv(int argc, char **argv) +{ + return conv(1, argc, argv); +} + +int +srvcreate(int argc, char **argv) +{ + return conv(0, argc, argv); } diff --git a/crypto/heimdal/admin/get.c b/crypto/heimdal/admin/get.c index 143ffa2..5df72a1 100644 --- a/crypto/heimdal/admin/get.c +++ b/crypto/heimdal/admin/get.c @@ -33,7 +33,7 @@ #include "ktutil_locl.h" -RCSID("$Id: get.c,v 1.15 2000/01/02 04:41:01 assar Exp $"); +RCSID("$Id: get.c,v 1.16 2000/12/31 02:51:43 assar Exp $"); int kt_get(int argc, char **argv) @@ -131,13 +131,26 @@ kt_get(int argc, char **argv) if(ret == 0) created++; else if(ret != KADM5_DUP) { + krb5_warn(context, ret, "kadm5_create_principal(%s)", argv[i]); krb5_free_principal(context, princ_ent); continue; } ret = kadm5_randkey_principal(kadm_handle, princ_ent, &keys, &n_keys); + if (ret) { + krb5_warn(context, ret, "kadm5_randkey_principal(%s)", argv[i]); + krb5_free_principal(context, princ_ent); + continue; + } ret = kadm5_get_principal(kadm_handle, princ_ent, &princ, KADM5_PRINCIPAL | KADM5_KVNO | KADM5_ATTRIBUTES); + if (ret) { + krb5_warn(context, ret, "kadm5_get_principal(%s)", argv[i]); + for (j = 0; j < n_keys; j++) + krb5_free_keyblock_contents(context, &keys[j]); + krb5_free_principal(context, princ_ent); + continue; + } princ.attributes &= (~KRB5_KDB_DISALLOW_ALL_TIX); mask = KADM5_ATTRIBUTES; if(created) { @@ -145,6 +158,13 @@ kt_get(int argc, char **argv) mask |= KADM5_KVNO; } ret = kadm5_modify_principal(kadm_handle, &princ, mask); + if (ret) { + krb5_warn(context, ret, "kadm5_modify_principal(%s)", argv[i]); + for (j = 0; j < n_keys; j++) + krb5_free_keyblock_contents(context, &keys[j]); + krb5_free_principal(context, princ_ent); + continue; + } for(j = 0; j < n_keys; j++) { entry.principal = princ_ent; entry.vno = princ.kvno; diff --git a/crypto/heimdal/admin/ktutil.8 b/crypto/heimdal/admin/ktutil.8 index b70fc93..cb86fa5 100644 --- a/crypto/heimdal/admin/ktutil.8 +++ b/crypto/heimdal/admin/ktutil.8 @@ -1,22 +1,23 @@ -.\" $Id: ktutil.8,v 1.6 2000/01/02 05:07:50 assar Exp $ +.\" $Id: ktutil.8,v 1.9 2000/12/16 00:58:49 joda Exp $ .\" -.Dd Aug 27, 1997 +.Dd December 16, 2000 .Dt KTUTIL 8 .Os HEIMDAL .Sh NAME .Nm ktutil -.Ar command .Nd -handle a keytab +manage Kerberos keytabs .Sh SYNOPSIS .Nm -.Op Fl k Ar keytab -.Op Fl -keytab= Ns Ar keytab -.Op Fl v +.Oo Fl k Ar keytab \*(Ba Xo +.Fl -keytab= Ns Ar keytab +.Xc +.Oc +.Op Fl v | Fl -verbose .Op Fl -version -.Op Fl h -.Op Fl -help -.Ar command +.Op Fl h | Fl -help +.Ar command +.Op Ar args .Sh DESCRIPTION .Nm is a program for managing keytabs. @@ -43,7 +44,7 @@ prompted for. .Op Fl r Ar realm .Op Fl -realm= Ns Ar realm .Op Fl -a Ar host -.Op Fl -admin-server= Ns Ar hots +.Op Fl -admin-server= Ns Ar host .Op Fl -s Ar port .Op Fl -server-port= Ns Ar port .Xc @@ -74,7 +75,10 @@ to Get a key for .Nm principal and store it in a keytab. -.It list +.It list Xo +.Op Fl -keys +.Op Fl -timestamp +.Xc List the keys stored in the keytab. .It remove Xo .Op Fl p Ar principal @@ -94,8 +98,8 @@ removes keys of any type. .Xc Removes all old entries (for which there is a newer version) that are older than -.Ar age -seconds. +.Ar age +(default one week). .It srvconvert .It srv2keytab Xo .Op Fl s Ar srvtab @@ -104,7 +108,13 @@ seconds. Converts the version 4 srvtab in .Ar srvtab to a version 5 keytab and stores it in -.Ar keytab . +.Ar keytab . +Identical to: +.Bd -ragged -offset indent +.Li ktutil copy +.Li krb4: Ns Ar srvtab +.Ar keytab +.Ed .It srvcreate .It key2srvtab Xo .Op Fl s Ar srvtab @@ -114,6 +124,12 @@ Converts the version 5 keytab in .Ar keytab to a version 4 srvtab and stores it in .Ar srvtab . +Identical to: +.Bd -ragged -offset indent +.Li ktutil copy +.Ar keytab +.Li krb4: Ns Ar srvtab +.Ed .El .Sh SEE ALSO .Xr kadmin 8 diff --git a/crypto/heimdal/admin/ktutil.c b/crypto/heimdal/admin/ktutil.c index 205bd89..35ca1c9 100644 --- a/crypto/heimdal/admin/ktutil.c +++ b/crypto/heimdal/admin/ktutil.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan + * Copyright (c) 1997 - 2001 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -32,14 +32,17 @@ */ #include "ktutil_locl.h" +#include <err.h> -RCSID("$Id: ktutil.c,v 1.26 2000/02/07 04:29:25 assar Exp $"); +RCSID("$Id: ktutil.c,v 1.30 2001/01/25 12:44:37 assar Exp $"); static int help_flag; static int version_flag; int verbose_flag; char *keytab_string; +static char keytab_buf[256]; + static int help(int argc, char **argv); static SL_cmd cmds[] = { @@ -127,7 +130,9 @@ main(int argc, char **argv) int optind = 0; krb5_error_code ret; set_progname(argv[0]); - krb5_init_context(&context); + ret = krb5_init_context(&context); + if (ret) + errx (1, "krb5_init_context failed: %d", ret); if(getarg(args, num_args, argc, argv, &optind)) usage(1); if(help_flag) @@ -143,6 +148,10 @@ main(int argc, char **argv) if(keytab_string) { ret = krb5_kt_resolve(context, keytab_string, &keytab); } else { + if(krb5_kt_default_name (context, keytab_buf, sizeof(keytab_buf))) + strlcpy (keytab_buf, "unknown", sizeof(keytab_buf)); + keytab_string = keytab_buf; + ret = krb5_kt_default(context, &keytab); } if(ret) diff --git a/crypto/heimdal/admin/list.c b/crypto/heimdal/admin/list.c index 1924a21..04c1d78 100644 --- a/crypto/heimdal/admin/list.c +++ b/crypto/heimdal/admin/list.c @@ -33,7 +33,28 @@ #include "ktutil_locl.h" -RCSID("$Id: list.c,v 1.1 2000/01/02 04:41:02 assar Exp $"); +RCSID("$Id: list.c,v 1.3 2000/06/29 08:21:40 joda Exp $"); + +static int help_flag; +static int list_keys; +static int list_timestamp; + +static struct getargs args[] = { + { "help", 'h', arg_flag, &help_flag }, + { "keys", 0, arg_flag, &list_keys, "show key value" }, + { "timestamp", 0, arg_flag, &list_timestamp, "show timestamp" }, +}; + +static int num_args = sizeof(args) / sizeof(args[0]); + +struct key_info { + char *version; + char *etype; + char *principal; + char *timestamp; + char *key; + struct key_info *next; +}; int kt_list(int argc, char **argv) @@ -41,43 +62,102 @@ kt_list(int argc, char **argv) krb5_error_code ret; krb5_kt_cursor cursor; krb5_keytab_entry entry; + int optind = 0; + struct key_info *ki, **kie = &ki, *kp; + + int max_version = sizeof("Vno") - 1; + int max_etype = sizeof("Type") - 1; + int max_principal = sizeof("Principal") - 1; + int max_timestamp = sizeof("Date") - 1; + int max_key = sizeof("Key") - 1; + + if(verbose_flag) + list_timestamp = 1; + + if(getarg(args, num_args, argc, argv, &optind)){ + arg_printusage(args, num_args, "ktutil list", ""); + return 1; + } + if(help_flag){ + arg_printusage(args, num_args, "ktutil list", ""); + return 0; + } ret = krb5_kt_start_seq_get(context, keytab, &cursor); if(ret){ - krb5_warn(context, ret, "krb5_kt_start_seq_get"); + krb5_warn(context, ret, "krb5_kt_start_seq_get %s", keytab_string); return 1; } - printf("%s", "Version"); - printf(" "); - printf("%-15s", "Type"); - printf(" "); - printf("%s", "Principal"); - printf("\n"); while((ret = krb5_kt_next_entry(context, keytab, &entry, &cursor)) == 0){ - char *p; - printf(" %3d ", entry.vno); - printf(" "); - ret = krb5_enctype_to_string(context, entry.keyblock.keytype, &p); +#define CHECK_MAX(F) if(max_##F < strlen(kp->F)) max_##F = strlen(kp->F) + + kp = malloc(sizeof(*kp)); + + asprintf(&kp->version, "%d", entry.vno); + CHECK_MAX(version); + ret = krb5_enctype_to_string(context, + entry.keyblock.keytype, &kp->etype); if (ret != 0) - asprintf(&p, "unknown (%d)", entry.keyblock.keytype); - printf("%-15s", p); - free(p); - printf(" "); - krb5_unparse_name(context, entry.principal, &p); - printf("%s ", p); - free(p); - printf("\n"); - if (verbose_flag) { + asprintf(&kp->etype, "unknown (%d)", entry.keyblock.keytype); + CHECK_MAX(etype); + krb5_unparse_name_short(context, entry.principal, &kp->principal); + CHECK_MAX(principal); + if (list_timestamp) { char tstamp[256]; - struct tm *tm; - time_t ts = entry.timestamp; - tm = gmtime (&ts); - strftime (tstamp, sizeof(tstamp), "%Y-%m-%d %H:%M:%S UTC", tm); - printf(" Timestamp: %s\n", tstamp); + krb5_format_time(context, entry.timestamp, + tstamp, sizeof(tstamp), FALSE); + + kp->timestamp = strdup(tstamp); + CHECK_MAX(timestamp); } + if(list_keys) { + int i; + kp->key = malloc(2 * entry.keyblock.keyvalue.length + 1); + for(i = 0; i < entry.keyblock.keyvalue.length; i++) + snprintf(kp->key + 2 * i, 3, "%02x", + ((unsigned char*)entry.keyblock.keyvalue.data)[i]); + CHECK_MAX(key); + } + kp->next = NULL; + *kie = kp; + kie = &kp->next; krb5_kt_free_entry(context, &entry); } ret = krb5_kt_end_seq_get(context, keytab, &cursor); + + printf("%-*s %-*s %-*s", max_version, "Vno", + max_etype, "Type", + max_principal, "Principal"); + if(list_timestamp) + printf(" %-*s", max_timestamp, "Date"); + if(list_keys) + printf(" %s", "Key"); + printf("\n"); + + for(kp = ki; kp; ) { + printf("%*s %-*s %-*s", max_version, kp->version, + max_etype, kp->etype, + max_principal, kp->principal); + if(list_timestamp) + printf(" %-*s", max_timestamp, kp->timestamp); + if(list_keys) + printf(" %s", kp->key); + printf("\n"); + + /* free entries */ + free(kp->version); + free(kp->etype); + free(kp->principal); + if(list_timestamp) + free(kp->timestamp); + if(list_keys) { + memset(kp->key, 0, strlen(kp->key)); + free(kp->key); + } + ki = kp; + kp = kp->next; + free(ki); + } return 0; } diff --git a/crypto/heimdal/admin/purge.c b/crypto/heimdal/admin/purge.c index 3e262c5..5e22de5 100644 --- a/crypto/heimdal/admin/purge.c +++ b/crypto/heimdal/admin/purge.c @@ -33,7 +33,7 @@ #include "ktutil_locl.h" -RCSID("$Id: purge.c,v 1.1 2000/01/02 05:06:50 assar Exp $"); +RCSID("$Id: purge.c,v 1.3 2000/06/29 08:31:47 joda Exp $"); /* * keep track of the highest version for every principal. @@ -101,9 +101,10 @@ kt_purge(int argc, char **argv) krb5_kt_cursor cursor; krb5_keytab_entry entry; int help_flag = 0; - int age = 7 * 24 * 60 * 60; + char *age_str = "1 week"; + int age; struct getargs args[] = { - { "age", 0, arg_integer, NULL, "age to retire" }, + { "age", 0, arg_string, NULL, "age to retire" }, { "help", 'h', arg_flag, NULL } }; int num_args = sizeof(args) / sizeof(args[0]); @@ -112,7 +113,7 @@ kt_purge(int argc, char **argv) struct e *head = NULL; time_t judgement_day; - args[i++].value = &age; + args[i++].value = &age_str; args[i++].value = &help_flag; if(getarg(args, num_args, argc, argv, &optind)) { @@ -124,9 +125,15 @@ kt_purge(int argc, char **argv) return 0; } + age = parse_time(age_str, "s"); + if(age < 0) { + krb5_warnx(context, "unparasable time `%s'", age_str); + return 0; + } + ret = krb5_kt_start_seq_get(context, keytab, &cursor); if(ret){ - krb5_warn(context, ret, "krb5_kt_start_seq_get"); + krb5_warn(context, ret, "krb5_kt_start_seq_get %s", keytab_string); return 1; } @@ -140,7 +147,7 @@ kt_purge(int argc, char **argv) ret = krb5_kt_start_seq_get(context, keytab, &cursor); if(ret){ - krb5_warn(context, ret, "krb5_kt_start_seq_get"); + krb5_warn(context, ret, "krb5_kt_start_seq_get, %s", keytab_string); return 1; } |