Fix gss error reporting bug
This commit is contained in:
parent
655daaff8a
commit
c2b05b3d0f
16
src/gss.c
16
src/gss.c
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue