aklog: free kbr5_creds before returning from rxkad_get_token 60/13760/4
authorYadavendra Yadav <yadayada@in.ibm.com>
Fri, 9 Aug 2019 21:11:01 +0000 (02:11 +0530)
committerBenjamin Kaduk <kaduk@mit.edu>
Fri, 30 Aug 2019 13:20:15 +0000 (09:20 -0400)
rxkad_get_ticket allocates 'v5cred' which should be freed when we
return from rxkad_get_token.

Change-Id: I09b20781f0856ab8e230e0af271e9d0c58fee90c
Reviewed-on: https://gerrit.openafs.org/13760
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
Tested-by: Benjamin Kaduk <kaduk@mit.edu>

src/aklog/aklog.c

index da91229..b753bff 100644 (file)
@@ -859,7 +859,7 @@ rxkad_get_converted_token(krb5_context context, krb5_creds *v5cred,
 static int
 rxkad_get_token(krb5_context context, struct afsconf_cell *cell, char *realm,
                struct ktc_tokenUnion **token, char **authuser, int *foreign) {
-    krb5_creds *v5cred;
+    krb5_creds *v5cred = NULL;
     char *realmUsed = NULL;
     char *username = NULL;
     int status;
@@ -870,7 +870,7 @@ rxkad_get_token(krb5_context context, struct afsconf_cell *cell, char *realm,
 
     status = rxkad_get_ticket(context, realm, cell, &v5cred, &realmUsed);
     if (status)
-       return status;
+       goto out;
 
     if (do524)
        status = rxkad_get_converted_token(context, v5cred, token, &username);
@@ -901,6 +901,8 @@ out:
        free(realmUsed);
     if (username)
        free(username);
+    if (v5cred)
+        krb5_free_creds(context, v5cred);
 
     return status;
 }