summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2003-05-26 09:57:45 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2003-05-26 09:57:45 +0000
commitf035d9ce8e917fbd2d9f8b8d2317dbbe868df165 (patch)
tree377a6df5dbbd34dcd4476c460e1eaef8327b524b
parent5c39e22731eaca28a2197c7c0526c242feb3370b (diff)
downloadmailutils-f035d9ce8e917fbd2d9f8b8d2317dbbe868df165.tar.gz
mailutils-f035d9ce8e917fbd2d9f8b8d2317dbbe868df165.tar.bz2
(auth_gssapi): Check return codes from gss_wrap, gss_unwrap.
-rw-r--r--imap4d/auth_gss.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/imap4d/auth_gss.c b/imap4d/auth_gss.c
index 109dfc269..545b446a9 100644
--- a/imap4d/auth_gss.c
+++ b/imap4d/auth_gss.c
@@ -190,8 +190,14 @@ auth_gssapi (struct imap4d_command *command,
sec_level = htonl ((SUPPORTED_P_MECH << 24) | server_buffer_size);
tokbuf.length = 4;
tokbuf.value = &sec_level;
- gss_wrap (&min_stat, context, 0, GSS_C_QOP_DEFAULT,
- &tokbuf, &cflags, &outbuf);
+ maj_stat = gss_wrap (&min_stat, context, 0, GSS_C_QOP_DEFAULT,
+ &tokbuf, &cflags, &outbuf);
+ if (maj_stat != GSS_S_COMPLETE)
+ {
+ display_status ("wrap", maj_stat, min_stat);
+ return RESP_NO;
+ }
+
util_base64_encode (outbuf.value, outbuf.length, &tmp, &size);
util_send ("+ %*.*s\r\n", size, size, tmp);
free (tmp);
@@ -201,9 +207,15 @@ auth_gssapi (struct imap4d_command *command,
(unsigned char **) &tokbuf.value, &tokbuf.length);
free (token_str);
- gss_unwrap (&min_stat, context, &tokbuf, &outbuf, &cflags, &quality);
+ maj_stat = gss_unwrap (&min_stat, context, &tokbuf, &outbuf, &cflags,
+ &quality);
free (tokbuf.value);
-
+ if (maj_stat != GSS_S_COMPLETE)
+ {
+ display_status ("unwrap", maj_stat, min_stat);
+ return RESP_NO;
+ }
+
sec_level = ntohl (*(OM_uint32 *) outbuf.value);
/* FIXME: parse sec_level and act accordingly to its settings */

Return to:

Send suggestions and report system problems to the System administrator.