void k5_change_error_message_code(krb5_context ctx, krb5_error_code oldcode,
krb5_error_code newcode);
-/* Define a shorter internal name for krb5_set_error_message. */
+/* Define shorter internal names for setting error messages. */
#define k5_setmsg krb5_set_error_message
+#define k5_prependmsg krb5_prepend_error_message
+#define k5_wrapmsg krb5_wrap_error_message
#endif /* _KRB5_INT_H */
if ((status = krb5int_open_plugin_dirs ((const char **) path,
filebases,
&(*lib)->dl_dir_handle, &kcontext->err))) {
- const char *err_str = krb5_get_error_message(kcontext, status);
status = KRB5_KDB_DBTYPE_NOTFOUND;
- k5_setmsg(kcontext, status,
- _("Unable to find requested database type: %s"), err_str);
- krb5_free_error_message(kcontext, err_str);
+ k5_prependmsg(kcontext, status,
+ _("Unable to find requested database type"));
goto clean_n_exit;
}
if ((status = krb5int_get_plugin_dir_data (&(*lib)->dl_dir_handle, "kdb_function_table",
&vftabl_addrs, &kcontext->err))) {
- const char *err_str = krb5_get_error_message(kcontext, status);
status = KRB5_KDB_DBTYPE_INIT;
- k5_setmsg(kcontext, status,
- _("plugin symbol 'kdb_function_table' lookup failed: %s"),
- err_str);
- krb5_free_error_message(kcontext, err_str);
+ k5_prependmsg(kcontext, status,
+ _("plugin symbol 'kdb_function_table' lookup failed"));
goto clean_n_exit;
}
target_principal);
}
if (retval != 0) {
- const char * errmsg;
- errmsg = krb5_get_error_message(context, retval);
- k5_setmsg(context, retval, _("%s constructing AP-REQ armor"),
- errmsg);
- krb5_free_error_message(context, errmsg);
+ k5_prependmsg(context, retval,
+ _("Error constructing AP-REQ armor"));
}
}
if (ccache)
retval = krb5_c_decrypt(context, state->armor_key,
KRB5_KEYUSAGE_FAST_REP, NULL,
encrypted_response, &scratch);
- if (retval != 0) {
- const char * errmsg;
- errmsg = krb5_get_error_message(context, retval);
- k5_setmsg(context, retval, _("%s while decrypting FAST reply"),
- errmsg);
- krb5_free_error_message(context, errmsg);
- }
+ if (retval != 0)
+ k5_prependmsg(context, retval, _("Failed to decrypt FAST reply"));
if (retval == 0)
retval = decode_krb5_fast_response(&scratch, &local_resp);
if (retval == 0) {
goto cc_cleanup;
code = save_cc_config_out_data(context, out_ccache, ctx);
cc_cleanup:
- if (code !=0) {
- const char *msg;
- msg = krb5_get_error_message(context, code);
- k5_setmsg(context, code, _("%s while storing credentials"), msg);
- krb5_free_error_message(context, msg);
- }
+ if (code != 0)
+ k5_prependmsg(context, code, _("Failed to store credentials"));
}
k5_preauth_request_context_fini(context);
struct krb5_preauth_context_st *pctx = context->preauth_context;
clpreauth_handle *hp, h;
krb5_error_code ret;
- const char *emsg = NULL;
if (pctx == NULL) {
k5_init_preauth_context(context);
h = *hp;
ret = clpreauth_gic_opts(context, h, opt, attr, value);
if (ret) {
- emsg = krb5_get_error_message(context, ret);
- k5_setmsg(context, ret, _("Preauth module %s: %s"), h->vt.name,
- emsg);
- krb5_free_error_message(context, emsg);
+ k5_prependmsg(context, ret, _("Preauth module %s"), h->vt.name);
return ret;
}
}
SETUP_CONTEXT();
if ((retval=krb5_ldap_read_krbcontainer_dn(context, &(ldap_context->container_dn)))) {
- prepend_err_str(context, _("Unable to read Kerberos container"),
- retval, retval);
+ k5_prependmsg(context, retval, _("Unable to read Kerberos container"));
goto cleanup;
}
if ((retval=krb5_ldap_read_realm_params(context, context->default_realm, &(ldap_context->lrparams), &mask))) {
- prepend_err_str(context, _("Unable to read Realm"), retval, retval);
+ k5_prependmsg(context, retval, _("Unable to read Realm"));
goto cleanup;
}
status = krb5_ldap_parse_db_params(context, db_args);
if (status) {
- prepend_err_str(context, _("Error processing LDAP DB params:"),
- status, status);
+ k5_prependmsg(context, status, _("Error processing LDAP DB params"));
goto clean_n_exit;
}
status = krb5_ldap_read_server_params(context, conf_section, mode & 0x0300);
if (status) {
- prepend_err_str(context, _("Error reading LDAP server params:"),
- status, status);
+ k5_prependmsg(context, status, _("Error reading LDAP server params"));
goto clean_n_exit;
}
if ((status=krb5_ldap_db_init(context, ldap_context)) != 0) {
return translated_st;
}
-void
-prepend_err_str(krb5_context ctx, const char *str, krb5_error_code err,
- krb5_error_code oerr)
-{
- const char *omsg;
-
- omsg = krb5_get_error_message(ctx, oerr);
- k5_setmsg(ctx, err, "%s %s", str, omsg);
- krb5_free_error_message(ctx, omsg);
-}
-
extern krb5int_access accessor;
MAKE_INIT_FUNCTION(kldap_init_fn);
#define GET_HANDLE() ld = NULL; \
st = krb5_ldap_request_handle_from_pool(ldap_context, &ldap_server_handle); \
if (st != 0) { \
- prepend_err_str(context, "LDAP handle unavailable: ", KRB5_KDB_ACCESS_ERROR, st); \
+ k5_wrapmsg(context, st, KRB5_KDB_ACCESS_ERROR, \
+ "LDAP handle unavailable"); \
st = KRB5_KDB_ACCESS_ERROR; \
goto cleanup; \
} \
ld = ldap_server_handle->ldap_handle;
extern int set_ldap_error (krb5_context ctx, int st, int op);
-extern void prepend_err_str (krb5_context ctx, const char *s, krb5_error_code err, krb5_error_code oerr);
#define LDAP_SEARCH(base, scope, filter, attrs) LDAP_SEARCH_1(base, scope, filter, attrs, CHECK_STATUS)
\
if (status_check != IGNORE_STATUS) { \
if (tempst != 0) { \
- prepend_err_str(context, "LDAP handle unavailable: ", KRB5_KDB_ACCESS_ERROR, st); \
+ k5_wrapmsg(context, st, KRB5_KDB_ACCESS_ERROR, \
+ "LDAP handle unavailable"); \
st = KRB5_KDB_ACCESS_ERROR; \
goto cleanup; \
} \
if (st == 0 && mask == 0) { \
st = set_ldap_error(context, LDAP_OBJECT_CLASS_VIOLATION, OP_SEARCH); \
} \
- prepend_err_str(context, str, st, st); \
+ k5_prependmsg(context, st, str); \
goto cleanup; \
}
ret = krb5_ldap_readpassword(context, ctx->service_password_file,
ctx->bind_dn, &ctx->bind_pwd);
if (ret) {
- prepend_err_str(context, _("Error reading password from stash: "),
- ret, ret);
+ k5_prependmsg(context, ret,
+ _("Error reading password from stash"));
return ret;
}
}
status = krb5_ldap_parse_db_params(context, db_args);
if (status) {
- prepend_err_str(context, _("Error processing LDAP DB params:"),
- status, status);
+ k5_prependmsg(context, status, _("Error processing LDAP DB params"));
goto cleanup;
}
status = krb5_ldap_read_server_params(context, conf_section, KRB5_KDB_SRV_TYPE_ADMIN);
if (status) {
- prepend_err_str(context, _("Error reading LDAP server params:"),
- status, status);
+ k5_prependmsg(context, status, _("Error reading LDAP server params"));
goto cleanup;
}
status = krb5_ldap_db_init(context, ldap_context);
if (st == KRB5_KDB_NOENTRY || st == KRB5_KDB_CONSTRAINT_VIOLATION) {
int ost = st;
st = EINVAL;
- snprintf(errbuf, sizeof(errbuf), _("'%s' not found: "),
- xargs.containerdn);
- prepend_err_str(context, errbuf, st, ost);
+ k5_prependmsg(context, ost, st, _("'%s' not found"),
+ xargs.containerdn);
}
goto cleanup;
}
if (policy != NULL) {
st = krb5_ldap_read_policy(context, policy, &tktpoldnparam, &omask);
if (st && st != KRB5_KDB_NOENTRY) {
- prepend_err_str(context, _("Error reading ticket policy. "), st,
- st);
+ k5_prependmsg(context, st, _("Error reading ticket policy"));
goto cleanup;
}
/* Delete all ticket policies */
{
if ((st = krb5_ldap_list_policy (context, ldap_context->lrparams->realmdn, &policy)) != 0) {
- prepend_err_str(context, _("Error reading ticket policy: "), st,
- st);
+ k5_prependmsg(context, st, _("Error reading ticket policy"));
goto cleanup;
}
if (policyname == NULL) {
st = EINVAL;
- prepend_err_str(context, _("Ticket Policy Object DN missing"), st, st);
+ k5_prependmsg(context, st, _("Ticket Policy Object DN missing"));
goto cleanup;
}
if (refcount == 0) {
if ((st=ldap_delete_ext_s(ld, policy_dn, NULL, NULL)) != 0) {
- prepend_err_str (context,ldap_err2string(st),st,st);
+ k5_prependmsg(context, st, "%s", ldap_err2string(st));
goto cleanup;
}
} else {
st = EINVAL;
- prepend_err_str(context,
- _("Delete Failed: One or more Principals associated "
- "with the Ticket Policy"), st, st);
+ k5_prependmsg(context, st,
+ _("Delete Failed: One or more Principals associated "
+ "with the Ticket Policy"));
goto cleanup;
}
/* check if the containerdn exists */
if (containerdn) {
if ((st=checkattributevalue(ld, containerdn, NULL, NULL, NULL)) != 0) {
- prepend_err_str(context, _("Error reading container object: "),
- st, st);
+ k5_prependmsg(context, st, _("Error reading container object"));
goto cleanup;
}
}
# Test kinit with an inaccessible ccache.
out = realm.run([kinit, '-c', 'testdir/xx/yy', realm.user_princ],
input=(password('user') + '\n'), expected_code=1)
-if ' while storing credentials' not in out:
+if 'Failed to store credentials' not in out:
fail('Expected error message not seen in kinit output')
# Test klist -s with a single ccache.