diff options
author | Steve Holme <steve_holme@hotmail.com> | 2014-12-02 22:21:58 +0000 |
---|---|---|
committer | Steve Holme <steve_holme@hotmail.com> | 2014-12-02 22:27:02 +0000 |
commit | 2b604eada534bc4aca4d4d24fc8847b61d399461 (patch) | |
tree | 21c51dc151a4ade91b52834e4f40e53908206757 /lib/curl_gssapi.c | |
parent | 018b9d421a59cd9d45c33613440ff3e8f578bf0a (diff) | |
download | curl-2b604eada534bc4aca4d4d24fc8847b61d399461.tar.gz |
sasl_gssapi: Made log_gss_error() a common GSS-API function
Made log_gss_error() a common function so that it can be used in both
the http_negotiate code as well as the curl_sasl_gssapi code.
Diffstat (limited to 'lib/curl_gssapi.c')
-rw-r--r-- | lib/curl_gssapi.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/lib/curl_gssapi.c b/lib/curl_gssapi.c index 232b3ef9f..7c961c9f2 100644 --- a/lib/curl_gssapi.c +++ b/lib/curl_gssapi.c @@ -72,4 +72,45 @@ OM_uint32 Curl_gss_init_sec_context( NULL /* time_rec */); } +/* + * Curl_gss_log_error() + * + * This is used to log a GSS-API error status. + * + * Parameters: + * + * data [in] - The session handle. + * status [in] - The status code. + * prefix [in] - The prefix of the log message. + */ +void Curl_gss_log_error(struct SessionHandle *data, OM_uint32 status, + const char *prefix) +{ + OM_uint32 maj_stat; + OM_uint32 min_stat; + OM_uint32 msg_ctx = 0; + gss_buffer_desc status_string; + char buf[1024]; + size_t len; + + snprintf(buf, sizeof(buf), "%s", prefix); + len = strlen(buf); + do { + maj_stat = gss_display_status(&min_stat, + status, + GSS_C_MECH_CODE, + GSS_C_NO_OID, + &msg_ctx, + &status_string); + if(sizeof(buf) > len + status_string.length + 1) { + snprintf(buf + len, sizeof(buf) - len, + ": %s", (char*)status_string.value); + len += status_string.length; + } + gss_release_buffer(&min_stat, &status_string); + } while(!GSS_ERROR(maj_stat) && msg_ctx != 0); + + infof(data, "%s\n", buf); +} + #endif /* HAVE_GSSAPI */ |