ret = krb5_get_default_realm(ctx->k5c, &defrealm);
if (ret) {
/* Generate an error reply if there is no default realm. */
- ret = iakerb_mk_error(ctx->k5c, verifier_cred, KRB_ERR_GENERIC,
- &reply);
+ ret = iakerb_mk_error(ctx->k5c, verifier_cred,
+ KRB_AP_ERR_IAKERB_KDC_NOT_FOUND, &reply);
if (ret)
goto cleanup;
} else {
if (krb5_is_krb_error(&in)) {
code = iakerb_rd_error(ctx->k5c, &in);
- goto cleanup;
+ if (code == KRB5KRB_AP_ERR_IAKERB_KDC_NOT_FOUND &&
+ ctx->state == IAKERB_REALM_DISCOVERY) {
+ save_error_string(code, _("The IAKERB proxy could not "
+ "determine its realm"));
+ }
+ if (code == KRB5KRB_AP_ERR_IAKERB_KDC_NOT_FOUND ||
+ code == KRB5KRB_AP_ERR_IAKERB_KDC_NO_RESPONSE)
+ goto cleanup;
+ code = 0;
}
}
realm.run(['./t_pcontok', 'p:' + realm.host_princ])
realm = K5Realm()
+realm.run([kadminl, 'modprinc', '+preauth', realm.user_princ])
remove_default = {'libdefaults': {'default_realm': None}}
change_default = {'libdefaults': {'default_realm': 'WRONG.REALM'}}
# error because the acceptor does not know the realm.
realm.run(['./t_iakerb', 'e:user', password('user'), 'h:host@' + hostname,
'h:host'], env=no_default, expected_code=1,
- expected_msg='Generic error')
+ expected_msg='The IAKERB proxy could not determine its realm')
# Test again, using a GSS_KRB5_NT_PRINCIPAL_NAME acceptor name so that
# gss_accept_sec_context() knows the realm.