check return value from krb5_decrypt_iov_ivec

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24129 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2008-12-11 05:04:39 +00:00
parent 76f849a64a
commit bb8485b49c

View File

@@ -103,7 +103,6 @@ _gk_wrap_iov(OM_uint32 * minor_status,
gss_iov_buffer_desc *iov) gss_iov_buffer_desc *iov)
{ {
gsskrb5_ctx ctx = (gsskrb5_ctx) context_handle; gsskrb5_ctx ctx = (gsskrb5_ctx) context_handle;
krb5_crypto crypto = NULL;
krb5_context context; krb5_context context;
OM_uint32 major_status, junk; OM_uint32 major_status, junk;
krb5_crypto_iov *data; krb5_crypto_iov *data;
@@ -135,7 +134,7 @@ _gk_wrap_iov(OM_uint32 * minor_status,
usage = KRB5_KU_USAGE_INITIATOR_SIGN; usage = KRB5_KU_USAGE_INITIATOR_SIGN;
} }
*minor_status = krb5_encrypt_iov_ivec(context, crypto, usage, *minor_status = krb5_encrypt_iov_ivec(context, ctx->crypto, usage,
data, iov_count, NULL); data, iov_count, NULL);
free(data); free(data);
if (major_status != GSS_S_COMPLETE) { if (major_status != GSS_S_COMPLETE) {
@@ -156,8 +155,8 @@ _gk_unwrap_iov(OM_uint32 *minor_status,
gss_iov_buffer_desc *iov) gss_iov_buffer_desc *iov)
{ {
gsskrb5_ctx ctx = (gsskrb5_ctx) context_handle; gsskrb5_ctx ctx = (gsskrb5_ctx) context_handle;
krb5_crypto crypto = NULL;
krb5_context context; krb5_context context;
krb5_error_code ret;
OM_uint32 major_status, junk; OM_uint32 major_status, junk;
krb5_crypto_iov *data; krb5_crypto_iov *data;
unsigned usage; unsigned usage;
@@ -188,12 +187,13 @@ _gk_unwrap_iov(OM_uint32 *minor_status,
usage = KRB5_KU_USAGE_ACCEPTOR_SIGN; usage = KRB5_KU_USAGE_ACCEPTOR_SIGN;
} }
*minor_status = krb5_decrypt_iov_ivec(context, crypto, usage, ret = krb5_decrypt_iov_ivec(context, ctx->crypto, usage,
data, iov_count, NULL); data, iov_count, NULL);
free(data); free(data);
if (major_status != GSS_S_COMPLETE) { if (ret) {
*minor_status = ret;
gss_release_iov_buffer(&junk, iov_count, iov); gss_release_iov_buffer(&junk, iov_count, iov);
return major_status; return GSS_S_FAILURE;
} }
*minor_status = 0; *minor_status = 0;
@@ -208,8 +208,8 @@ _gk_wrap_iov_length(OM_uint32 * minor_status,
int iov_count, int iov_count,
gss_iov_buffer_desc *iov) gss_iov_buffer_desc *iov)
{ {
gsskrb5_ctx ctx = (gsskrb5_ctx) context_handle;
krb5_context context; krb5_context context;
krb5_crypto crypto = NULL;
unsigned int i; unsigned int i;
size_t size; size_t size;
size_t *padding = NULL; size_t *padding = NULL;
@@ -226,12 +226,12 @@ _gk_wrap_iov_length(OM_uint32 * minor_status,
break; break;
case GSS_IOV_BUFFER_TYPE_HEADER: case GSS_IOV_BUFFER_TYPE_HEADER:
iov[i].buffer.length = iov[i].buffer.length =
krb5_crypto_length(context, crypto, KRB5_CRYPTO_TYPE_HEADER); krb5_crypto_length(context, ctx->crypto, KRB5_CRYPTO_TYPE_HEADER);
size += iov[i].buffer.length; size += iov[i].buffer.length;
break; break;
case GSS_IOV_BUFFER_TYPE_TRAILER: case GSS_IOV_BUFFER_TYPE_TRAILER:
iov[i].buffer.length = iov[i].buffer.length =
krb5_crypto_length(context, crypto, KRB5_CRYPTO_TYPE_TRAILER); krb5_crypto_length(context, ctx->crypto, KRB5_CRYPTO_TYPE_TRAILER);
size += iov[i].buffer.length; size += iov[i].buffer.length;
break; break;
case GSS_IOV_BUFFER_TYPE_PADDING: case GSS_IOV_BUFFER_TYPE_PADDING:
@@ -250,7 +250,8 @@ _gk_wrap_iov_length(OM_uint32 * minor_status,
} }
} }
if (padding) { if (padding) {
size_t pad = krb5_crypto_length(context, crypto, KRB5_CRYPTO_TYPE_PADDING); size_t pad = krb5_crypto_length(context, ctx->crypto,
KRB5_CRYPTO_TYPE_PADDING);
if (pad > 1) { if (pad > 1) {
*padding = pad - (size % pad); *padding = pad - (size % pad);
if (*padding == pad) if (*padding == pad)