diff options
-rw-r--r-- | proxy/src/client/gpm_accept_sec_context.c | 6 | ||||
-rw-r--r-- | proxy/src/client/gpm_init_sec_context.c | 6 | ||||
-rw-r--r-- | proxy/src/client/gpm_release_handle.c | 6 | ||||
-rw-r--r-- | proxy/src/client/gssapi_gpm.h | 6 | ||||
-rw-r--r-- | proxy/src/mechglue/gss_plugin.h | 5 | ||||
-rw-r--r-- | proxy/tests/cli_srv_comm.c | 14 |
6 files changed, 24 insertions, 19 deletions
diff --git a/proxy/src/client/gpm_accept_sec_context.c b/proxy/src/client/gpm_accept_sec_context.c index a4b08d4..1f6a3d3 100644 --- a/proxy/src/client/gpm_accept_sec_context.c +++ b/proxy/src/client/gpm_accept_sec_context.c @@ -27,7 +27,7 @@ #include "src/gp_conv.h" OM_uint32 gpm_accept_sec_context(OM_uint32 *minor_status, - gss_ctx_id_t *context_handle, + gssx_ctx **context_handle, gssx_cred *acceptor_cred_handle, gss_buffer_t input_token_buffer, gss_channel_bindings_t input_chan_bindings, @@ -54,7 +54,7 @@ OM_uint32 gpm_accept_sec_context(OM_uint32 *minor_status, /* prepare proxy request */ if (*context_handle) { - arg->context_handle = (gssx_ctx *)*context_handle; + arg->context_handle = *context_handle; } if (acceptor_cred_handle) { @@ -121,7 +121,7 @@ OM_uint32 gpm_accept_sec_context(OM_uint32 *minor_status, xdr_free((xdrproc_t)xdr_gssx_ctx, (char *)*context_handle); free(*context_handle); } - *context_handle = (gss_ctx_id_t)ctx; + *context_handle = ctx; if (mech_type) { *mech_type = mech; } diff --git a/proxy/src/client/gpm_init_sec_context.c b/proxy/src/client/gpm_init_sec_context.c index 581dbc5..ab6ed80 100644 --- a/proxy/src/client/gpm_init_sec_context.c +++ b/proxy/src/client/gpm_init_sec_context.c @@ -28,7 +28,7 @@ OM_uint32 gpm_init_sec_context(OM_uint32 *minor_status, gssx_cred *cred_handle, - gss_ctx_id_t *context_handle, + gssx_ctx **context_handle, gss_name_t target_name, gss_OID mech_type, OM_uint32 req_flags, @@ -60,7 +60,7 @@ OM_uint32 gpm_init_sec_context(OM_uint32 *minor_status, } if (*context_handle) { - arg->context_handle = (gssx_ctx *)*context_handle; + arg->context_handle = *context_handle; } if (target_name != GSS_C_NO_NAME) { @@ -142,7 +142,7 @@ done: xdr_free((xdrproc_t)xdr_gssx_ctx, (char *)*context_handle); free(*context_handle); } - *context_handle = (gss_ctx_id_t)ctx; + *context_handle = ctx; if (actual_mech_type) { *actual_mech_type = mech; } diff --git a/proxy/src/client/gpm_release_handle.c b/proxy/src/client/gpm_release_handle.c index f1eee00..1e7524e 100644 --- a/proxy/src/client/gpm_release_handle.c +++ b/proxy/src/client/gpm_release_handle.c @@ -78,7 +78,7 @@ done: } OM_uint32 gpm_delete_sec_context(OM_uint32 *minor_status, - gss_ctx_id_t *context_handle, + gssx_ctx **context_handle, gss_buffer_t output_token) { union gp_rpc_arg uarg; @@ -88,11 +88,11 @@ OM_uint32 gpm_delete_sec_context(OM_uint32 *minor_status, gssx_ctx *r; int ret; - if (context_handle == NULL || *context_handle == GSS_C_NO_CONTEXT) { + if (context_handle == NULL || *context_handle == NULL) { return 0; } - r = (gssx_ctx *)(*context_handle); + r = (*context_handle); if (!r->needs_release) { ret = GSS_S_COMPLETE; diff --git a/proxy/src/client/gssapi_gpm.h b/proxy/src/client/gssapi_gpm.h index 99314e5..2766354 100644 --- a/proxy/src/client/gssapi_gpm.h +++ b/proxy/src/client/gssapi_gpm.h @@ -56,7 +56,7 @@ OM_uint32 gpm_display_status(OM_uint32 *minor_status, gss_buffer_t status_string); OM_uint32 gpm_accept_sec_context(OM_uint32 *minor_status, - gss_ctx_id_t *context_handle, + gssx_ctx **context_handle, gssx_cred *acceptor_cred_handle, gss_buffer_t input_token_buffer, gss_channel_bindings_t input_chan_bindings, @@ -71,7 +71,7 @@ OM_uint32 gpm_release_cred(OM_uint32 *minor_status, gssx_cred **cred_handle); OM_uint32 gpm_delete_sec_context(OM_uint32 *minor_status, - gss_ctx_id_t *context_handle, + gssx_ctx **context_handle, gss_buffer_t output_token); OM_uint32 gpm_acquire_cred(OM_uint32 *minor_status, @@ -165,7 +165,7 @@ OM_uint32 gpm_compare_name(OM_uint32 *minor_status, OM_uint32 gpm_init_sec_context(OM_uint32 *minor_status, gssx_cred *cred_handle, - gss_ctx_id_t *context_handle, + gssx_ctx **context_handle, gss_name_t target_name, gss_OID mech_type, OM_uint32 req_flags, diff --git a/proxy/src/mechglue/gss_plugin.h b/proxy/src/mechglue/gss_plugin.h index 6404402..6184828 100644 --- a/proxy/src/mechglue/gss_plugin.h +++ b/proxy/src/mechglue/gss_plugin.h @@ -33,6 +33,11 @@ struct gpp_cred_handle { gss_cred_id_t local; }; +struct gpp_context_handle { + gssx_ctx *remote; + gss_ctx_id_t local; +}; + extern const gss_OID_desc gssproxy_mech_interposer; enum gpp_behavior { diff --git a/proxy/tests/cli_srv_comm.c b/proxy/tests/cli_srv_comm.c index cac4e73..57a5b1a 100644 --- a/proxy/tests/cli_srv_comm.c +++ b/proxy/tests/cli_srv_comm.c @@ -205,7 +205,7 @@ void *client_thread(void *pvt) gss_buffer_desc in_token = GSS_C_EMPTY_BUFFER; gss_buffer_desc out_token = GSS_C_EMPTY_BUFFER; gss_name_t name = GSS_C_NO_NAME; - gss_ctx_id_t ctx = GSS_C_NO_CONTEXT; + struct gssx_ctx *ctx = NULL; struct gssx_cred *cred_handle = NULL; int ret = 0; gss_buffer_desc msg_buf = GSS_C_EMPTY_BUFFER; @@ -275,7 +275,7 @@ void *client_thread(void *pvt) msg_buf.value = (void *)buffer; msg_buf.length = sizeof(CLI_MSG); - ret_maj = gpm_get_mic(&ret_min, (gssx_ctx *)ctx, + ret_maj = gpm_get_mic(&ret_min, ctx, GSS_C_QOP_DEFAULT, &msg_buf, &out_token); if (ret_maj) { @@ -304,7 +304,7 @@ void *client_thread(void *pvt) in_token.length = strlen(in_token.value) + 1; ret_maj = gpm_wrap(&ret_min, - (gssx_ctx *)ctx, + ctx, 1, /* conf_req_flag */ GSS_C_QOP_DEFAULT, /* qop_req */ &in_token, @@ -325,7 +325,7 @@ void *client_thread(void *pvt) } ret_maj = gpm_wrap_size_limit(&ret_min, - (gssx_ctx *)ctx, + ctx, 1, /* conf_req */ GSS_C_QOP_DEFAULT, /* qop_req */ 4096, /* size_req */ @@ -354,7 +354,7 @@ void *server_thread(void *pvt) gss_buffer_desc in_token = GSS_C_EMPTY_BUFFER; uint32_t ret_maj; uint32_t ret_min; - gss_ctx_id_t context_handle = GSS_C_NO_CONTEXT; + struct gssx_ctx *context_handle = NULL; struct gssx_cred *cred_handle = NULL; gss_name_t src_name; gss_buffer_desc out_token = GSS_C_EMPTY_BUFFER; @@ -540,7 +540,7 @@ void *server_thread(void *pvt) msg_token.value = &buffer[in_token.length]; msg_token.length = buflen; - ret_maj = gpm_verify_mic(&ret_min, (gssx_ctx *)context_handle, + ret_maj = gpm_verify_mic(&ret_min, context_handle, &in_token, &msg_token, NULL); if (ret_maj) { fprintf(stderr, "gpm_verify_mic failed: %d\n", ret_maj); @@ -560,7 +560,7 @@ void *server_thread(void *pvt) input_message_buffer.length = buflen; ret_maj = gpm_unwrap(&ret_min, - (gssx_ctx *)context_handle, + context_handle, &input_message_buffer, &output_message_buffer, &conf_state, |