22.05.2014 18:57, Markus Armbruster wrote:

> diff --git a/libcacard/vcard_emul_nss.c b/libcacard/vcard_emul_nss.c
> index 692534c..f98541f 100644
> --- a/libcacard/vcard_emul_nss.c
> +++ b/libcacard/vcard_emul_nss.c
> @@ -1178,11 +1178,7 @@ vcard_emul_options(const char *args)
>  
>              if (opts->vreader_count >= reader_count) {
>                  reader_count += READER_STEP;
> -                vreaderOpt = realloc(opts->vreader,
> -                                reader_count * sizeof(*vreaderOpt));
> -                if (vreaderOpt == NULL) {
> -                    return opts; /* we're done */
> -                }
> +                vreaderOpt = g_new(VirtualReaderOptions, reader_count);
>              }
>              opts->vreader = vreaderOpt;

This does not look like equivalent code.  It is equivalent
to malloc(), not realloc().  So we'll leak old opts->vreader
on every expansion of the array, and will lose old elements
in it too.

Thanks,

/mjt


Reply via email to