aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTomas Kuthan <tkuthan@gmail.com>2015-09-16 12:13:26 +0200
committerTom Yu <tlyu@mit.edu>2015-12-02 13:37:19 -0500
commit7403bd7c97821fe47e5d5ca83d216748aaa03d7e (patch)
tree8c33077bff3832b3f8229a62b41073b842061d7d /src
parent4ee83fe47f09a92f0ede9f40f02321df78f94c4e (diff)
downloadkrb5-7403bd7c97821fe47e5d5ca83d216748aaa03d7e.zip
krb5-7403bd7c97821fe47e5d5ca83d216748aaa03d7e.tar.gz
krb5-7403bd7c97821fe47e5d5ca83d216748aaa03d7e.tar.bz2
Fix error mappings for IOV MIC mechglue funcs
The mechglue functions gss_get_mic_iov(), gss_get_mic_iov_length(), and gss_verify_mic_iov() don't call map_error() to map mechanism-specific error codes. As a result, a subsequent call to gss_display_status() fails with GSS_S_BAD_MECH, because no translation for the error code is found in the error table. This patch adds the missing map_error call. [ghudson@mit.edu: correct a whitespace issue, edit commit message] (cherry picked from commit 969c976ff021db7e409ce9a38d28316d9acfa2cc) ticket: 8289 (new) version_fixed: 1.13.3 status: resolved
Diffstat (limited to 'src')
-rw-r--r--src/lib/gssapi/mechglue/g_unwrap_iov.c7
-rw-r--r--src/lib/gssapi/mechglue/g_wrap_iov.c14
2 files changed, 15 insertions, 6 deletions
diff --git a/src/lib/gssapi/mechglue/g_unwrap_iov.c b/src/lib/gssapi/mechglue/g_unwrap_iov.c
index 9b95c01..c0dd314 100644
--- a/src/lib/gssapi/mechglue/g_unwrap_iov.c
+++ b/src/lib/gssapi/mechglue/g_unwrap_iov.c
@@ -133,6 +133,9 @@ gss_verify_mic_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
return GSS_S_BAD_MECH;
if (mech->gss_verify_mic_iov == NULL)
return GSS_S_UNAVAILABLE;
- return mech->gss_verify_mic_iov(minor_status, ctx->internal_ctx_id,
- qop_state, iov, iov_count);
+ status = mech->gss_verify_mic_iov(minor_status, ctx->internal_ctx_id,
+ qop_state, iov, iov_count);
+ if (status != GSS_S_COMPLETE)
+ map_error(minor_status, mech);
+ return status;
}
diff --git a/src/lib/gssapi/mechglue/g_wrap_iov.c b/src/lib/gssapi/mechglue/g_wrap_iov.c
index 17a2537..40cd98f 100644
--- a/src/lib/gssapi/mechglue/g_wrap_iov.c
+++ b/src/lib/gssapi/mechglue/g_wrap_iov.c
@@ -195,8 +195,11 @@ gss_get_mic_iov(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
return GSS_S_BAD_MECH;
if (mech->gss_get_mic_iov == NULL)
return GSS_S_UNAVAILABLE;
- return mech->gss_get_mic_iov(minor_status, ctx->internal_ctx_id, qop_req,
- iov, iov_count);
+ status = mech->gss_get_mic_iov(minor_status, ctx->internal_ctx_id, qop_req,
+ iov, iov_count);
+ if (status != GSS_S_COMPLETE)
+ map_error(minor_status, mech);
+ return status;
}
OM_uint32 KRB5_CALLCONV
@@ -220,8 +223,11 @@ gss_get_mic_iov_length(OM_uint32 *minor_status, gss_ctx_id_t context_handle,
return GSS_S_BAD_MECH;
if (mech->gss_get_mic_iov_length == NULL)
return GSS_S_UNAVAILABLE;
- return mech->gss_get_mic_iov_length(minor_status, ctx->internal_ctx_id,
- qop_req, iov, iov_count);
+ status = mech->gss_get_mic_iov_length(minor_status, ctx->internal_ctx_id,
+ qop_req, iov, iov_count);
+ if (status != GSS_S_COMPLETE)
+ map_error(minor_status, mech);
+ return status;
}
OM_uint32 KRB5_CALLCONV