[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] libcacard: don't leak vcard_emul_alloc_arrays m
From: |
Alon Levy |
Subject: |
Re: [Qemu-devel] [PATCH] libcacard: don't leak vcard_emul_alloc_arrays mem |
Date: |
Fri, 22 Jul 2011 14:54:04 +0300 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Fri, Jul 22, 2011 at 01:30:49PM +0200, Christophe Fergeau wrote:
> Ping?
>
I'll pick it up in my pull request.
> 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
> >
> >