From 7da9d7d75fe63506ea145dab919b73f245364323 Mon Sep 17 00:00:00 2001 From: Nicolas Williams Date: Mon, 31 Oct 2011 00:15:07 -0500 Subject: [PATCH] Fix memory leak in name canon rule iterator --- lib/krb5/principal.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/krb5/principal.c b/lib/krb5/principal.c index 5d605c090..73963092c 100644 --- a/lib/krb5/principal.c +++ b/lib/krb5/principal.c @@ -1870,9 +1870,10 @@ krb5_name_canon_iterator_start(krb5_context context, state->in_princ = princ; if (in_creds) { - ret = krb5_copy_creds(context, in_creds, &state->creds); - if (ret) - goto out; + if (!state->is_trivial) { + ret = krb5_copy_creds(context, in_creds, &state->creds); + if (ret) goto err; + } state->tmp_princ = state->creds->server; /* so we don't leak */ } @@ -1908,8 +1909,8 @@ krb5_name_canon_iterate(krb5_context context, return 0; } - krb5_free_principal(context, state->tmp_princ); do { + krb5_free_principal(context, state->tmp_princ); ret = _krb5_apply_name_canon_rule(context, state->rule, state->in_princ, &state->tmp_princ, rule_opts); if (ret)