diff --git a/src/libopensc/pkcs15-itacns.c b/src/libopensc/pkcs15-itacns.c index 4d8ac65f..11de4538 100644 --- a/src/libopensc/pkcs15-itacns.c +++ b/src/libopensc/pkcs15-itacns.c @@ -546,16 +546,20 @@ static int itacns_add_data_files(sc_pkcs15_card_t *p15card) if (p15_personaldata->data) { char fullname[160]; - if(get_name_from_EF_DatiPersonali(p15_personaldata->data, + if (get_name_from_EF_DatiPersonali(p15_personaldata->data, fullname, sizeof(fullname))) { sc_log(p15card->card->ctx, "Could not parse EF_DatiPersonali: " "keeping generic card name"); sc_pkcs15_free_data_object(p15_personaldata); + free(cinfo->data.value); + cinfo->data.value = NULL; return SC_SUCCESS; } set_string(&p15card->tokeninfo->label, fullname); } + free(cinfo->data.value); + cinfo->data.value = NULL; sc_pkcs15_free_data_object(p15_personaldata); return SC_SUCCESS; }