From 897ca8eff2a75c2dabe2a6be805d84123f685510 Mon Sep 17 00:00:00 2001 From: nils Date: Sun, 24 Oct 2004 17:17:48 +0000 Subject: [PATCH] fix memory leak git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@1950 c6295689-39f2-0310-b995-f0e70906c6a9 --- src/pkcs15init/profile.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/pkcs15init/profile.c b/src/pkcs15init/profile.c index 4ae41736..8f197a84 100644 --- a/src/pkcs15init/profile.c +++ b/src/pkcs15init/profile.c @@ -342,6 +342,11 @@ sc_profile_free(struct sc_profile *profile) { struct auth_info *ai; struct pin_info *pi; + sc_macro_t *mi; + sc_template_t *ti; + + if (profile->name) + free(profile->name); free_file_list(&profile->ef_list); @@ -350,10 +355,26 @@ sc_profile_free(struct sc_profile *profile) free(ai); } + while ((ti = profile->template_list) != NULL) { + profile->template_list = ti->next; + if (ti->data) + free(ti->data); + if (ti->name) + free(ti->name); + free(ti); + } + + while ((mi = profile->macro_list) != NULL) { + profile->macro_list = mi->next; + if (mi->name) + free(mi->name); + free(mi); + } + while ((pi = profile->pin_list) != NULL) { + profile->pin_list = pi->next; if (pi->file_name) free(pi->file_name); - profile->pin_list = pi->next; free(pi); }