aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2009-03-11 22:11:06 +0000
committerGreg Hudson <ghudson@mit.edu>2009-03-11 22:11:06 +0000
commitef8186907c3d3e29260898dd484a18504ba5848e (patch)
tree1ee7d4fa412d2e58adffb8b645fc5497aba4ee6d
parent3a02ca0ae2381f7ea7bc120c62d3154cc33350b9 (diff)
downloadkrb5-ef8186907c3d3e29260898dd484a18504ba5848e.zip
krb5-ef8186907c3d3e29260898dd484a18504ba5848e.tar.gz
krb5-ef8186907c3d3e29260898dd484a18504ba5848e.tar.bz2
Make a working krb5_copy_error_message
The krb5_copy_error_state macro wasn't used, didn't work, and didn't need to be a macro. Replace it with an exported API function named krb5_copy_error_message. ticket: 6407 target_version: 1.7 tags: pullup git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@22078 dc483132-0cff-0310-8789-dd5450dbe970
-rw-r--r--src/include/k5-int.h3
-rw-r--r--src/include/krb5/krb5.hin3
-rw-r--r--src/lib/krb5/krb/kerrs.c14
-rw-r--r--src/lib/krb5/libkrb5.exports1
4 files changed, 18 insertions, 3 deletions
diff --git a/src/include/k5-int.h b/src/include/k5-int.h
index 79d1cf1..e933986 100644
--- a/src/include/k5-int.h
+++ b/src/include/k5-int.h
@@ -2298,9 +2298,6 @@ krb5int_c_mandatory_cksumtype (krb5_context, krb5_enctype, krb5_cksumtype *);
extern int krb5int_crypto_init (void);
extern int krb5int_prng_init(void);
-#define krb5_copy_error_state(CTX, OCTX) \
- krb5int_set_error(&(CTX)->errinfo, (OCTX)->errinfo.code, "%s", (OCTX)->errinfo.msg)
-
/*
* Referral definitions, debugging hooks, and subfunctions.
*/
diff --git a/src/include/krb5/krb5.hin b/src/include/krb5/krb5.hin
index 72a412a..7d738a6 100644
--- a/src/include/krb5/krb5.hin
+++ b/src/include/krb5/krb5.hin
@@ -2490,6 +2490,9 @@ krb5_vset_error_message (krb5_context, krb5_error_code, const char *, va_list)
__attribute__((__format__(__printf__, 3, 0)))
#endif
;
+void KRB5_CALLCONV
+krb5_copy_error_message (krb5_context, krb5_context);
+
/*
* The behavior of krb5_get_error_message is only defined the first
* time it is called after a failed call to a krb5 function using the
diff --git a/src/lib/krb5/krb/kerrs.c b/src/lib/krb5/krb/kerrs.c
index 77f4976..6470764 100644
--- a/src/lib/krb5/krb/kerrs.c
+++ b/src/lib/krb5/krb/kerrs.c
@@ -75,6 +75,20 @@ krb5_vset_error_message (krb5_context ctx, krb5_error_code code,
#endif
}
+/* Set the error message state of dest_ctx to that of src_ctx. */
+void KRB5_CALLCONV
+krb5_copy_error_message (krb5_context dest_ctx, krb5_context src_ctx)
+{
+ if (dest_ctx == src_ctx)
+ return;
+ if (src_ctx->err.msg) {
+ krb5int_set_error(&dest_ctx->err, src_ctx->err.code, "%s",
+ src_ctx->err.msg);
+ } else {
+ krb5int_clear_error(dest_ctx);
+ }
+}
+
const char * KRB5_CALLCONV
krb5_get_error_message (krb5_context ctx, krb5_error_code code)
{
diff --git a/src/lib/krb5/libkrb5.exports b/src/lib/krb5/libkrb5.exports
index a6b8929..c41d2e8 100644
--- a/src/lib/krb5/libkrb5.exports
+++ b/src/lib/krb5/libkrb5.exports
@@ -172,6 +172,7 @@ krb5_copy_checksum
krb5_copy_context
krb5_copy_creds
krb5_copy_data
+krb5_copy_error_message
krb5_copy_keyblock
krb5_copy_keyblock_contents
krb5_copy_principal