summaryrefslogtreecommitdiffstats
path: root/proxy/src/client
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2012-07-23 18:03:15 -0400
committerSimo Sorce <simo@redhat.com>2012-10-25 15:53:30 -0400
commit3fe4e9cb0281b1e758545ce8cae14df05972bf61 (patch)
tree80c795eb8235280fd130ca115309c773556dd3f3 /proxy/src/client
parent9984eedf6443b479c1561618a724635814f8b311 (diff)
downloadgss-proxy-3fe4e9cb0281b1e758545ce8cae14df05972bf61.tar.gz
gss-proxy-3fe4e9cb0281b1e758545ce8cae14df05972bf61.tar.xz
gss-proxy-3fe4e9cb0281b1e758545ce8cae14df05972bf61.zip
Add name handle wrapper
Diffstat (limited to 'proxy/src/client')
-rw-r--r--proxy/src/client/gpm_accept_sec_context.c4
-rw-r--r--proxy/src/client/gpm_acquire_cred.c40
-rw-r--r--proxy/src/client/gpm_import_and_canon_name.c84
-rw-r--r--proxy/src/client/gpm_indicate_mechs.c6
-rw-r--r--proxy/src/client/gpm_init_sec_context.c6
-rw-r--r--proxy/src/client/gpm_inquire_context.c14
-rw-r--r--proxy/src/client/gssapi_gpm.h28
7 files changed, 71 insertions, 111 deletions
diff --git a/proxy/src/client/gpm_accept_sec_context.c b/proxy/src/client/gpm_accept_sec_context.c
index 1f6a3d3..d94c001 100644
--- a/proxy/src/client/gpm_accept_sec_context.c
+++ b/proxy/src/client/gpm_accept_sec_context.c
@@ -31,7 +31,7 @@ OM_uint32 gpm_accept_sec_context(OM_uint32 *minor_status,
gssx_cred *acceptor_cred_handle,
gss_buffer_t input_token_buffer,
gss_channel_bindings_t input_chan_bindings,
- gss_name_t *src_name,
+ gssx_name **src_name,
gss_OID *mech_type,
gss_buffer_t output_token,
OM_uint32 *ret_flags,
@@ -126,7 +126,7 @@ OM_uint32 gpm_accept_sec_context(OM_uint32 *minor_status,
*mech_type = mech;
}
if (src_name) {
- *src_name = (gss_name_t)name;
+ *src_name = name;
}
if (outbuf) {
*output_token = *outbuf;
diff --git a/proxy/src/client/gpm_acquire_cred.c b/proxy/src/client/gpm_acquire_cred.c
index 99d6438..2b2c6c3 100644
--- a/proxy/src/client/gpm_acquire_cred.c
+++ b/proxy/src/client/gpm_acquire_cred.c
@@ -68,7 +68,7 @@ static int gpmint_cred_to_actual_mechs(gssx_cred *c, gss_OID_set *a)
}
OM_uint32 gpm_acquire_cred(OM_uint32 *minor_status,
- const gss_name_t desired_name,
+ gssx_name *desired_name,
OM_uint32 time_req,
const gss_OID_set desired_mechs,
gss_cred_usage_t cred_usage,
@@ -95,19 +95,8 @@ OM_uint32 gpm_acquire_cred(OM_uint32 *minor_status,
/* ignore call_ctx for now */
- if (desired_name) {
- arg->desired_name = calloc(1, sizeof(gssx_name));
- if (!arg->desired_name) {
- ret_maj = GSS_S_FAILURE;
- ret_min = ENOMEM;
- goto done;
- }
- ret_maj = gp_conv_name_to_gssx(&ret_min,
- desired_name, arg->desired_name);
- if (ret_maj) {
- goto done;
- }
- }
+ arg->desired_name = desired_name;
+
if (desired_mechs) {
ret = gp_conv_oid_set_to_gssx(desired_mechs, &arg->desired_mechs);
if (ret) {
@@ -167,6 +156,8 @@ OM_uint32 gpm_acquire_cred(OM_uint32 *minor_status,
ret_min = 0;
done:
+ /* desired_name is passed in, don't let gpm_free_xdrs free it */
+ arg->desired_name = NULL;
gpm_free_xdrs(GSSX_ACQUIRE_CRED, &uarg, &ures);
*minor_status = ret_min;
return ret_maj;
@@ -174,7 +165,7 @@ done:
OM_uint32 gpm_add_cred(OM_uint32 *minor_status,
gssx_cred *input_cred_handle,
- const gss_name_t desired_name,
+ gssx_name *desired_name,
const gss_OID desired_mech,
gss_cred_usage_t cred_usage,
OM_uint32 initiator_time_req,
@@ -204,18 +195,9 @@ OM_uint32 gpm_add_cred(OM_uint32 *minor_status,
if (output_cred_handle != NULL) {
arg->add_cred_to_input_handle = true;
}
- if (desired_name != GSS_C_NO_NAME) {
- arg->desired_name = calloc(1, sizeof(gssx_name));
- if (!arg->desired_name) {
- ret = ENOMEM;
- goto done;
- }
- ret_maj = gp_conv_name_to_gssx(&ret_min,
- desired_name, arg->desired_name);
- if (ret_maj) {
- goto done;
- }
- }
+
+ arg->desired_name = desired_name;
+
if (desired_mech != GSS_C_NO_OID) {
mechs.count = 1;
mechs.elements = desired_mech;
@@ -404,7 +386,7 @@ done:
*mechanisms = mechs;
}
} else {
- (void)gpm_release_name(&ret_min, (gss_name_t *)&dname);
+ (void)gpm_release_name(&ret_min, &dname);
(void)gss_release_oid_set(&ret_min, &mechs);
}
return ret_maj;
@@ -490,7 +472,7 @@ OM_uint32 gpm_inquire_cred_by_mech(OM_uint32 *minor_status,
done:
*minor_status = ret_min;
if (ret_maj != GSS_S_COMPLETE) {
- (void)gpm_release_name(&ret_min, (gss_name_t *)&dname);
+ (void)gpm_release_name(&ret_min, &dname);
}
return ret_maj;
}
diff --git a/proxy/src/client/gpm_import_and_canon_name.c b/proxy/src/client/gpm_import_and_canon_name.c
index 9c60754..a4f9772 100644
--- a/proxy/src/client/gpm_import_and_canon_name.c
+++ b/proxy/src/client/gpm_import_and_canon_name.c
@@ -26,14 +26,12 @@
#include "gssapi_gpm.h"
OM_uint32 gpm_display_name(OM_uint32 *minor_status,
- gss_name_t input_name,
+ gssx_name *in_name,
gss_buffer_t output_name_buffer,
gss_OID *output_name_type)
{
gss_buffer_desc input_name_buffer = GSS_C_EMPTY_BUFFER;
gssx_name *output_name = NULL;
- gss_name_t tmp;
- gssx_name *name;
uint32_t ret_maj;
uint32_t ret_min;
uint32_t discard;
@@ -44,39 +42,36 @@ OM_uint32 gpm_display_name(OM_uint32 *minor_status,
}
*minor_status = 0;
- if (!input_name) {
+ if (!in_name) {
return GSS_S_CALL_INACCESSIBLE_READ;
}
if (!output_name_buffer) {
return GSS_S_CALL_INACCESSIBLE_WRITE;
}
- name = (gssx_name *)input_name;
-
- if (name->display_name.octet_string_len == 0) {
- if (name->exported_name.octet_string_len == 0) {
+ if (in_name->display_name.octet_string_len == 0) {
+ if (in_name->exported_name.octet_string_len == 0) {
return GSS_S_BAD_NAME;
}
- gp_conv_gssx_to_buffer(&name->exported_name, &input_name_buffer);
- tmp = (gss_name_t)output_name;
+ gp_conv_gssx_to_buffer(&in_name->exported_name, &input_name_buffer);
ret_maj = gpm_import_name(&ret_min, &input_name_buffer,
- GSS_C_NT_EXPORT_NAME, &tmp);
+ GSS_C_NT_EXPORT_NAME, &output_name);
if (ret_maj) {
goto done;
}
/* steal display_name and name_type */
- name->display_name = output_name->display_name;
+ in_name->display_name = output_name->display_name;
output_name->display_name.octet_string_len = 0;
output_name->display_name.octet_string_val = NULL;
- name->name_type = output_name->name_type;
+ in_name->name_type = output_name->name_type;
output_name->name_type.octet_string_len = 0;
output_name->name_type.octet_string_val = NULL;
}
- ret = gp_copy_gssx_to_buffer(&name->display_name, output_name_buffer);
+ ret = gp_copy_gssx_to_buffer(&in_name->display_name, output_name_buffer);
if (ret) {
ret_min = ret;
ret_maj = GSS_S_FAILURE;
@@ -84,7 +79,7 @@ OM_uint32 gpm_display_name(OM_uint32 *minor_status,
}
if (output_name_type) {
- ret = gp_conv_gssx_to_oid_alloc(&name->name_type, output_name_type);
+ ret = gp_conv_gssx_to_oid_alloc(&in_name->name_type, output_name_type);
if (ret) {
gss_release_buffer(&discard, output_name_buffer);
ret_min = ret;
@@ -108,7 +103,7 @@ done:
OM_uint32 gpm_import_name(OM_uint32 *minor_status,
gss_buffer_t input_name_buffer,
gss_OID input_name_type,
- gss_name_t *output_name)
+ gssx_name **output_name)
{
gssx_name *name;
int ret;
@@ -144,15 +139,14 @@ OM_uint32 gpm_import_name(OM_uint32 *minor_status,
return GSS_S_FAILURE;
}
- *output_name = (gss_name_t)name;
+ *output_name = name;
return GSS_S_COMPLETE;
}
OM_uint32 gpm_export_name(OM_uint32 *minor_status,
- const gss_name_t input_name,
+ gssx_name *input_name,
gss_buffer_t exported_name)
{
- gssx_name *name;
int ret;
if (!minor_status) {
@@ -164,13 +158,11 @@ OM_uint32 gpm_export_name(OM_uint32 *minor_status,
return GSS_S_CALL_INACCESSIBLE_READ;
}
- name = (gssx_name *)input_name;
-
- if (name->exported_name.octet_string_len == 0) {
+ if (input_name->exported_name.octet_string_len == 0) {
return GSS_S_NAME_NOT_MN;
}
- ret = gp_copy_gssx_to_buffer(&name->exported_name, exported_name);
+ ret = gp_copy_gssx_to_buffer(&input_name->exported_name, exported_name);
if (ret) {
*minor_status = ret;
return GSS_S_FAILURE;
@@ -179,28 +171,23 @@ OM_uint32 gpm_export_name(OM_uint32 *minor_status,
}
OM_uint32 gpm_duplicate_name(OM_uint32 *minor_status,
- const gss_name_t input_name,
- gss_name_t *dest_name)
+ gssx_name *input_name,
+ gssx_name **dest_name)
{
- gssx_name *name;
- gssx_name *namecopy;
int ret;
- name = (gssx_name *)input_name;
-
- ret = gp_copy_gssx_name_alloc(name, &namecopy);
+ ret = gp_copy_gssx_name_alloc(input_name, dest_name);
if (ret) {
*minor_status = ret;
return GSS_S_FAILURE;
}
- *dest_name = (gss_name_t)namecopy;
return GSS_S_COMPLETE;
}
OM_uint32 gpm_canonicalize_name(OM_uint32 *minor_status,
- const gss_name_t input_name,
+ gssx_name *input_name,
const gss_OID mech_type,
- gss_name_t *output_name)
+ gssx_name **output_name)
{
union gp_rpc_arg uarg;
union gp_rpc_res ures;
@@ -208,7 +195,6 @@ OM_uint32 gpm_canonicalize_name(OM_uint32 *minor_status,
gssx_res_import_and_canon_name *res = &ures.import_and_canon_name;
uint32_t ret_maj;
uint32_t ret_min;
- gssx_name *name;
int ret;
if (!minor_status) {
@@ -223,14 +209,12 @@ OM_uint32 gpm_canonicalize_name(OM_uint32 *minor_status,
return GSS_S_CALL_INACCESSIBLE_WRITE;
}
- name = (gssx_name *)input_name;
-
memset(arg, 0, sizeof(gssx_arg_import_and_canon_name));
memset(res, 0, sizeof(gssx_res_import_and_canon_name));
/* ignore call_ctx for now */
- ret = gp_copy_gssx_name(name, &arg->input_name);
+ ret = gp_copy_gssx_name(input_name, &arg->input_name);
if (ret) {
goto done;
}
@@ -254,7 +238,7 @@ OM_uint32 gpm_canonicalize_name(OM_uint32 *minor_status,
}
/* steal output_name */
- *output_name = (gss_name_t)res->output_name;
+ *output_name = res->output_name;
res->output_name = NULL;
done:
@@ -268,40 +252,38 @@ done:
}
OM_uint32 gpm_inquire_name(OM_uint32 *minor_status,
- gss_name_t name,
+ gssx_name *name,
int *name_is_MN,
gss_OID *MN_mech,
gss_buffer_set_t *attrs)
{
gss_buffer_set_t xattrs = GSS_C_NO_BUFFER_SET;
- gssx_name *xname;
uint32_t i;
int ret;
*minor_status = 0;
- xname = (gssx_name *)name;
- if (xname->exported_name.octet_string_len != 0) {
+ if (name->exported_name.octet_string_len != 0) {
if (name_is_MN != NULL) {
*name_is_MN = 1;
}
}
if (MN_mech != NULL) {
- ret = gp_conv_gssx_to_oid_alloc(&xname->name_type, MN_mech);
+ ret = gp_conv_gssx_to_oid_alloc(&name->name_type, MN_mech);
if (ret) {
*minor_status = ret;
return GSS_S_FAILURE;
}
}
- if (xname->name_attributes.name_attributes_len != 0) {
+ if (name->name_attributes.name_attributes_len != 0) {
xattrs = calloc(1, sizeof(gss_buffer_set_desc));
if (!xattrs) {
*minor_status = ENOMEM;
return GSS_S_FAILURE;
}
- xattrs->count = xname->name_attributes.name_attributes_len;
+ xattrs->count = name->name_attributes.name_attributes_len;
xattrs->elements = calloc(xattrs->count, sizeof(gss_buffer_desc));
if (!xattrs->elements) {
free(xattrs);
@@ -310,7 +292,7 @@ OM_uint32 gpm_inquire_name(OM_uint32 *minor_status,
}
for (i = 0; i < xattrs->count; i++) {
ret = gp_copy_gssx_to_buffer(
- &xname->name_attributes.name_attributes_val[i].attr,
+ &name->name_attributes.name_attributes_val[i].attr,
&xattrs->elements[i]);
if (ret) {
for (--i; i >= 0; i--) {
@@ -329,14 +311,14 @@ OM_uint32 gpm_inquire_name(OM_uint32 *minor_status,
}
OM_uint32 gpm_release_name(OM_uint32 *minor_status,
- gss_name_t *input_name)
+ gssx_name **input_name)
{
*minor_status = 0;
- if (*input_name != GSS_C_NO_NAME) {
+ if (*input_name != NULL) {
xdr_free((xdrproc_t)xdr_gssx_name, (char *)(*input_name));
free(*input_name);
- *input_name = GSS_C_NO_NAME;
+ *input_name = NULL;
}
return GSS_S_COMPLETE;
}
@@ -356,12 +338,12 @@ OM_uint32 gpm_compare_name(OM_uint32 *minor_status,
*name_equal = 0;
- ret_maj = gpm_display_name(&ret_min, (gss_name_t)name1, &buf1, &type1);
+ ret_maj = gpm_display_name(&ret_min, name1, &buf1, &type1);
if (ret_maj != GSS_S_COMPLETE) {
goto done;
}
- ret_maj = gpm_display_name(&ret_min, (gss_name_t)name2, &buf2, &type2);
+ ret_maj = gpm_display_name(&ret_min, name2, &buf2, &type2);
if (ret_maj != GSS_S_COMPLETE) {
goto done;
}
diff --git a/proxy/src/client/gpm_indicate_mechs.c b/proxy/src/client/gpm_indicate_mechs.c
index 693e588..257541a 100644
--- a/proxy/src/client/gpm_indicate_mechs.c
+++ b/proxy/src/client/gpm_indicate_mechs.c
@@ -390,13 +390,12 @@ OM_uint32 gpm_inquire_names_for_mech(OM_uint32 *minor_status,
}
OM_uint32 gpm_inquire_mechs_for_name(OM_uint32 *minor_status,
- const gss_name_t input_name,
+ gssx_name *input_name,
gss_OID_set *mech_types)
{
uint32_t ret_min;
uint32_t ret_maj;
uint32_t discard;
- gssx_name *name;
gss_OID name_type = GSS_C_NO_OID;
int present;
int i;
@@ -415,8 +414,7 @@ OM_uint32 gpm_inquire_mechs_for_name(OM_uint32 *minor_status,
return GSS_S_FAILURE;
}
- name = (gssx_name *)input_name;
- ret_min = gp_conv_gssx_to_oid_alloc(&name->name_type, &name_type);
+ ret_min = gp_conv_gssx_to_oid_alloc(&input_name->name_type, &name_type);
if (ret_min) {
ret_maj = GSS_S_FAILURE;
goto done;
diff --git a/proxy/src/client/gpm_init_sec_context.c b/proxy/src/client/gpm_init_sec_context.c
index ab6ed80..12df858 100644
--- a/proxy/src/client/gpm_init_sec_context.c
+++ b/proxy/src/client/gpm_init_sec_context.c
@@ -29,7 +29,7 @@
OM_uint32 gpm_init_sec_context(OM_uint32 *minor_status,
gssx_cred *cred_handle,
gssx_ctx **context_handle,
- gss_name_t target_name,
+ gssx_name *target_name,
gss_OID mech_type,
OM_uint32 req_flags,
OM_uint32 time_req,
@@ -63,9 +63,7 @@ OM_uint32 gpm_init_sec_context(OM_uint32 *minor_status,
arg->context_handle = *context_handle;
}
- if (target_name != GSS_C_NO_NAME) {
- arg->target_name = (gssx_name *)target_name;
- }
+ arg->target_name = target_name;
ret = gp_conv_oid_to_gssx(mech_type, &arg->mech_type);
if (ret) {
diff --git a/proxy/src/client/gpm_inquire_context.c b/proxy/src/client/gpm_inquire_context.c
index e417159..24ad5d1 100644
--- a/proxy/src/client/gpm_inquire_context.c
+++ b/proxy/src/client/gpm_inquire_context.c
@@ -50,8 +50,8 @@ OM_uint32 gpm_inquire_context(OM_uint32 *minor_status,
if (src_name) {
ret_maj = gpm_duplicate_name(minor_status,
- (gss_name_t)&context_handle->src_name,
- (gss_name_t *)src_name);
+ &context_handle->src_name,
+ src_name);
if (ret_maj != GSS_S_COMPLETE) {
return ret_maj;
}
@@ -59,11 +59,11 @@ OM_uint32 gpm_inquire_context(OM_uint32 *minor_status,
if (targ_name) {
ret_maj = gpm_duplicate_name(minor_status,
- (gss_name_t)&context_handle->targ_name,
- (gss_name_t *)targ_name);
+ &context_handle->targ_name,
+ targ_name);
if (ret_maj != GSS_S_COMPLETE) {
if (src_name) {
- (void)gpm_release_name(&tmp_min, (gss_name_t *)src_name);
+ (void)gpm_release_name(&tmp_min, src_name);
}
return ret_maj;
}
@@ -77,10 +77,10 @@ OM_uint32 gpm_inquire_context(OM_uint32 *minor_status,
ret = gp_conv_gssx_to_oid_alloc(&context_handle->mech, mech_type);
if (ret) {
if (src_name) {
- (void)gpm_release_name(&tmp_min, (gss_name_t *)src_name);
+ (void)gpm_release_name(&tmp_min, src_name);
}
if (targ_name) {
- (void)gpm_release_name(&tmp_min, (gss_name_t *)targ_name);
+ (void)gpm_release_name(&tmp_min, targ_name);
}
*minor_status = ret;
return GSS_S_FAILURE;
diff --git a/proxy/src/client/gssapi_gpm.h b/proxy/src/client/gssapi_gpm.h
index 2766354..706a6de 100644
--- a/proxy/src/client/gssapi_gpm.h
+++ b/proxy/src/client/gssapi_gpm.h
@@ -41,7 +41,7 @@ int gpm_make_call(int proc, union gp_rpc_arg *arg, union gp_rpc_res *res);
void gpm_free_xdrs(int proc, union gp_rpc_arg *arg, union gp_rpc_res *res);
OM_uint32 gpm_release_name(OM_uint32 *minor_status,
- gss_name_t *input_name);
+ gssx_name **input_name);
OM_uint32 gpm_release_buffer(OM_uint32 *minor_status,
gss_buffer_t buffer);
@@ -60,7 +60,7 @@ OM_uint32 gpm_accept_sec_context(OM_uint32 *minor_status,
gssx_cred *acceptor_cred_handle,
gss_buffer_t input_token_buffer,
gss_channel_bindings_t input_chan_bindings,
- gss_name_t *src_name,
+ gssx_name **src_name,
gss_OID *mech_type,
gss_buffer_t output_token,
OM_uint32 *ret_flags,
@@ -75,7 +75,7 @@ OM_uint32 gpm_delete_sec_context(OM_uint32 *minor_status,
gss_buffer_t output_token);
OM_uint32 gpm_acquire_cred(OM_uint32 *minor_status,
- const gss_name_t desired_name,
+ gssx_name *desired_name,
OM_uint32 time_req,
const gss_OID_set desired_mechs,
gss_cred_usage_t cred_usage,
@@ -85,7 +85,7 @@ OM_uint32 gpm_acquire_cred(OM_uint32 *minor_status,
OM_uint32 gpm_add_cred(OM_uint32 *minor_status,
gssx_cred *input_cred_handle,
- const gss_name_t desired_name,
+ gssx_name *desired_name,
const gss_OID desired_mech,
gss_cred_usage_t cred_usage,
OM_uint32 initiator_time_req,
@@ -113,7 +113,7 @@ OM_uint32 gpm_inquire_names_for_mech(OM_uint32 *minor_status,
gss_OID mech_type,
gss_OID_set *mech_names);
OM_uint32 gpm_inquire_mechs_for_name(OM_uint32 *minor_status,
- const gss_name_t input_name,
+ gssx_name *input_name,
gss_OID_set *mech_types);
OM_uint32 gpm_inquire_attrs_for_mech(OM_uint32 *minor_status,
gss_OID mech,
@@ -136,25 +136,25 @@ OM_uint32 gpm_indicate_mechs_by_attrs(OM_uint32 *minor_status,
gss_OID_set *mechs);
OM_uint32 gpm_display_name(OM_uint32 *minor_status,
- gss_name_t input_name,
+ gssx_name *in_name,
gss_buffer_t output_name_buffer,
gss_OID *output_name_type);
OM_uint32 gpm_import_name(OM_uint32 *minor_status,
gss_buffer_t input_name_buffer,
gss_OID input_name_type,
- gss_name_t *output_name);
+ gssx_name **output_name);
OM_uint32 gpm_export_name(OM_uint32 *minor_status,
- const gss_name_t input_name,
+ gssx_name *input_name,
gss_buffer_t exported_name);
OM_uint32 gpm_duplicate_name(OM_uint32 *minor_status,
- const gss_name_t input_name,
- gss_name_t *dest_name);
+ gssx_name *input_name,
+ gssx_name **dest_name);
OM_uint32 gpm_canonicalize_name(OM_uint32 *minor_status,
- const gss_name_t input_name,
+ gssx_name *input_name,
const gss_OID mech_type,
- gss_name_t *output_name);
+ gssx_name **output_name);
OM_uint32 gpm_inquire_name(OM_uint32 *minor_status,
- gss_name_t name,
+ gssx_name *name,
int *name_is_NM,
gss_OID *NM_mech,
gss_buffer_set_t *attrs);
@@ -166,7 +166,7 @@ OM_uint32 gpm_compare_name(OM_uint32 *minor_status,
OM_uint32 gpm_init_sec_context(OM_uint32 *minor_status,
gssx_cred *cred_handle,
gssx_ctx **context_handle,
- gss_name_t target_name,
+ gssx_name *target_name,
gss_OID mech_type,
OM_uint32 req_flags,
OM_uint32 time_req,