diff options
-rw-r--r-- | source3/libads/sasl.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/source3/libads/sasl.c b/source3/libads/sasl.c index 5c4006e769..c727c8b50a 100644 --- a/source3/libads/sasl.c +++ b/source3/libads/sasl.c @@ -962,11 +962,10 @@ static ADS_STATUS ads_sasl_gssapi_do_bind(ADS_STRUCT *ads, const gss_name_t serv &output_token, &ret_flags, NULL); - - if (input_token.value) { - gss_release_buffer(&minor_status, &input_token); + if (scred) { + ber_bvfree(scred); + scred = NULL; } - if (gss_rc && gss_rc != GSS_S_CONTINUE_NEEDED) { status = ADS_ERROR_GSS(gss_rc, minor_status); goto failed; @@ -999,13 +998,15 @@ static ADS_STATUS ads_sasl_gssapi_do_bind(ADS_STRUCT *ads, const gss_name_t serv gss_rc = gss_unwrap(&minor_status,context_handle,&input_token,&output_token, &conf_state,NULL); + if (scred) { + ber_bvfree(scred); + scred = NULL; + } if (gss_rc) { status = ADS_ERROR_GSS(gss_rc, minor_status); goto failed; } - gss_release_buffer(&minor_status, &input_token); - p = (uint8 *)output_token.value; #if 0 |