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.
This commit is contained in:
Steve Holme
2014-12-02 22:21:58 +00:00
parent 018b9d421a
commit 2b604eada5
3 changed files with 48 additions and 32 deletions

View File

@@ -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 */