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

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

krb5 commit: Clean up memory handling in krb5_fwd_tgt_creds()

daemon@ATHENA.MIT.EDU (Tom Yu)
Wed Jan 4 22:19:56 2017

Date: Wed, 4 Jan 2017 22:19:52 -0500
From: Tom Yu <tlyu@mit.edu>
Message-Id: <201701050319.v053JqCL015972@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/182c4bf1a3d70efe3894f3b57b68f9988765d48d
commit 182c4bf1a3d70efe3894f3b57b68f9988765d48d
Author: Greg Hudson <ghudson@mit.edu>
Date:   Sat Dec 17 22:34:28 2016 -0500

    Clean up memory handling in krb5_fwd_tgt_creds()
    
    Use distinct local variables to own allocated resources which we must
    release at function exit, instead of using parameter variables and
    flags.
    
    ticket: 8527 (new)

 src/lib/krb5/krb/fwd_tgt.c |   23 +++++++++++------------
 1 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/src/lib/krb5/krb/fwd_tgt.c b/src/lib/krb5/krb/fwd_tgt.c
index a217d4c..a8d7e76 100644
--- a/src/lib/krb5/krb/fwd_tgt.c
+++ b/src/lib/krb5/krb/fwd_tgt.c
@@ -48,8 +48,8 @@ krb5_fwd_tgt_creds(krb5_context context, krb5_auth_context auth_context,
     krb5_creds creds, tgt;
     krb5_creds *pcreds;
     krb5_flags kdcoptions;
-    int close_cc = 0;
-    int free_rhost = 0;
+    krb5_ccache defcc = NULL;
+    char *def_rhost = NULL;
     krb5_enctype enctype = 0;
     krb5_keyblock *session_key;
     krb5_boolean old_use_conf_ktypes = context->use_conf_ktypes;
@@ -58,9 +58,9 @@ krb5_fwd_tgt_creds(krb5_context context, krb5_auth_context auth_context,
     memset(&tgt, 0, sizeof(creds));
 
     if (cc == 0) {
-        if ((retval = krb5int_cc_default(context, &cc)))
+        if ((retval = krb5int_cc_default(context, &defcc)))
             goto errout;
-        close_cc = 1;
+        cc = defcc;
     }
     retval = krb5_auth_con_getkey (context, auth_context, &session_key);
     if (retval)
@@ -131,11 +131,11 @@ krb5_fwd_tgt_creds(krb5_context context, krb5_auth_context auth_context,
                 goto errout;
             }
 
-            rhost = k5memdup0(server->data[1].data, server->data[1].length,
-                              &retval);
-            if (rhost == NULL)
+            def_rhost = k5memdup0(server->data[1].data, server->data[1].length,
+                                  &retval);
+            if (def_rhost == NULL)
                 goto errout;
-            free_rhost = 1;
+            rhost = def_rhost;
         }
 
         retval = k5_os_hostaddr(context, rhost, &addrs);
@@ -176,10 +176,9 @@ krb5_fwd_tgt_creds(krb5_context context, krb5_auth_context auth_context,
 errout:
     if (addrs)
         krb5_free_addresses(context, addrs);
-    if (close_cc)
-        krb5_cc_close(context, cc);
-    if (free_rhost)
-        free(rhost);
+    if (defcc)
+        krb5_cc_close(context, defcc);
+    free(def_rhost);
     krb5_free_cred_contents(context, &creds);
     krb5_free_cred_contents(context, &tgt);
     return retval;
_______________________________________________
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