From 3fa7a056f15cf86511b25644dbedadfaea7f3b10 Mon Sep 17 00:00:00 2001 From: jey Date: Tue, 19 Mar 2002 10:04:11 +0000 Subject: [PATCH] - Fixed a couple of memory leaks - Fixed a bug in decoding EF(TokenInfo) git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@344 c6295689-39f2-0310-b995-f0e70906c6a9 --- src/libopensc/card-setcos.c | 1 + src/libopensc/card.c | 2 ++ src/libopensc/pkcs15-cert.c | 1 + src/libopensc/pkcs15.c | 4 ++-- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/libopensc/card-setcos.c b/src/libopensc/card-setcos.c index f6300c6a..de1beeb0 100644 --- a/src/libopensc/card-setcos.c +++ b/src/libopensc/card-setcos.c @@ -51,6 +51,7 @@ static const struct sc_card_driver setcos_drv = { static int setcos_finish(struct sc_card *card) { + free(DRVDATA(card)); return 0; } diff --git a/src/libopensc/card.c b/src/libopensc/card.c index 6d895142..65f5e3aa 100644 --- a/src/libopensc/card.c +++ b/src/libopensc/card.c @@ -297,6 +297,8 @@ static void sc_card_free(struct sc_card *card) free(card->app[i]->ddo); free(card->app[i]); } + if (card->ef_dir != NULL) + sc_file_free(card->ef_dir); free(card->ops); if (card->algorithms != NULL) free(card->algorithms); diff --git a/src/libopensc/pkcs15-cert.c b/src/libopensc/pkcs15-cert.c index 296d0b77..9565fc4a 100644 --- a/src/libopensc/pkcs15-cert.c +++ b/src/libopensc/pkcs15-cert.c @@ -273,6 +273,7 @@ void sc_pkcs15_free_certificate(struct sc_pkcs15_cert *cert) free(cert->key.data); free(cert->key.modulus); free(cert->issuer); + free(cert->serial); free(cert->data); free(cert); } diff --git a/src/libopensc/pkcs15.c b/src/libopensc/pkcs15.c index 6abe8553..3482d75b 100644 --- a/src/libopensc/pkcs15.c +++ b/src/libopensc/pkcs15.c @@ -108,13 +108,13 @@ static void parse_tokeninfo(struct sc_pkcs15_card *card, const u8 * buf, size_t strcat(card->serial_number, byte); } if (card->manufacturer_id == NULL) { - if (asn1_tokeninfo[2].flags & SC_ASN1_PRESENT) + if (asn1_toki[2].flags & SC_ASN1_PRESENT) card->manufacturer_id = strdup((char *) mnfid); else card->manufacturer_id = strdup("(unknown)"); } if (card->label == NULL) { - if (asn1_tokeninfo[3].flags & SC_ASN1_PRESENT) + if (asn1_toki[3].flags & SC_ASN1_PRESENT) card->label = strdup((char *) label); else card->label = strdup("(unknown)");