add a bit more logging in gss mechglue
This commit is contained in:
committed by
Nico Williams
parent
e11f8a8823
commit
8dba1f4810
@@ -265,12 +265,14 @@ gss_accept_sec_context(OM_uint32 *minor_status,
|
||||
*delegated_cred_handle = GSS_C_NO_CREDENTIAL;
|
||||
_mg_buffer_zero(output_token);
|
||||
|
||||
_gss_mg_log(10, "gss-asc: enter ctx=%p", ctx);
|
||||
if (!*context_handle) {
|
||||
ctx = calloc(1, sizeof(*ctx));
|
||||
if (!ctx) {
|
||||
*minor_status = ENOMEM;
|
||||
return (GSS_S_DEFECTIVE_TOKEN);
|
||||
}
|
||||
_gss_mg_log(10, "gss-asc: allocated ctx=%p", ctx);
|
||||
*context_handle = (gss_ctx_id_t)ctx;
|
||||
ctx->gc_initial = 1;
|
||||
}
|
||||
@@ -318,6 +320,9 @@ gss_accept_sec_context(OM_uint32 *minor_status,
|
||||
&mech_ret_flags,
|
||||
time_rec,
|
||||
&delegated_mc);
|
||||
_gss_mg_log(10, "gss-asc: ctx=%p tried \"%s\", "
|
||||
"returned %u", ctx, m->gm_name,
|
||||
major_status);
|
||||
if (major_status == GSS_S_DEFECTIVE_TOKEN) {
|
||||
/*
|
||||
* Try to retain and output one error token for
|
||||
@@ -360,6 +365,9 @@ gss_accept_sec_context(OM_uint32 *minor_status,
|
||||
&mech_ret_flags,
|
||||
time_rec,
|
||||
&delegated_mc);
|
||||
_gss_mg_log(10, "gss-asc: ctx=%p tried \"%s\", "
|
||||
"returned %u", ctx, m->gm_name,
|
||||
major_status);
|
||||
if (major_status == GSS_S_DEFECTIVE_TOKEN) {
|
||||
if (output_token->length &&
|
||||
defective_token_error.length == 0) {
|
||||
@@ -510,7 +518,8 @@ got_one:
|
||||
}
|
||||
}
|
||||
|
||||
_gss_mg_log(10, "gss-asc: return %d/%d", (int)major_status, (int)*minor_status);
|
||||
_gss_mg_log(10, "gss-asc: ctx=%p return %d/%d", ctx,
|
||||
(int)major_status, (int)*minor_status);
|
||||
|
||||
if (ret_flags)
|
||||
*ret_flags = mech_ret_flags;
|
||||
|
||||
@@ -38,6 +38,7 @@ gss_display_name(OM_uint32 *minor_status,
|
||||
struct _gss_name *name = rk_UNCONST(input_name);
|
||||
struct _gss_mechanism_name *mn;
|
||||
|
||||
_gss_mg_log(10, "gdn: enter gss_display_name: %p", input_name);
|
||||
_mg_buffer_zero(output_name_buffer);
|
||||
if (output_name_type)
|
||||
*output_name_type = GSS_C_NO_OID;
|
||||
@@ -68,6 +69,8 @@ gss_display_name(OM_uint32 *minor_status,
|
||||
return (GSS_S_COMPLETE);
|
||||
} else {
|
||||
HEIM_TAILQ_FOREACH(mn, &name->gn_mn, gmn_link) {
|
||||
_gss_mg_log(10, "gdn: trying mech \"%s\"",
|
||||
mn->gmn_mech->gm_name);
|
||||
major_status = mn->gmn_mech->gm_display_name(
|
||||
minor_status, mn->gmn_name,
|
||||
output_name_buffer,
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
|
||||
#include "mech_locl.h"
|
||||
|
||||
#include <vis.h>
|
||||
|
||||
static OM_uint32
|
||||
_gss_import_export_name(OM_uint32 *minor_status,
|
||||
const gss_buffer_t input_name_buffer,
|
||||
@@ -44,6 +46,8 @@ _gss_import_export_name(OM_uint32 *minor_status,
|
||||
gss_name_t new_canonical_name;
|
||||
int composite = 0;
|
||||
|
||||
_gss_mg_log(10, "gin: importing exported name");
|
||||
|
||||
*minor_status = 0;
|
||||
*output_name = 0;
|
||||
|
||||
@@ -169,6 +173,32 @@ _gss_import_export_name(OM_uint32 *minor_status,
|
||||
return (GSS_S_COMPLETE);
|
||||
}
|
||||
|
||||
static void
|
||||
log_import_name(gss_buffer_t input_name_buffer)
|
||||
{
|
||||
char *name;
|
||||
size_t len;
|
||||
|
||||
if (!_gss_mg_log_level(10))
|
||||
return;
|
||||
|
||||
if (input_name_buffer->length > (SIZE_MAX - 1) / 4) {
|
||||
_gss_mg_log(10, "gin: importing name (%zu bytes)",
|
||||
input_name_buffer->length);
|
||||
return;
|
||||
}
|
||||
|
||||
len = input_name_buffer->length * 4 + 1;
|
||||
name = malloc(len);
|
||||
if (name == NULL)
|
||||
return;
|
||||
|
||||
strsvisx(name, input_name_buffer->value, input_name_buffer->length,
|
||||
VIS_CSTYLE | VIS_TAB | VIS_NL, "\"");
|
||||
_gss_mg_log(10, "gin: importing name \"%s\"", name);
|
||||
free(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a GGS-API name from contiguous string to internal form.
|
||||
*
|
||||
@@ -230,6 +260,7 @@ gss_import_name(OM_uint32 *minor_status,
|
||||
name_type, output_name);
|
||||
}
|
||||
|
||||
log_import_name(input_name_buffer);
|
||||
|
||||
*minor_status = 0;
|
||||
name = _gss_create_name(NULL, NULL);
|
||||
@@ -262,6 +293,9 @@ gss_import_name(OM_uint32 *minor_status,
|
||||
HEIM_TAILQ_FOREACH(m, &_gss_mechs, gm_link) {
|
||||
int present = 0;
|
||||
|
||||
_gss_mg_log(10, "gin: attempting mech \"%s\"",
|
||||
m->gm_mech.gm_name);
|
||||
|
||||
if ((m->gm_mech.gm_flags & GM_USE_MG_NAME))
|
||||
continue;
|
||||
|
||||
|
||||
@@ -167,7 +167,8 @@ do { \
|
||||
m->gm_mech.gm_ ## name = (_gss_##name##_t *)dlsym(so, "gss_" #name); \
|
||||
if (!m->gm_mech.gm_ ## name || \
|
||||
m->gm_mech.gm_ ##name == gss_ ## name) { \
|
||||
_gss_mg_log(1, "can't find symbol gss_" #name); \
|
||||
_gss_mg_log(1, "can't find symbol gss_" #name \
|
||||
" in %s", lib); \
|
||||
goto bad; \
|
||||
} \
|
||||
} while (0)
|
||||
@@ -334,9 +335,11 @@ _gss_load_mech(void)
|
||||
/*
|
||||
* Check for duplicates, already loaded mechs.
|
||||
*/
|
||||
_gss_mg_log(10, "loading \"%s\"", name);
|
||||
found = 0;
|
||||
HEIM_TAILQ_FOREACH(m, &_gss_mechs, gm_link) {
|
||||
if (gss_oid_equal(&m->gm_mech.gm_mech_oid, mech_oid)) {
|
||||
_gss_mg_log(10, "duplicate mech, not loading");
|
||||
found = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user