[30237] in CVS-changelog-for-Kerberos-V5

home help back first fref pref prev next nref lref last post

krb5 commit: Fix minor leak in krb5_gss_inquire_cred()

daemon@ATHENA.MIT.EDU (Greg Hudson)
Tue Jun 19 11:00:38 2018

Date: Tue, 19 Jun 2018 11:00:33 -0400
From: Greg Hudson <ghudson@mit.edu>
Message-Id: <201806191500.w5JF0Xme021922@drugstore.mit.edu>
To: cvs-krb5@mit.edu
Reply-To: krbdev@mit.edu
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: cvs-krb5-bounces@mit.edu

https://github.com/krb5/krb5/commit/46972c0664b7cfd70c40370c22e604efc0225e14
commit 46972c0664b7cfd70c40370c22e604efc0225e14
Author: Greg Hudson <ghudson@mit.edu>
Date:   Fri Jun 15 11:40:13 2018 -0400

    Fix minor leak in krb5_gss_inquire_cred()
    
    If mechs is created but one of the generic_gss_add_oid_set_member()
    calls fails, it leaks.  Initialize mechs and free it in the fail
    label.  Also null mechs when we transfer ownership of it to the
    caller, in case we later unify the success and failure exit paths.
    Reported by Bean Zhang.
    
    ticket: 8697

 src/lib/gssapi/krb5/inq_cred.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/lib/gssapi/krb5/inq_cred.c b/src/lib/gssapi/krb5/inq_cred.c
index 3a73417..a8f2541 100644
--- a/src/lib/gssapi/krb5/inq_cred.c
+++ b/src/lib/gssapi/krb5/inq_cred.c
@@ -90,7 +90,7 @@ krb5_gss_inquire_cred(minor_status, cred_handle, name, lifetime_ret,
     krb5_deltat lifetime;
     krb5_gss_name_t ret_name;
     krb5_principal princ;
-    gss_OID_set mechs;
+    gss_OID_set mechs = GSS_C_NO_OID_SET;
     OM_uint32 major, tmpmin, ret;
 
     ret = GSS_S_FAILURE;
@@ -192,8 +192,10 @@ krb5_gss_inquire_cred(minor_status, cred_handle, name, lifetime_ret,
         *cred_usage = cred->usage;
     k5_mutex_unlock(&cred->lock);
 
-    if (mechanisms)
+    if (mechanisms) {
         *mechanisms = mechs;
+        mechs = GSS_C_NO_OID_SET;
+    }
 
     if (cred_handle == GSS_C_NO_CREDENTIAL)
         krb5_gss_release_cred(minor_status, (gss_cred_id_t *)&cred);
@@ -205,6 +207,7 @@ fail:
     k5_mutex_unlock(&cred->lock);
     krb5_gss_release_cred(&tmpmin, &defcred);
     krb5_free_context(context);
+    (void)generic_gss_release_oid_set(&tmpmin, &mechs);
     return ret;
 }
 
_______________________________________________
cvs-krb5 mailing list
cvs-krb5@mit.edu
https://mailman.mit.edu/mailman/listinfo/cvs-krb5

home help back first fref pref prev next nref lref last post