(_gss_spnego_inquire_context): make work, based on patch from Ryan Sleevi.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@22604 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2008-02-21 21:12:48 +00:00
parent 9ab98baf5b
commit 2b90d952c6

View File

@@ -394,28 +394,58 @@ OM_uint32 _gss_spnego_inquire_context (
)
{
gssspnego_ctx ctx;
OM_uint32 maj_stat, junk;
gss_name_t src_mn, targ_mn;
*minor_status = 0;
if (context_handle == GSS_C_NO_CONTEXT) {
if (context_handle == GSS_C_NO_CONTEXT)
return GSS_S_NO_CONTEXT;
}
ctx = (gssspnego_ctx)context_handle;
if (ctx->negotiated_ctx_id == GSS_C_NO_CONTEXT) {
if (ctx->negotiated_ctx_id == GSS_C_NO_CONTEXT)
return GSS_S_NO_CONTEXT;
}
return gss_inquire_context(minor_status,
ctx->negotiated_ctx_id,
src_name,
targ_name,
lifetime_rec,
mech_type,
ctx_flags,
locally_initiated,
open_context);
maj_stat = gss_inquire_context(minor_status,
ctx->negotiated_ctx_id,
&src_mn,
&targ_mn,
lifetime_rec,
mech_type,
ctx_flags,
locally_initiated,
open_context);
if (maj_stat != GSS_S_COMPLETE)
return maj_stat;
if (src_name) {
spnego_name name = calloc(1, sizeof(*name));
if (name == NULL)
goto enomem;
name->mech = src_mn;
*src_name = (gss_name_t)name;
} else
gss_release_name(&junk, &src_mn);
if (targ_name) {
spnego_name name = calloc(1, sizeof(*name));
if (name == NULL) {
gss_release_name(minor_status, src_name);
goto enomem;
}
name->mech = targ_mn;
*targ_name = (gss_name_t)name;
} else
gss_release_name(&junk, &targ_mn);
return GSS_S_COMPLETE;
enomem:
gss_release_name(&junk, &targ_mn);
gss_release_name(&junk, &src_mn);
*minor_status = ENOMEM;
return GSS_S_FAILURE;
}
OM_uint32 _gss_spnego_wrap_size_limit (