From 285a573d111fb34d5aa3620bb695c74f69cac0a9 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 15 Sep 2011 17:10:49 +0200 Subject: [PATCH] Fix kadm5_free_policy_ent use against Heimdal. --- CHANGELOG | 6 ++++++ configure.ac | 18 +++++++++++++++++- pam_krb5_migrate.c | 5 +++++ pam_krb5_migrate.h | 1 + 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 7aadb47..e1b5b4a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,9 @@ +Version 0.0.10 15 Sep 2011 + - cope with kadm5_free_policy_ent having a different number of arguments in + Heimdal. + - allow overriding KRB5CONFIG environment variable, useful when + there are multiple Kerberos versions on the system. + Version 0.0.9 30 Jul 2009 - fix syntax errors in man pages. - link against com_err to avoid unresolved symbols diff --git a/configure.ac b/configure.ac index a06be37..2d5225d 100644 --- a/configure.ac +++ b/configure.ac @@ -1,11 +1,27 @@ AC_INIT(pam-krb5-migrate, 0.0.9, [jelmer@samba.org]) AC_PROG_CC -AC_PATH_PROGS(KRB5CONFIG, krb5-config krb5-config.heimdal, no) +AC_ARG_VAR(KRB5CONFIG, [Path to krb5-config script]) +AC_PATH_PROGS(KRB5CONFIG, $ac_cv_env_KRB5CONFIG_value, krb5-config krb5-config.heimdal) AC_CHECK_LIB(pam, pam_get_item, [], [AC_MSG_ERROR([pam not found])]) save_LIBS="$LIBS" +save_CFLAGS="$CFLAGS" LIBS="$LIBS `$ac_cv_path_KRB5CONFIG --libs kadm-client`" +CFLAGS="$CFLAGS `$ac_cv_path_KRB5CONFIG --cflags kadm-client`" AC_CHECK_FUNCS(kadm5_get_policy) PKG_CHECK_MODULES(COM_ERR, com_err) +AC_COMPILE_CHECK([number of arguments to kadm5_free_policy_ent], +[ +#include +#include +#include +#include +], +[ kadm5_free_policy_ent(NULL); ], +[ +AC_MSG_RESULT(1) +AC_DEFINE(KADM5_FREE_POLICY_ENT_1_ARG)], +[ AC_MSG_RESULT(2) ] +) LIBS="$save_LIBS" AC_CONFIG_FILES([Makefile.settings]) AC_OUTPUT diff --git a/pam_krb5_migrate.c b/pam_krb5_migrate.c index cbe1b2d..ae5126a 100644 --- a/pam_krb5_migrate.c +++ b/pam_krb5_migrate.c @@ -4,6 +4,7 @@ database. Copyright (C) Steve Langasek 2000-2001 + Copyright (C) Jelmer Vernooij 2006 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -389,7 +390,11 @@ int pam_sm_authenticate(pam_handle_t *pamh, int flags, } newprinc.policy = "default"; mask |= KADM5_POLICY; +#if KADM5_FREE_POLICY_ENT_1_ARG + (void) kadm5_free_policy_ent(&defpol); +#else (void) kadm5_free_policy_ent(handle, &defpol); +#endif } else { if (debug) { _log_err(LOG_DEBUG, pamh, diff --git a/pam_krb5_migrate.h b/pam_krb5_migrate.h index f35ba17..2738a38 100644 --- a/pam_krb5_migrate.h +++ b/pam_krb5_migrate.h @@ -5,6 +5,7 @@ database. Copyright (C) Steve Langasek 2000-2001 + Copyright (C) Jelmer Vernooij 2006 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by -- 2.34.1