From 520fa3cab2174c46802e05d4accaba1418453135 Mon Sep 17 00:00:00 2001 From: Kevin Mitchell Date: Fri, 7 Jun 1996 19:22:25 +0000 Subject: [PATCH] Changed `mutual' element of struct _krb5_gss_ctx_id_rec into more general `gss_flags' and updated functions that process it; now get delegation flag set properly :) git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@8275 dc483132-0cff-0310-8789-dd5450dbe970 --- src/lib/gssapi/krb5/ChangeLog | 7 +++++++ src/lib/gssapi/krb5/accept_sec_context.c | 7 ++++--- src/lib/gssapi/krb5/gssapiP_krb5.h | 2 +- src/lib/gssapi/krb5/init_sec_context.c | 11 ++++++----- src/lib/gssapi/krb5/inq_context.c | 2 +- src/lib/gssapi/krb5/ser_sctx.c | 4 ++-- 6 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/lib/gssapi/krb5/ChangeLog b/src/lib/gssapi/krb5/ChangeLog index 88112479a..27512e776 100644 --- a/src/lib/gssapi/krb5/ChangeLog +++ b/src/lib/gssapi/krb5/ChangeLog @@ -1,3 +1,10 @@ +Fri Jun 7 14:52:56 1996 Kevin L Mitchell + + * accept_sec_context.c, init_sec_context.c, inq_context.c, + gssapiP_krb5.h: changed `mutual' element of struct + _krb5_gss_ctx_id_rec into more general `gss_flags' and + updated functions that process it + Tue May 14 19:09:49 1996 Richard Basch * k5seal.c k5unseal.c util_cksum.c: diff --git a/src/lib/gssapi/krb5/accept_sec_context.c b/src/lib/gssapi/krb5/accept_sec_context.c index 7c0d11743..79d41b71d 100644 --- a/src/lib/gssapi/krb5/accept_sec_context.c +++ b/src/lib/gssapi/krb5/accept_sec_context.c @@ -315,7 +315,8 @@ krb5_gss_accept_sec_context(ct, minor_status, context_handle, memset(ctx, 0, sizeof(krb5_gss_ctx_id_rec)); ctx->auth_context = auth_context; ctx->initiate = 0; - ctx->mutual = gss_flags & GSS_C_MUTUAL_FLAG; + ctx->gss_flags = GSS_C_CONF_FLAG | GSS_C_INTEG_FLAG | + (gss_flags & (GSS_C_MUTUAL_FLAG | GSS_C_DELEG_FLAG)); ctx->seed_init = 0; ctx->big_endian = bigend; @@ -370,7 +371,7 @@ krb5_gss_accept_sec_context(ct, minor_status, context_handle, /* generate an AP_REP if necessary */ - if (ctx->mutual) { + if (ctx->gss_flags & GSS_C_MUTUAL_FLAG) { krb5_data ap_rep; unsigned char * ptr; if ((code = krb5_mk_rep(context, auth_context, &ap_rep))) { @@ -433,7 +434,7 @@ krb5_gss_accept_sec_context(ct, minor_status, context_handle, } if (ret_flags) - *ret_flags = GSS_C_CONF_FLAG | GSS_C_INTEG_FLAG | ctx->mutual; + *ret_flags = ctx->gss_flags; ctx->established = 1; diff --git a/src/lib/gssapi/krb5/gssapiP_krb5.h b/src/lib/gssapi/krb5/gssapiP_krb5.h index a7aebbef7..53c4f4691 100644 --- a/src/lib/gssapi/krb5/gssapiP_krb5.h +++ b/src/lib/gssapi/krb5/gssapiP_krb5.h @@ -83,7 +83,7 @@ typedef struct _krb5_gss_enc_desc { typedef struct _krb5_gss_ctx_id_rec { int initiate; /* nonzero if initiating, zero if accepting */ - OM_uint32 mutual; + OM_uint32 gss_flags; int seed_init; unsigned char seed[16]; krb5_principal here; diff --git a/src/lib/gssapi/krb5/init_sec_context.c b/src/lib/gssapi/krb5/init_sec_context.c index d1eac9f40..2b671680a 100644 --- a/src/lib/gssapi/krb5/init_sec_context.c +++ b/src/lib/gssapi/krb5/init_sec_context.c @@ -305,7 +305,8 @@ krb5_gss_init_sec_context(ct, minor_status, claimant_cred_handle, memset(ctx, 0, sizeof(krb5_gss_ctx_id_rec)); ctx->auth_context = NULL; ctx->initiate = 1; - ctx->mutual = req_flags & GSS_C_MUTUAL_FLAG; + ctx->gss_flags = ((req_flags & (GSS_C_MUTUAL_FLAG | GSS_C_DELEG_FLAG)) | + GSS_C_CONF_FLAG | GSS_C_INTEG_FLAG); ctx->flags = req_flags & GSS_C_DELEG_FLAG; ctx->seed_init = 0; ctx->big_endian = 0; /* all initiators do little-endian, as per spec */ @@ -337,7 +338,8 @@ krb5_gss_init_sec_context(ct, minor_status, claimant_cred_handle, if ((code = make_ap_req(context, &(ctx->auth_context), cred, ctx->there, &ctx->endtime, input_chan_bindings, - ctx->mutual, &ctx->flags, &token))) { + ctx->gss_flags & GSS_C_MUTUAL_FLAG, &ctx->flags, + &token))) { krb5_free_principal(context, ctx->here); krb5_free_principal(context, ctx->there); xfree(ctx); @@ -403,13 +405,12 @@ krb5_gss_init_sec_context(ct, minor_status, claimant_cred_handle, *output_token = token; if (ret_flags) - *ret_flags = ((req_flags & (GSS_C_MUTUAL_FLAG | GSS_C_DELEG_FLAG)) | - GSS_C_CONF_FLAG | GSS_C_INTEG_FLAG); + *ret_flags = ctx->gss_flags; /* return successfully */ *minor_status = 0; - if (ctx->mutual) { + if (ctx->gss_flags & GSS_C_MUTUAL_FLAG) { ctx->established = 0; return(GSS_S_CONTINUE_NEEDED); } else { diff --git a/src/lib/gssapi/krb5/inq_context.c b/src/lib/gssapi/krb5/inq_context.c index 8ccd8fbb9..c8499212f 100644 --- a/src/lib/gssapi/krb5/inq_context.c +++ b/src/lib/gssapi/krb5/inq_context.c @@ -119,7 +119,7 @@ krb5_gss_inquire_context(ct, minor_status, context_handle, initiator_name, *mech_type = (gss_OID) gss_mech_krb5; if (ret_flags) - *ret_flags = GSS_C_CONF_FLAG | GSS_C_INTEG_FLAG | ctx->mutual; + *ret_flags = ctx->gss_flags; if (locally_initiated) *locally_initiated = ctx->initiate; diff --git a/src/lib/gssapi/krb5/ser_sctx.c b/src/lib/gssapi/krb5/ser_sctx.c index 7b64f7421..5acfd5c67 100644 --- a/src/lib/gssapi/krb5/ser_sctx.c +++ b/src/lib/gssapi/krb5/ser_sctx.c @@ -578,7 +578,7 @@ kg_ctx_externalize(kcontext, arg, buffer, lenremain) /* Now static data */ (void) krb5_ser_pack_int32((krb5_int32) ctx->initiate, &bp, &remain); - (void) krb5_ser_pack_int32((krb5_int32) ctx->mutual, + (void) krb5_ser_pack_int32((krb5_int32) ctx->gss_flags, &bp, &remain); (void) krb5_ser_pack_int32((krb5_int32) ctx->seed_init, &bp, &remain); @@ -683,7 +683,7 @@ kg_ctx_internalize(kcontext, argp, buffer, lenremain) (void) krb5_ser_unpack_int32(&ibuf, &bp, &remain); ctx->initiate = (int) ibuf; (void) krb5_ser_unpack_int32(&ibuf, &bp, &remain); - ctx->mutual = (int) ibuf; + ctx->gss_flags = (int) ibuf; (void) krb5_ser_unpack_int32(&ibuf, &bp, &remain); ctx->seed_init = (int) ibuf; (void) krb5_ser_unpack_bytes((krb5_octet *) ctx->seed, -- 2.26.2