krb5_gss_acquire_cred will deref garbage pointer if actual_mechs is NULL
authorEzra Peisach <epeisach@mit.edu>
Sun, 3 Jan 2010 15:14:51 +0000 (15:14 +0000)
committerEzra Peisach <epeisach@mit.edu>
Sun, 3 Jan 2010 15:14:51 +0000 (15:14 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@23572 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/gssapi/krb5/acquire_cred.c

index 64efa1bfd069aaa025be6907dfa8d5c4f3a00d9f..2ccf7dbf37c3f3a4502e981caad82fd2507e7d52 100644 (file)
@@ -465,7 +465,7 @@ krb5_gss_acquire_cred(minor_status, desired_name, time_req,
     krb5_context context;
     size_t i;
     krb5_gss_cred_id_t cred;
-    gss_OID_set ret_mechs;
+    gss_OID_set ret_mechs = NULL;
     int req_old, req_new;
     OM_uint32 ret;
     krb5_error_code code;
@@ -693,8 +693,10 @@ krb5_gss_acquire_cred(minor_status, desired_name, time_req,
     /* intern the credential handle */
 
     if (! kg_save_cred_id((gss_cred_id_t) cred)) {
-        free(ret_mechs->elements);
-        free(ret_mechs);
+        if (ret_mechs) {
+            free(ret_mechs->elements);
+            free(ret_mechs);
+        }
         if (cred->ccache)
             (void)krb5_cc_close(context, cred->ccache);
 #ifndef LEAN_CLIENT