diff --git a/kdc/digest.c b/kdc/digest.c index 710d06b39..1a9d75493 100644 --- a/kdc/digest.c +++ b/kdc/digest.c @@ -330,6 +330,7 @@ _kdc_do_digest(krb5_context context, krb5_abortx(context, "ASN1 internal error"); hex_encode(buf.data, buf.length, &r.u.initReply.opaque); + free(buf.data); if (r.u.initReply.opaque == NULL) { krb5_clear_error_string(context); ret = ENOMEM; @@ -474,6 +475,7 @@ _kdc_do_digest(krb5_context context, ret = _kdc_db_fetch(context, config, clientprincipal, HDB_F_GET_CLIENT, &db, &user); + krb5_free_principal(context, clientprincipal); if (ret) goto out; @@ -680,6 +682,8 @@ _kdc_do_digest(krb5_context context, out: + if (ac) + krb5_auth_con_free(context, ac); if (ret) krb5_warn(context, ret, "Digest request from %s failed", from); if (ticket) diff --git a/lib/krb5/digest.c b/lib/krb5/digest.c index 6ff71c00e..8f7af3d7f 100644 --- a/lib/krb5/digest.c +++ b/lib/krb5/digest.c @@ -252,6 +252,8 @@ digest_request(krb5_context context, krb5_data_zero(&data); krb5_data_zero(&data2); + memset(&req, 0, sizeof(req)); + memset(&rep, 0, sizeof(rep)); if (ccache == NULL) { ret = krb5_cc_default(context, &id); @@ -395,6 +397,9 @@ out: krb5_data_free(&data); krb5_data_free(&data2); + free_DigestREQ(&req); + free_DigestREP(&rep); + return ret; }