Ping? On Mon, Jul 04, 2011 at 06:10:43PM +0200, Christophe Fergeau wrote: > vcard_emul_mirror_card and vcard_emul_init use > vcard_emul_alloc_arrays to allocate memory for temporary arrays > which will contain elements that in the end will be used one by > one in cac_card_init. The arrays themselves are never stored > anywhere, they are only used as temporary containers. Hence > the memory that was allocated for these arrays should be freed > after use or they will be leaked. > --- > libcacard/vcard_emul_nss.c | 11 ++++++++++- > 1 files changed, 10 insertions(+), 1 deletions(-) > > diff --git a/libcacard/vcard_emul_nss.c b/libcacard/vcard_emul_nss.c > index de324ba..4fee471 100644 > --- a/libcacard/vcard_emul_nss.c > +++ b/libcacard/vcard_emul_nss.c > @@ -476,6 +476,7 @@ vcard_emul_mirror_card(VReader *vreader) > VCardKey **keys; > PK11SlotInfo *slot; > PRBool ret; > + VCard *card; > > slot = vcard_emul_reader_get_slot(vreader); > if (slot == NULL) { > @@ -535,7 +536,12 @@ vcard_emul_mirror_card(VReader *vreader) > } > > /* now create the card */ > - return vcard_emul_make_card(vreader, certs, cert_len, keys, cert_count); > + card = vcard_emul_make_card(vreader, certs, cert_len, keys, cert_count); > + qemu_free(certs); > + qemu_free(cert_len); > + qemu_free(keys); > + > + return card; > } > > static VCardEmulType default_card_type = VCARD_EMUL_NONE; > @@ -820,6 +826,9 @@ vcard_emul_init(const VCardEmulOptions *options) > vreader_free(vreader); > has_readers = PR_TRUE; > } > + qemu_free(certs); > + qemu_free(cert_len); > + qemu_free(keys); > } > > /* if we aren't suppose to use hw, skip looking up hardware tokens */ > -- > 1.7.5.4 > >
pgpOYGNlflJkp.pgp
Description: PGP signature