From 9aa73420004f0d0a1307cce2648035fbb883dd55 Mon Sep 17 00:00:00 2001 From: martin Date: Mon, 23 May 2011 17:32:26 +0000 Subject: [PATCH] OpenPGP: re-factor pgp_finish() Re-structure pgp_finish() for easier reading. While at it, check for priv != NULL before free()ing it. Signed-off-by: Peter Marschall git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@5486 c6295689-39f2-0310-b995-f0e70906c6a9 --- src/libopensc/card-openpgp.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/libopensc/card-openpgp.c b/src/libopensc/card-openpgp.c index fcb6c87a..5408d690 100644 --- a/src/libopensc/card-openpgp.c +++ b/src/libopensc/card-openpgp.c @@ -243,17 +243,18 @@ pgp_init(sc_card_t *card) static int pgp_finish(sc_card_t *card) { - struct pgp_priv_data *priv; + if (card != NULL) { + struct pgp_priv_data *priv = DRVDATA (card); - if (card == NULL) - return SC_SUCCESS; - priv = DRVDATA (card); + if (priv != NULL) { + /* delete fake file hierarchy */ + pgp_iterate_blobs(priv->mf, 99, pgp_free_blob); - /* delete fake file hierarchy */ - pgp_iterate_blobs(priv->mf, 99, pgp_free_blob); - - free(priv); - card->drv_data = NULL; + /* delete private data */ + free(priv); + } + card->drv_data = NULL; + } return SC_SUCCESS; }