X-Git-Url: http://www.project-moonshot.org/gitweb/?p=mech_eap.git;a=blobdiff_plain;f=mech_eap%2Futil_crypt.c;h=9906b8377f0b64ef2bba005c6e44049f8e7d0aeb;hp=8d7a9d3545110213f8e007aac7993d07ed2cae79;hb=HEAD;hpb=050ab60a59bd3c6fb6ad974cf5cf09f10a3917ff diff --git a/mech_eap/util_crypt.c b/mech_eap/util_crypt.c index 8d7a9d3..9906b83 100644 --- a/mech_eap/util_crypt.c +++ b/mech_eap/util_crypt.c @@ -112,10 +112,10 @@ mapIov(krb5_context context, int dce_style, size_t ec, size_t rrc, *pkiov_count = 0; header = gssEapLocateIov(iov, iov_count, GSS_IOV_BUFFER_TYPE_HEADER); - assert(header != NULL); + GSSEAP_ASSERT(header != NULL); trailer = gssEapLocateIov(iov, iov_count, GSS_IOV_BUFFER_TYPE_TRAILER); - assert(trailer == NULL || rrc == 0); + GSSEAP_ASSERT(trailer == NULL || rrc == 0); code = krbCryptoLength(context, crypto, KRB5_CRYPTO_TYPE_HEADER, &k5_headerlen); if (code != 0) @@ -140,7 +140,6 @@ mapIov(krb5_context context, int dce_style, size_t ec, size_t rrc, return KRB5_BAD_MSIZE; gss_headerlen += gss_trailerlen; - gss_trailerlen = 0; } else { if (trailer->buffer.length != gss_trailerlen) return KRB5_BAD_MSIZE; @@ -316,6 +315,15 @@ gssEapLocateIov(gss_iov_buffer_desc *iov, int iov_count, OM_uint32 type) return p; } +gss_iov_buffer_t +gssEapLocateHeaderIov(gss_iov_buffer_desc *iov, int iov_count, enum gss_eap_token_type toktype) +{ + if (toktype == TOK_TYPE_MIC) + return gssEapLocateIov(iov, iov_count, GSS_IOV_BUFFER_TYPE_MIC_TOKEN); + else + return gssEapLocateIov(iov, iov_count, GSS_IOV_BUFFER_TYPE_HEADER); +} + void gssEapIovMessageLength(gss_iov_buffer_desc *iov, int iov_count, @@ -325,7 +333,7 @@ gssEapIovMessageLength(gss_iov_buffer_desc *iov, int i; size_t data_length = 0, assoc_data_length = 0; - assert(iov != GSS_C_NO_IOV_BUFFER); + GSSEAP_ASSERT(iov != GSS_C_NO_IOV_BUFFER); *data_length_p = *assoc_data_length_p = 0; @@ -350,7 +358,7 @@ gssEapReleaseIov(gss_iov_buffer_desc *iov, int iov_count) int i; OM_uint32 min_stat; - assert(iov != GSS_C_NO_IOV_BUFFER); + GSSEAP_ASSERT(iov != GSS_C_NO_IOV_BUFFER); for (i = 0; i < iov_count; i++) { if (iov[i].type & GSS_IOV_BUFFER_FLAG_ALLOCATED) { @@ -366,7 +374,7 @@ gssEapIsIntegrityOnly(gss_iov_buffer_desc *iov, int iov_count) int i; krb5_boolean has_conf_data = FALSE; - assert(iov != GSS_C_NO_IOV_BUFFER); + GSSEAP_ASSERT(iov != GSS_C_NO_IOV_BUFFER); for (i = 0; i < iov_count; i++) { if (GSS_IOV_BUFFER_TYPE(iov[i].type) == GSS_IOV_BUFFER_TYPE_DATA) { @@ -381,8 +389,8 @@ gssEapIsIntegrityOnly(gss_iov_buffer_desc *iov, int iov_count) int gssEapAllocIov(gss_iov_buffer_t iov, size_t size) { - assert(iov != GSS_C_NO_IOV_BUFFER); - assert(iov->type & GSS_IOV_BUFFER_FLAG_ALLOCATE); + GSSEAP_ASSERT(iov != GSS_C_NO_IOV_BUFFER); + GSSEAP_ASSERT(iov->type & GSS_IOV_BUFFER_FLAG_ALLOCATE); iov->buffer.length = size; iov->buffer.value = GSSEAP_MALLOC(size);