summaryrefslogtreecommitdiffstats
path: root/crypto/heimdal/lib/gssapi/accept_sec_context.c
diff options
context:
space:
mode:
authorassar <assar@FreeBSD.org>2001-06-21 02:12:07 +0000
committerassar <assar@FreeBSD.org>2001-06-21 02:12:07 +0000
commit0c8fa354358381b3f1b92598e7f1b46f8cf744cc (patch)
treeed28ffb73cc0ae48a9892dab3f10b09bc36436d5 /crypto/heimdal/lib/gssapi/accept_sec_context.c
parent06c859ecf534f468a52f24a3eb14409d73a4907c (diff)
downloadFreeBSD-src-0c8fa354358381b3f1b92598e7f1b46f8cf744cc.zip
FreeBSD-src-0c8fa354358381b3f1b92598e7f1b46f8cf744cc.tar.gz
import of heimdal 0.3f
Diffstat (limited to 'crypto/heimdal/lib/gssapi/accept_sec_context.c')
-rw-r--r--crypto/heimdal/lib/gssapi/accept_sec_context.c31
1 files changed, 29 insertions, 2 deletions
diff --git a/crypto/heimdal/lib/gssapi/accept_sec_context.c b/crypto/heimdal/lib/gssapi/accept_sec_context.c
index a606c55..4cb2427 100644
--- a/crypto/heimdal/lib/gssapi/accept_sec_context.c
+++ b/crypto/heimdal/lib/gssapi/accept_sec_context.c
@@ -33,7 +33,7 @@
#include "gssapi_locl.h"
-RCSID("$Id: accept_sec_context.c,v 1.21 2001/01/09 18:47:11 assar Exp $");
+RCSID("$Id: accept_sec_context.c,v 1.24 2001/05/11 09:16:45 assar Exp $");
static krb5_keytab gss_keytab;
@@ -76,6 +76,7 @@ gss_accept_sec_context
krb5_ticket *ticket = NULL;
krb5_keytab keytab = NULL;
krb5_data fwd_data;
+ OM_uint32 minor;
gssapi_krb5_init ();
@@ -98,10 +99,15 @@ gss_accept_sec_context
(*context_handle)->more_flags = 0;
(*context_handle)->ticket = NULL;
+ if (src_name != NULL)
+ *src_name = NULL;
+
kret = krb5_auth_con_init (gssapi_krb5_context,
&(*context_handle)->auth_context);
if (kret) {
ret = GSS_S_FAILURE;
+ *minor_status = kret;
+ gssapi_krb5_set_error_string ();
goto failure;
}
@@ -131,6 +137,7 @@ gss_accept_sec_context
&acceptor_addr);
if (kret) {
*minor_status = kret;
+ gssapi_krb5_set_error_string ();
ret = GSS_S_BAD_BINDINGS;
goto failure;
}
@@ -142,6 +149,7 @@ gss_accept_sec_context
if (kret) {
krb5_free_address (gssapi_krb5_context, &acceptor_addr);
*minor_status = kret;
+ gssapi_krb5_set_error_string ();
ret = GSS_S_BAD_BINDINGS;
goto failure;
}
@@ -162,6 +170,7 @@ gss_accept_sec_context
if (kret) {
*minor_status = kret;
+ gssapi_krb5_set_error_string ();
ret = GSS_S_BAD_BINDINGS;
goto failure;
}
@@ -207,6 +216,8 @@ gss_accept_sec_context
&ticket);
if (kret) {
ret = GSS_S_FAILURE;
+ *minor_status = kret;
+ gssapi_krb5_set_error_string ();
goto failure;
}
@@ -215,6 +226,8 @@ gss_accept_sec_context
&(*context_handle)->source);
if (kret) {
ret = GSS_S_FAILURE;
+ *minor_status = kret;
+ gssapi_krb5_set_error_string ();
goto failure;
}
@@ -223,15 +236,19 @@ gss_accept_sec_context
&(*context_handle)->target);
if (kret) {
ret = GSS_S_FAILURE;
+ *minor_status = kret;
+ gssapi_krb5_set_error_string ();
goto failure;
}
- if (src_name) {
+ if (src_name != NULL) {
kret = krb5_copy_principal (gssapi_krb5_context,
ticket->client,
src_name);
if (kret) {
ret = GSS_S_FAILURE;
+ *minor_status = kret;
+ gssapi_krb5_set_error_string ();
goto failure;
}
}
@@ -244,6 +261,8 @@ gss_accept_sec_context
&authenticator);
if(kret) {
ret = GSS_S_FAILURE;
+ *minor_status = kret;
+ gssapi_krb5_set_error_string ();
goto failure;
}
@@ -254,6 +273,8 @@ gss_accept_sec_context
krb5_free_authenticator(gssapi_krb5_context, &authenticator);
if (kret) {
ret = GSS_S_FAILURE;
+ *minor_status = kret;
+ gssapi_krb5_set_error_string ();
goto failure;
}
}
@@ -322,6 +343,8 @@ end_fwd:
&outbuf);
if (kret) {
ret = GSS_S_FAILURE;
+ *minor_status = kret;
+ gssapi_krb5_set_error_string ();
goto failure;
}
ret = gssapi_krb5_encapsulate (&outbuf,
@@ -359,6 +382,10 @@ failure:
krb5_free_principal (gssapi_krb5_context,
(*context_handle)->target);
free (*context_handle);
+ if (src_name != NULL) {
+ gss_release_name (&minor, src_name);
+ *src_name = NULL;
+ }
*context_handle = GSS_C_NO_CONTEXT;
*minor_status = kret;
return GSS_S_FAILURE;
OpenPOWER on IntegriCloud