From 460e750a94de784e2ea7b3ebd7224ce30aa5b280 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zden=C4=9Bk=20Salvet?= Date: Mon, 24 Sep 2007 12:49:44 +0000 Subject: [PATCH] Fill in error details from edg_wll_gss_read() after error in gss_unwrap() (random garbage was interpreted by callers before). --- org.glite.security.gsoap-plugin/src/glite_gss.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/org.glite.security.gsoap-plugin/src/glite_gss.c b/org.glite.security.gsoap-plugin/src/glite_gss.c index fc8437f..970f1af 100644 --- a/org.glite.security.gsoap-plugin/src/glite_gss.c +++ b/org.glite.security.gsoap-plugin/src/glite_gss.c @@ -837,7 +837,7 @@ int edg_wll_gss_read(edg_wll_GssConnection *connection, void *buf, size_t bufsize, struct timeval *timeout, edg_wll_GssStatus* gss_code) { - OM_uint32 maj_stat, min_stat; + OM_uint32 maj_stat, min_stat, min_stat2; gss_buffer_desc input_token; gss_buffer_desc output_token; int ret, i; @@ -863,15 +863,17 @@ edg_wll_gss_read(edg_wll_GssConnection *connection, void *buf, size_t bufsize, ret = recv_token(connection->sock, &input_token.value, &input_token.length, timeout); if (ret) - /* XXX cleanup */ return ret; ERR_clear_error(); maj_stat = gss_unwrap(&min_stat, connection->context, &input_token, &output_token, NULL, NULL); - gss_release_buffer(&min_stat, &input_token); + gss_release_buffer(&min_stat2, &input_token); if (GSS_ERROR(maj_stat)) { - /* XXX cleanup */ + if (gss_code) { + gss_code->minor_status = min_stat; + gss_code->major_status = maj_stat; + } return EDG_WLL_GSS_ERROR_GSS; } } while (maj_stat == 0 && output_token.length == 0 && output_token.value == NULL); -- 1.8.2.3