summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Yu <tlyu@mit.edu>2014-02-25 17:35:35 -0500
committerTom Yu <tlyu@mit.edu>2014-02-26 12:44:43 -0500
commit8df1965d1ccdbcb8d74a3e68ad35d7579db9ac44 (patch)
tree59b3c47000f2f998c52aea8c53c305d282ef4acb
parent1121a7fa68f44167471dc94cf5795a838587e84c (diff)
downloadkrb5-8df1965d1ccdbcb8d74a3e68ad35d7579db9ac44.tar.gz
krb5-8df1965d1ccdbcb8d74a3e68ad35d7579db9ac44.tar.xz
krb5-8df1965d1ccdbcb8d74a3e68ad35d7579db9ac44.zip
Avoid duplicate "/etc/krb5.conf" in profile path
If configure gets run with --sysconfdir=/etc, "/etc/krb5.conf" shows up twice in the profile path, which causes its contents to be read twice. This can cause some confusing and possibly problematic behavior. Add some logic to configure.in to avoid adding the duplicate entry for "/etc/krb5.conf". Reported independently by Denis Vlasenko and Fredrik Tolf. ticket: 3277 tags: pullup target_version: 1.12.2
-rw-r--r--src/configure.in9
-rw-r--r--src/include/Makefile.in4
-rw-r--r--src/include/osconf.hin4
3 files changed, 14 insertions, 3 deletions
diff --git a/src/configure.in b/src/configure.in
index c2eaf78d83..7dded28f22 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -6,6 +6,15 @@ if test x"$runstatedir" == x; then
fi
AC_SUBST(runstatedir)
+# Don't make duplicate profile path entries for /etc/krb5.conf if
+# $sysconfdir is /etc
+if test "$sysconfdir" == /etc; then
+ SYSCONFCONF=""
+else
+ SYSCONFCONF=":${sysconfdir}/krb5.conf"
+fi
+AC_SUBST(SYSCONFCONF)
+
CONFIG_RULES
KRB5_VERSION=K5_VERSION
AC_SUBST(KRB5_VERSION)
diff --git a/src/include/Makefile.in b/src/include/Makefile.in
index f83ff4eaa7..b160ea4f58 100644
--- a/src/include/Makefile.in
+++ b/src/include/Makefile.in
@@ -57,6 +57,7 @@ RUNSTATEDIR = @runstatedir@
BINDIR = @bindir@
SBINDIR = @sbindir@
LIBDIR = @libdir@
+SYSCONFCONF = @SYSCONFCONF@
PROCESS_REPLACE = -e "s+@KRB5RCTMPDIR+$(KRB5RCTMPDIR)+" \
-e "s+@PREFIX+$(INSTALL_PREFIX)+" \
@@ -69,7 +70,8 @@ PROCESS_REPLACE = -e "s+@KRB5RCTMPDIR+$(KRB5RCTMPDIR)+" \
-e 's+@LOCALSTATEDIR+$(LOCALSTATEDIR)+' \
-e 's+@RUNSTATEDIR+$(RUNSTATEDIR)+' \
-e 's+@SYSCONFDIR+$(SYSCONFDIR)+' \
- -e 's+@DYNOBJEXT+$(DYNOBJEXT)+'
+ -e 's+@DYNOBJEXT+$(DYNOBJEXT)+' \
+ -e 's+@SYSCONFCONF+$(SYSCONFCONF)+'
OSCONFSRC = $(srcdir)/osconf.hin
diff --git a/src/include/osconf.hin b/src/include/osconf.hin
index 871503ab1b..62aceeaa46 100644
--- a/src/include/osconf.hin
+++ b/src/include/osconf.hin
@@ -44,13 +44,13 @@
#define DEFAULT_PROFILE_FILENAME "krb5.ini"
#else /* !_WINDOWS */
#if TARGET_OS_MAC
-#define DEFAULT_SECURE_PROFILE_PATH "/Library/Preferences/edu.mit.Kerberos:/etc/krb5.conf:@SYSCONFDIR/krb5.conf"
+#define DEFAULT_SECURE_PROFILE_PATH "/Library/Preferences/edu.mit.Kerberos:/etc/krb5.conf@SYSCONFCONF"
#define DEFAULT_PROFILE_PATH ("~/Library/Preferences/edu.mit.Kerberos" ":" DEFAULT_SECURE_PROFILE_PATH)
#define KRB5_PLUGIN_BUNDLE_DIR "/System/Library/KerberosPlugins/KerberosFrameworkPlugins"
#define KDB5_PLUGIN_BUNDLE_DIR "/System/Library/KerberosPlugins/KerberosDatabasePlugins"
#define KRB5_AUTHDATA_PLUGIN_BUNDLE_DIR "/System/Library/KerberosPlugins/KerberosAuthDataPlugins"
#else
-#define DEFAULT_SECURE_PROFILE_PATH "/etc/krb5.conf:@SYSCONFDIR/krb5.conf"
+#define DEFAULT_SECURE_PROFILE_PATH "/etc/krb5.conf@SYSCONFCONF"
#define DEFAULT_PROFILE_PATH DEFAULT_SECURE_PROFILE_PATH
#endif
#endif /* _WINDOWS */