fix compatiblity with heimdal : * fix bashism '==' * test libkrb5 instead of krb5-private.h for _krb5_principal2principalname * include even if HAVE_HEIMDAL_KERBEROS for krb5_gss_register_acceptor_identity * initialize PrincipalName *pn --- a/configure +++ b/configure @@ -2963,7 +2963,7 @@ fi ac_krb5_solaris="`$krb5confpath --version 2>/dev/null | grep -i solaris`" ac_krb5_heimdal="`$krb5confpath --version 2>/dev/null | grep -i heimdal`" - if test "x$ac_krb5_solaris" == x ; then + if test "x$ac_krb5_solaris" = x ; then ac_krb5_cflags=`$krb5confpath --cflags krb5 2> /dev/null ` if test $? != 0; then krb5fail=t @@ -3455,29 +3455,6 @@ done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _krb5_principal2principalname in krb5-private.h" >&5 -$as_echo_n "checking for _krb5_principal2principalname in krb5-private.h... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "_krb5_principal2principalname" >/dev/null 2>&1; then : - -$as_echo "#define HAVE_KRB5_PRINCIPAL2PRINCIPAL 1" >>confdefs.h - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f conftest* - - -ac_com_error_message=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -4118,6 +4095,57 @@ fi fi +if test "x$ac_krb5_heimdal" != x ; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _krb5_principal2principalname in -lkrb5" >&5 +printf %s "checking for _krb5_principal2principalname in -lkrb5... " >&6; } +if test ${ac_cv_lib_krb5__krb5_principal2principalname+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS +LIBS="-lkrb5 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char _krb5_principal2principalname (void); +int +main (void) +{ +return _krb5_principal2principalname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_krb5__krb5_principal2principalname=yes +else case e in #( + e) ac_cv_lib_krb5__krb5_principal2principalname=no ;; +esac +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5__krb5_principal2principalname" >&5 +printf "%s\n" "$ac_cv_lib_krb5__krb5_principal2principalname" >&6; } +if test "x$ac_cv_lib_krb5__krb5_principal2principalname" = xyes +then : + +printf "%s\n" "#define HAVE_KRB5_PRINCIPAL2PRINCIPAL 1" >>confdefs.h + +fi +fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for krb5_get_err_text in -lkrb5" >&5 $as_echo_n "checking for krb5_get_err_text in -lkrb5... " >&6; } if ${ac_cv_lib_krb5_krb5_get_err_text+:} false; then : --- a/mod_gss.h.in +++ b/mod_gss.h.in @@ -204,7 +204,6 @@ #include #endif /* HAVE_GSSAPI_H */ -#ifndef HAVE_HEIMDAL_KERBEROS #ifdef HAVE_GSSAPI_GSSAPI_EXT_H #include #endif /* HAVE_GSSAPI_GSSAPI_EXT_H */ @@ -214,7 +213,6 @@ #ifdef HAVE_GSSAPI_GSSAPI_GENERIC_H #include #endif /* HAVE_GSSAPI_GSSAPI_GENERIC_H */ -#endif /* HAVE_HEIMDAL_KERBEROS */ #ifndef HAVE_GSS_INT32 #define gss_int32 int32_t --- a/mod_auth_gss.c.in +++ b/mod_auth_gss.c.in @@ -109,7 +109,7 @@ krb5_principal p; krb5_error_code kerr; #ifdef HAVE_HEIMDAL_KERBEROS - PrincipalName *pn; + PrincipalName *pn = NULL; #endif char *princ_name; @@ -179,7 +179,7 @@ krb5_principal p; krb5_error_code kerr; #ifdef HAVE_HEIMDAL_KERBEROS - PrincipalName *pn; + PrincipalName *pn = NULL; #endif char *princ_name; @@ -251,7 +251,7 @@ krb5_principal p; krb5_error_code kerr; #ifdef HAVE_HEIMDAL_KERBEROS - PrincipalName *pn; + PrincipalName *pn = NULL; #endif char *princ_name;