[pkg-opensc-commit] [opensc] 02/23: gids: fix invalid get-gids-driver

Eric Dorland eric at moszumanska.debian.org
Tue Jul 5 06:01:08 UTC 2016


This is an automated email from the git hooks/post-receive script.

eric pushed a commit to branch master
in repository opensc.

commit 6de3f93e9b8bb5ec20d57e7d2943fbcdd791df35
Author: Viktor Tarasov <viktor.tarasov at gmail.com>
Date:   Thu Apr 7 19:42:16 2016 +0200

    gids: fix invalid get-gids-driver
    
    When compiled without zlib 'get-gids-driver' returns invalid pointer.
---
 src/libopensc/card-gids.c |  2 +-
 src/libopensc/ctx.c       | 13 ++++++++++---
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/libopensc/card-gids.c b/src/libopensc/card-gids.c
index ee27ccf..4a79bf0 100644
--- a/src/libopensc/card-gids.c
+++ b/src/libopensc/card-gids.c
@@ -2039,7 +2039,7 @@ struct sc_card_driver *sc_get_gids_driver(void)
 
 struct sc_card_driver *sc_get_gids_driver(void)
 {
-	return SC_ERROR_WRONG_CARD;
+	return NULL;
 }
 
 #endif
diff --git a/src/libopensc/ctx.c b/src/libopensc/ctx.c
index 95dbf89..7045aa1 100644
--- a/src/libopensc/ctx.c
+++ b/src/libopensc/ctx.c
@@ -112,7 +112,9 @@ static const struct _sc_driver_entry internal_card_drivers[] = {
 	{ "PIV-II",	(void *(*)(void)) sc_get_piv_driver },
 	{ "itacns",	(void *(*)(void)) sc_get_itacns_driver },
 	{ "isoApplet",	(void *(*)(void)) sc_get_isoApplet_driver },
+#ifdef ENABLE_ZLIB
 	{ "gids",	(void *(*)(void)) sc_get_gids_driver },
+#endif
 	{ "openpgp",	(void *(*)(void)) sc_get_openpgp_driver },
 	/* The default driver should be last, as it handles all the
 	 * unrecognized cards. */
@@ -422,8 +424,7 @@ static int load_card_driver_options(sc_context_t *ctx,
 	return SC_SUCCESS;
 }
 
-static int load_card_drivers(sc_context_t *ctx,
-			     struct _sc_ctx_options *opts)
+static int load_card_drivers(sc_context_t *ctx, struct _sc_ctx_options *opts)
 {
 	const struct _sc_driver_entry *ent;
 	int drv_count;
@@ -461,8 +462,14 @@ static int load_card_drivers(sc_context_t *ctx,
 		}
 
 		ctx->card_drivers[drv_count] = func();
-		ctx->card_drivers[drv_count]->dll = dll;
+		if (ctx->card_drivers[drv_count] == NULL) {
+			sc_log(ctx, "Driver '%s' not available.", ent->name);
+			if (dll)
+				sc_dlclose(dll);
+			continue;
+		}
 
+		ctx->card_drivers[drv_count]->dll = dll;
 		ctx->card_drivers[drv_count]->atr_map = NULL;
 		ctx->card_drivers[drv_count]->natrs = 0;
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-opensc/opensc.git



More information about the pkg-opensc-commit mailing list