Fix gss error reporting bug

This commit is contained in:
Michael Spang 2009-09-20 20:10:11 -04:00
parent 655daaff8a
commit c2b05b3d0f
1 changed files with 14 additions and 2 deletions

View File

@ -49,21 +49,33 @@ void free_gss(void) {
free(peer_username);
}
static char *gssbuf2str(gss_buffer_t buf) {
char *msgstr = xmalloc(buf->length + 1);
memcpy(msgstr, buf->value, buf->length);
msgstr[buf->length] = '\0';
return msgstr;
}
static void display_status(char *prefix, OM_uint32 code, int type) {
OM_uint32 maj_stat, min_stat;
gss_buffer_desc msg;
OM_uint32 msg_ctx = 0;
char *msgstr;
maj_stat = gss_display_status(&min_stat, code, type, GSS_C_NULL_OID,
&msg_ctx, &msg);
logmsg(LOG_ERR, "%s: %s", prefix, (char *)msg.value);
msgstr = gssbuf2str(&msg);
logmsg(LOG_ERR, "%s: %s", prefix, msgstr);
gss_release_buffer(&min_stat, &msg);
free(msgstr);
while (msg_ctx) {
maj_stat = gss_display_status(&min_stat, code, type, GSS_C_NULL_OID,
&msg_ctx, &msg);
logmsg(LOG_ERR, "additional: %s", (char *)msg.value);
msgstr = gssbuf2str(&msg);
logmsg(LOG_ERR, "additional: %s", msgstr);
gss_release_buffer(&min_stat, &msg);
free(msgstr);
}
}