libcacard: fix wrong array expansion logic
commitd09b8fa161ed6a61339d4d0870f76f13c033b2a3
authorMichael Tokarev <mjt@tls.msk.ru>
Fri, 23 May 2014 20:47:39 +0000 (24 00:47 +0400)
committerMichael Tokarev <mjt@tls.msk.ru>
Mon, 26 May 2014 06:40:04 +0000 (26 10:40 +0400)
tree396818d311043e3e327604297fbdd9530ec8b19c
parent42119fa3568dc7e8c82447c861678a5987d06d91
libcacard: fix wrong array expansion logic

The currrent code in libcacard/vcard_emul_nss.c:vcard_emul_options()
has a weird bug in variable usage around expanding opts->vreader
array.

There's a helper variable, vreaderOpt, which is first needlessly
initialized to NULL, next, conditionally, only we have to expand
opts->vreader, receives array expansion from g_renew(), and next,
even if we don't actually perform expansion, the value of this
variable is assigned to the actual array, opts->vreader, which
was supposed to be expanded.

So, since we expand the array by READER_STEP increments, only
once in READER_STEP (=4) the code will work, in other 3/4 times
it will fail badly.

Fix this by not using this temp variable when expanding the
array, and by dropping the useless =NULL initializer too -
if it wasn't in place initially, compiler would have warned
us about this problem at the beginning.

Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
libcacard/vcard_emul_nss.c