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:
@@ -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)
|
||||||
|
Reference in New Issue
Block a user