summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2012-07-23 17:58:41 -0400
committerSimo Sorce <simo@redhat.com>2012-08-28 08:25:52 +0200
commitd2c02366ecd3d94ff8c9b6c86696f7d9ada4b0d0 (patch)
tree662228a8c732792a95bed7f9ce2a758c027ef344
parent5bbcfc3656afa34f292419fa7a33311d47a62a63 (diff)
downloadgss-proxy-d2c02366ecd3d94ff8c9b6c86696f7d9ada4b0d0.tar.gz
gss-proxy-d2c02366ecd3d94ff8c9b6c86696f7d9ada4b0d0.tar.xz
gss-proxy-d2c02366ecd3d94ff8c9b6c86696f7d9ada4b0d0.zip
Add context handle wrapper
-rw-r--r--proxy/src/client/gpm_accept_sec_context.c6
-rw-r--r--proxy/src/client/gpm_init_sec_context.c6
-rw-r--r--proxy/src/client/gpm_release_handle.c6
-rw-r--r--proxy/src/client/gssapi_gpm.h6
-rw-r--r--proxy/src/mechglue/gss_plugin.h5
-rw-r--r--proxy/tests/cli_srv_comm.c4
6 files changed, 19 insertions, 14 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 7267d00..0d10a9e 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 05fd157..2d768c0 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 87ae434..6514bc6 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;
@@ -314,7 +314,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;