diff --git a/src/aklog/klog.c b/src/aklog/klog.c index 146d93927e..8acb932426 100644 --- a/src/aklog/klog.c +++ b/src/aklog/klog.c @@ -313,8 +313,16 @@ klog_prompter(krb5_context context, if ((types = krb5_get_prompt_types(context))) #endif for (i = 0; i < num_prompts; ++i) { -#if !defined(USING_HEIMDAL) && defined(HAVE_KRB5_GET_PROMPT_TYPES) +#if !defined(USING_HEIMDAL) +#if defined(HAVE_KRB5_GET_PROMPT_TYPES) type = types[i]; +#elif defined(HAVE_KRB5_PROMPT_TYPE) + type = prompts[i].type; +#else + /* AIX 5.3 krb5_get_prompt_types is missing. Um... */ + type = ((i == 1)&&(num_prompts == 2)) ? + KRB5_PROMPT_TYPE_NEW_PASSWORD_AGAIN : KRB5_PROMPT_TYPE_PASSWORD; +#endif #else type = prompts[i].type; #endif diff --git a/src/cf/kerberos.m4 b/src/cf/kerberos.m4 index 9bae17af85..b9fa573702 100644 --- a/src/cf/kerberos.m4 +++ b/src/cf/kerberos.m4 @@ -91,12 +91,26 @@ ac_cv_krb5_creds_session_exists=yes, ac_cv_krb5_creds_session_exists=no)]) AC_MSG_RESULT($ac_cv_krb5_creds_session_exists) +AC_MSG_CHECKING(for krb5_prompt.type existence) +AC_CACHE_VAL(ac_cv_krb5_prompt_type_exists, +[ +AC_TRY_COMPILE( +[#include ], +[krb5_prompt _p; +printf("%x\n", _p.type);], +ac_cv_krb5_prompt_type_exists=yes, +ac_cv_krb5_prompt_type_exists=no)]) +AC_MSG_RESULT($ac_cv_krb5_prompt_type_exists) + if test "x$ac_cv_krb5_creds_keyblock_exists" = "xyes"; then AC_DEFINE(HAVE_KRB5_CREDS_KEYBLOCK, 1, [define if krb5_creds has keyblock]) fi if test "x$ac_cv_krb5_creds_session_exists" = "xyes"; then AC_DEFINE(HAVE_KRB5_CREDS_SESSION, 1, [define if krb5_creds has session]) fi +if test "x$ac_cv_krb5_prompt_type_exists" = "xyes"; then + AC_DEFINE(HAVE_KRB5_PROMPT_TYPE, 1, [define if krb5_prompt has type]) +fi dnl AC_CHECK_MEMBERS([krb5_creds.keyblock, krb5_creds.session],,, [#include ]) CPPFLAGS="$save_CPPFLAGS"