diff options
Diffstat (limited to 'proxy')
-rw-r--r-- | proxy/src/gp_rpc_init_sec_context.c | 8 | ||||
-rw-r--r-- | proxy/src/mechglue/gpm_init_sec_context.c | 8 |
2 files changed, 11 insertions, 5 deletions
diff --git a/proxy/src/gp_rpc_init_sec_context.c b/proxy/src/gp_rpc_init_sec_context.c index 474ace0..075dcbb 100644 --- a/proxy/src/gp_rpc_init_sec_context.c +++ b/proxy/src/gp_rpc_init_sec_context.c @@ -41,6 +41,7 @@ int gp_init_sec_context(struct gssproxy_ctx *gpctx, struct gss_channel_bindings_struct cbs; gss_channel_bindings_t pcbs; gss_buffer_desc ibuf; + gss_buffer_t pibuf; gss_OID actual_mech_type = GSS_C_NO_OID; gss_buffer_desc obuf = GSS_C_EMPTY_BUFFER; uint32_t ret_maj; @@ -97,7 +98,10 @@ int gp_init_sec_context(struct gssproxy_ctx *gpctx, pcbs = GSS_C_NO_CHANNEL_BINDINGS; } - gp_conv_gssx_to_buffer(isca->input_token, &ibuf); + if (isca->input_token) { + gp_conv_gssx_to_buffer(isca->input_token, &ibuf); + pibuf = &ibuf; + } ret_maj = gss_init_sec_context(&ret_min, ich, @@ -107,7 +111,7 @@ int gp_init_sec_context(struct gssproxy_ctx *gpctx, req_flags, time_req, pcbs, - &ibuf, + pibuf, &actual_mech_type, &obuf, NULL, diff --git a/proxy/src/mechglue/gpm_init_sec_context.c b/proxy/src/mechglue/gpm_init_sec_context.c index 2e4c171..4a8c557 100644 --- a/proxy/src/mechglue/gpm_init_sec_context.c +++ b/proxy/src/mechglue/gpm_init_sec_context.c @@ -79,9 +79,11 @@ OM_uint32 gpm_init_sec_context(OM_uint32 *minor_status, } } - ret = gp_conv_buffer_to_gssx_alloc(input_token, &arg->input_token); - if (ret) { - goto done; + if (input_token != GSS_C_NO_BUFFER) { + ret = gp_conv_buffer_to_gssx_alloc(input_token, &arg->input_token); + if (ret) { + goto done; + } } /* execute proxy request */ |