--- autofs-5.0.5/modules/cyrus-sasl.c~ 2010-03-03 01:38:41.582901786 +0100 +++ autofs-5.0.5/modules/cyrus-sasl.c 2010-03-03 01:41:32.313704755 +0100 @@ -66,6 +66,15 @@ #endif #endif +/** + * The type of a principal is different for MIT Krb5 and Heimdal. + * These macros are provided by Heimdal, and introduced here for MIT. + */ +#ifndef krb5_realm_length +#define krb5_realm_length(r) ((r).length) +#define krb5_realm_data(r) ((r).data) +#endif + /* * Once a krb5 credentials cache is setup, we need to set the KRB5CCNAME * environment variable so that the library knows where to find it. @@ -452,11 +452,11 @@ /* setup a principal for the ticket granting service */ ret = krb5_build_principal_ext(ctxt->krb5ctxt, &tgs_princ, - krb5_princ_realm(ctxt->krb5ctxt, krb5_client_princ)->length, - krb5_princ_realm(ctxt->krb5ctxt, krb5_client_princ)->data, + krb5_realm_length(*krb5_principal_get_realm(ctxt->krb5ctxt, krb5_client_princ)), + krb5_realm_data(*krb5_principal_get_realm(ctxt->krb5ctxt, krb5_client_princ)), strlen(KRB5_TGS_NAME), KRB5_TGS_NAME, - krb5_princ_realm(ctxt->krb5ctxt, krb5_client_princ)->length, - krb5_princ_realm(ctxt->krb5ctxt, krb5_client_princ)->data, + krb5_realm_length(*krb5_principal_get_realm(ctxt->krb5ctxt, krb5_client_princ)), + krb5_realm_data(*krb5_principal_get_realm(ctxt->krb5ctxt, krb5_client_princ)), 0); if (ret) { error(logopt, --- autofs-5.0.5/modules/Makefile~ 2010-03-03 01:42:18.532868539 +0100 +++ autofs-5.0.5/modules/Makefile 2010-03-03 01:42:35.360367371 +0100 @@ -43,7 +43,7 @@ ifeq ($(SASL), 1) SASL_OBJ = cyrus-sasl.o LDAP_FLAGS += $(SASL_FLAGS) $(XML_FLAGS) -DLDAP_THREAD_SAFE - LIBLDAP += $(LIBSASL) $(XML_LIBS) + LIBLDAP += $(LIBSASL) $(XML_LIBS) -lkrb5 endif endif