krb5 commit [krb5-1.22]: Fix leak on krb5 gss_accept_sec_context() failure

ghudson at mit.edu ghudson at mit.edu
Mon Nov 9 12:03:04 EST 2026


https://github.com/krb5/krb5/commit/6fc01659503581962f66320c258a3f5abda7b5ef
commit 6fc01659503581962f66320c258a3f5abda7b5ef
Author: Greg Hudson <ghudson at mit.edu>
Date:   Thu Oct 22 19:31:01 2026 -0400

    Fix leak on krb5 gss_accept_sec_context() failure
    
    In kg_accept_krb5(), properly release deleg_cred when cleaning up
    after a failure.  Reported by Moritz Theile.
    
    [Backport note: kg_release_cred() does not exist in the krb5-1.22
    branch; awkwardly use krb5_gss_release_cred() instead.]
    
    (cherry picked from commit 2eaa2f0334808bf491fcaab005586bf1da29cf83)
    
    ticket: 9269
    version_fixed: 1.22.3

 src/lib/gssapi/krb5/accept_sec_context.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/src/lib/gssapi/krb5/accept_sec_context.c b/src/lib/gssapi/krb5/accept_sec_context.c
index 3a7fb4e89..b88c2098a 100644
--- a/src/lib/gssapi/krb5/accept_sec_context.c
+++ b/src/lib/gssapi/krb5/accept_sec_context.c
@@ -1161,12 +1161,9 @@ fail:
     if (ctx)
         (void) krb5_gss_delete_sec_context(&tmp_minor_status,
                                            (gss_ctx_id_t *) &ctx, NULL);
-    if (deleg_cred) { /* free memory associated with the deleg credential */
-        if (deleg_cred->ccache)
-            (void)krb5_cc_close(context, deleg_cred->ccache);
-        if (deleg_cred->name)
-            kg_release_name(context, &deleg_cred->name);
-        xfree(deleg_cred);
+    {
+        gss_cred_id_t dcred = (gss_cred_id_t) deleg_cred;
+        (void) krb5_gss_release_cred(&tmp_minor_status, &dcred);
     }
     if (token.value)
         xfree(token.value);


More information about the cvs-krb5 mailing list