From: Nicolas Williams Date: Tue, 1 Sep 2015 15:58:30 +0000 (-0400) Subject: Fix krb5_rd_req() memory leak X-Git-Tag: krb5-1.14-alpha1~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3aa8506ee9e1f564e3f396eed5ac5616d7c54b34;p=thirdparty%2Fkrb5.git Fix krb5_rd_req() memory leak In release 1.13, commit eba8c4909ec7ba0d7054d5d1b1061319e9970cc7 (ticket #7232) introduced a memory leak when skipping keytab entries which do not match the application-provided server specification. Fix it by freeing the keytab entry before continuing the loop on a failure to match. [ghudson@mit.edu: commit message] ticket: 8239 (new) target_version: 1.13.3 tags: pullup --- diff --git a/src/lib/krb5/krb/rd_req_dec.c b/src/lib/krb5/krb/rd_req_dec.c index df5ba7a35a..6defbdbf01 100644 --- a/src/lib/krb5/krb/rd_req_dec.c +++ b/src/lib/krb5/krb/rd_req_dec.c @@ -396,6 +396,7 @@ decrypt_ticket(krb5_context context, const krb5_ap_req *req, if (!krb5_sname_match(context, server, ent.principal)) { if (krb5_principal_compare(context, ent.principal, tkt_server)) tkt_server_mismatch = TRUE; + (void)krb5_free_keytab_entry_contents(context, &ent); continue; } found_server_match = TRUE;