r22078: fix memory leak in not often used code, we only use it if the server
authorStefan Metzmacher <metze@samba.org>
Wed, 4 Apr 2007 14:50:39 +0000 (14:50 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:19:09 +0000 (12:19 -0500)
doesn't support GSS-SPNEGO in SASL

can someone please review this, maybe it's also for 3.0.25

metze
(This used to be commit 8c6930b7013b185af0530b04a7d5a49bc2ce7831)

source3/libads/sasl.c

index 013985a121500ffb3c9de9b65fc1c04dafef138c..ce000a13064eee10a1a2b534509bbb6a945692ea 100644 (file)
@@ -301,7 +301,7 @@ static ADS_STATUS ads_sasl_gssapi_bind(ADS_STRUCT *ads)
        uint32 minor_status;
        gss_name_t serv_name;
        gss_buffer_desc input_name;
-       gss_ctx_id_t context_handle;
+       gss_ctx_id_t context_handle = GSS_C_NO_CONTEXT;
        gss_OID mech_type = GSS_C_NULL_OID;
        gss_buffer_desc output_token, input_token;
        uint32 ret_flags, conf_state;
@@ -368,8 +368,6 @@ static ADS_STATUS ads_sasl_gssapi_bind(ADS_STRUCT *ads)
                return ADS_ERROR_GSS(gss_rc, minor_status);
        }
 
-       context_handle = GSS_C_NO_CONTEXT;
-
        input_token.value = NULL;
        input_token.length = 0;
 
@@ -478,6 +476,8 @@ static ADS_STATUS ads_sasl_gssapi_bind(ADS_STRUCT *ads)
 failed:
 
        gss_release_name(&minor_status, &serv_name);
+       if (context_handle != GSS_C_NO_CONTEXT)
+               gss_delete_sec_context(&min_status, &context_handle, GSS_C_NO_BUFFER);
        krb5_free_principal(ctx, principal);
        krb5_free_context(ctx);