diff options
Diffstat (limited to 'usr/src/uts/common/gssapi/gssd_clnt_stubs.c')
| -rw-r--r-- | usr/src/uts/common/gssapi/gssd_clnt_stubs.c | 50 |
1 files changed, 24 insertions, 26 deletions
diff --git a/usr/src/uts/common/gssapi/gssd_clnt_stubs.c b/usr/src/uts/common/gssapi/gssd_clnt_stubs.c index 774c2c5711..e21a21b72d 100644 --- a/usr/src/uts/common/gssapi/gssd_clnt_stubs.c +++ b/usr/src/uts/common/gssapi/gssd_clnt_stubs.c @@ -19,12 +19,10 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - /* * GSSAPI library stub module for gssd. */ @@ -766,6 +764,16 @@ kgss_init_sec_context_wrapped( if (minor_status != NULL) *minor_status = res.minor_status; + if (output_token != NULL && res.output_token.GSS_BUFFER_T_val != NULL) { + output_token->length = + (size_t)res.output_token.GSS_BUFFER_T_len; + output_token->value = + (void *)MALLOC(output_token->length); + (void) memcpy(output_token->value, + res.output_token.GSS_BUFFER_T_val, + output_token->length); + } + /* if the call was successful, copy out the results */ if (res.status == (OM_uint32) GSS_S_COMPLETE || res.status == (OM_uint32) GSS_S_CONTINUE_NEEDED) { @@ -779,16 +787,6 @@ kgss_init_sec_context_wrapped( res.context_handle.GSS_CTX_ID_T_val); *gssd_context_verifier = res.gssd_context_verifier; - if (output_token != NULL) { - output_token->length = - (size_t)res.output_token.GSS_BUFFER_T_len; - output_token->value = - (void *)MALLOC(output_token->length); - (void) memcpy(output_token->value, - res.output_token.GSS_BUFFER_T_val, - output_token->length); - } - if (res.status == GSS_S_COMPLETE) { if (actual_mech_type != NULL) { *actual_mech_type = @@ -1055,6 +1053,19 @@ kgss_accept_sec_context_wrapped( return (GSS_S_FAILURE); } + if (minor_status != NULL) + *minor_status = res.minor_status; + + if (output_token != NULL && res.output_token.GSS_BUFFER_T_val != NULL) { + output_token->length = + res.output_token.GSS_BUFFER_T_len; + output_token->value = + (void *) MALLOC(output_token->length); + (void) memcpy(output_token->value, + res.output_token.GSS_BUFFER_T_val, + output_token->length); + } + /* if the call was successful, copy out the results */ if (res.status == (OM_uint32) GSS_S_COMPLETE || @@ -1070,19 +1081,6 @@ kgss_accept_sec_context_wrapped( res.context_handle.GSS_CTX_ID_T_val); *gssd_context_verifier = res.gssd_context_verifier; - if (output_token != NULL) { - output_token->length = - res.output_token.GSS_BUFFER_T_len; - output_token->value = - (void *) MALLOC(output_token->length); - (void) memcpy(output_token->value, - res.output_token.GSS_BUFFER_T_val, - output_token->length); - } - - if (minor_status != NULL) - *minor_status = res.minor_status; - /* these other parameters are only ready upon GSS_S_COMPLETE */ if (res.status == (OM_uint32) GSS_S_COMPLETE) { |
