Files
heimdal/kuser/Makefile.am
Taylor R Campbell ad23636db8 Add a test for potential DNS leaks via symbol interposition.
We build variants of kinit and test_acquire_cred that define their
own symbols rk_dns_lookup, gethostbyname, gethostbyname2, and
getaddrinfo to print a message and abort.  For getaddrinfo, we abort
only if the caller failed to specify AI_NUMERICHOST; otherwise we use
dlsym(RTLD_NEXT, "getaddrinfo") instead.

The new test tests/gss/check-nodns is like tests/gss/check-basic, but
uses kinit_auditdns and test_acquire_cred_auditdns to verify that no
DNS resolution happens.

This test should work and be effective on ELF platforms where the
getaddrinfo function is implemented by the symbol `getaddrinfo'.  On
non-ELF platforms it may not be effective -- and on platforms where
the getaddrinfo function is implemented by another symbol (like
`__getaddrinfo50') it may not work, but we can cross that bridge when
we come to it.

Verified manually that the test fails, with the expected error
message and abort, without `block_dns = yes' in krb5-nodns.conf.  No
automatic test of the mechanism for now because it might not work on
some platforms.

XXX check-nodns.in is copypasta of check-basic.in, should factor out
the common parts so they don't get out of sync.
2024-01-08 10:22:02 -06:00

106 lines
2.5 KiB
Makefile

# $Id$
include $(top_srcdir)/Makefile.am.common
if !NO_AFS
afs_lib = $(LIB_kafs)
endif
AM_CPPFLAGS += -I$(srcdir)/../lib/krb5 \
-I$(srcdir)/../lib/gssapi \
$(INCLUDE_libintl) \
-DHEIMDAL_LOCALEDIR='"$(localedir)"'
man_MANS = \
kinit.1 \
klist.1 \
kdestroy.1 \
kswitch.1 \
kdigest.8 \
kgetcred.1 \
kimpersonate.8 \
kx509.1
bin_PROGRAMS = kinit kdestroy kgetcred heimtools
libexec_PROGRAMS = kdigest kimpersonate
noinst_PROGRAMS = kverify kdecode_ticket generate-requests
# sync with kinit_auditdns_LDADD in appl/test/Makefile.am
kinit_LDADD = \
$(afs_lib) \
$(top_builddir)/lib/krb5/libkrb5.la \
$(top_builddir)/lib/gssapi/libgssapi.la \
$(top_builddir)/lib/gss_preauth/libgss_preauth.la \
$(top_builddir)/lib/ntlm/libheimntlm.la \
$(LIB_hcrypto) \
$(top_builddir)/lib/asn1/libasn1.la \
$(LIB_libintl) \
$(LIB_roken)
kdestroy_LDADD = $(kinit_LDADD)
kimpersonate_LDADD = $(kinit_LDADD)
LIB_hx509 = ../lib/hx509/libhx509.la
heimtools_LDADD = \
$(top_builddir)/lib/sl/libsl.la \
$(kinit_LDADD) \
$(LIB_readline) \
$(LIB_heimbase) \
$(LIB_hx509)
dist_heimtools_SOURCES = heimtools.c klist.c kx509.c kswitch.c copy_cred_cache.c
nodist_heimtools_SOURCES = heimtools-commands.c
$(heimtools_OBJECTS): heimtools-commands.h
dist_kdigest_SOURCES = kdigest.c
nodist_kdigest_SOURCES = kdigest-commands.c
kdigest_LDADD = \
$(top_builddir)/lib/ntlm/libheimntlm.la \
$(top_builddir)/lib/krb5/libkrb5.la \
$(LIB_hcrypto) \
$(top_builddir)/lib/asn1/libasn1.la \
$(top_builddir)/lib/sl/libsl.la \
$(LIB_roken)
$(kdigest_OBJECTS): kdigest-commands.h
CLEANFILES = \
kdigest-commands.h kdigest-commands.c \
heimtools-commands.h heimtools-commands.c
kdigest-commands.c kdigest-commands.h: kdigest-commands.in
$(SLC) $(srcdir)/kdigest-commands.in
heimtools-commands.c heimtools-commands.h: heimtools-commands.in
$(SLC) $(srcdir)/heimtools-commands.in
LDADD = \
$(top_builddir)/lib/krb5/libkrb5.la \
$(LIB_hcrypto) \
$(top_builddir)/lib/asn1/libasn1.la \
$(LIB_roken)
EXTRA_DIST = NTMakefile $(man_MANS) \
heimtools-version.rc \
kcpytkt.c \
kdeltkt.c \
kvno.c \
kdestroy-version.rc \
kdigest-version.rc \
kgetcred-version.rc \
kimpersonate-version.rc \
kinit-version.rc \
kuser_locl.h heimtools-commands.in kdigest-commands.in copy_cred_cache.1
# make sure install-exec-hook doesn't have any commands in Makefile.am.common
install-exec-hook:
(cd $(DESTDIR)$(bindir) && rm -f klist && $(LN_S) heimtools klist)
(cd $(DESTDIR)$(bindir) && rm -f kx509 && $(LN_S) heimtools kx509)
(cd $(DESTDIR)$(bindir) && rm -f kswitch && $(LN_S) heimtools kswitch)