diff --git a/src/tools/cryptoflex-tool.c b/src/tools/cryptoflex-tool.c index 2dd30e96..705e79b1 100644 --- a/src/tools/cryptoflex-tool.c +++ b/src/tools/cryptoflex-tool.c @@ -1091,6 +1091,7 @@ int main(int argc, char * const argv[]) int do_list_keys = 0; int do_store_key = 0; int do_create_pin_file = 0; + sc_reader_t *screader= NULL; sc_context_param_t ctx_param; while (1) { @@ -1173,19 +1174,24 @@ int main(int argc, char * const argv[]) } if (verbose > 1) ctx->debug = verbose-1; - if (opt_reader >= ctx->reader_count || opt_reader < 0) { - fprintf(stderr, "Illegal reader number. Only %d reader(s) configured.\n", ctx->reader_count); + if (opt_reader >= (int)sc_ctx_get_reader_count(ctx) || opt_reader < 0) { + fprintf(stderr, "Illegal reader number. Only %d reader(s) configured.\n", sc_ctx_get_reader_count(ctx)); err = 1; goto end; } - if (sc_detect_card_presence(ctx->reader[opt_reader], 0) <= 0) { + screader = sc_ctx_get_reader(ctx, opt_reader); + if (screader == NULL) { + err = 1; + goto end; + } + if (sc_detect_card_presence(screader, 0) <= 0) { fprintf(stderr, "Card not present.\n"); err = 3; goto end; } if (verbose) - fprintf(stderr, "Connecting to card in reader %s...\n", ctx->reader[opt_reader]->name); - r = sc_connect_card(ctx->reader[opt_reader], 0, &card); + fprintf(stderr, "Connecting to card in reader %s...\n", screader->name); + r = sc_connect_card(screader, 0, &card); if (r) { fprintf(stderr, "Failed to connect to card: %s\n", sc_strerror(r)); err = 1; diff --git a/src/tools/eidenv.c b/src/tools/eidenv.c index 244dd68a..3ac04fad 100644 --- a/src/tools/eidenv.c +++ b/src/tools/eidenv.c @@ -394,11 +394,11 @@ int main(int argc, char **argv) sc_strerror(r)); return 1; } - if (reader_num > ctx->reader_count) { - fprintf(stderr, "Illegal reader number. Only %d reader(s) configured.\n", ctx->reader_count); + if (reader_num > (int)sc_ctx_get_reader_count(ctx)) { + fprintf(stderr, "Illegal reader number. Only %d reader(s) configured.\n", sc_ctx_get_reader_count(ctx)); return 1; } - reader = ctx->reader[reader_num]; + reader = sc_ctx_get_reader(ctx, (unsigned int)reader_num); r = sc_connect_card(reader, 0, &card); if (r) { diff --git a/src/tools/opensc-tool.c b/src/tools/opensc-tool.c index 1e954ee3..58af6908 100644 --- a/src/tools/opensc-tool.c +++ b/src/tools/opensc-tool.c @@ -82,17 +82,18 @@ sc_card_t *card = NULL; static int list_readers(void) { - int i; + unsigned int i, rcount = sc_ctx_get_reader_count(ctx); - if (ctx->reader_count == 0) { + if (rcount == 0) { printf("No readers configured!\n"); return 0; } printf("Readers known about:\n"); printf("Nr. Driver Name\n"); - for (i = 0; i < ctx->reader_count; i++) { - printf("%-7d%-11s%s\n", i, ctx->reader[i]->driver->short_name, - ctx->reader[i]->name); + for (i = 0; i < rcount; i++) { + sc_reader_t *screader = sc_ctx_get_reader(ctx, i); + printf("%-7d%-11s%s\n", i, screader->driver->short_name, + screader->name); } return 0; } diff --git a/src/tools/util.c b/src/tools/util.c index 82306473..1cca0da4 100644 --- a/src/tools/util.c +++ b/src/tools/util.c @@ -17,13 +17,14 @@ int connect_card(sc_context_t *ctx, sc_card_t **cardp, if (wait) { sc_reader_t *readers[16]; int slots[16]; - int i, j, k, found; + unsigned int i; + int j, k, found; unsigned int event; - for (i = k = 0; i < ctx->reader_count; i++) { - if (reader_id >= 0 && reader_id != i) + for (i = k = 0; i < sc_ctx_get_reader_count(ctx); i++) { + if (reader_id >= 0 && (unsigned int)reader_id != i) continue; - reader = ctx->reader[i]; + reader = sc_ctx_get_reader(ctx, i); for (j = 0; j < reader->slot_count; j++, k++) { readers[k] = reader; slots[k] = j; @@ -46,20 +47,20 @@ int connect_card(sc_context_t *ctx, sc_card_t **cardp, } else { if (reader_id < 0) reader_id = 0; - if (ctx->reader_count == 0) { + if (sc_ctx_get_reader_count(ctx) == 0) { fprintf(stderr, "No smart card readers configured.\n"); return 1; } - if (reader_id >= ctx->reader_count) { + if ((unsigned int)reader_id >= sc_ctx_get_reader_count(ctx)) { fprintf(stderr, "Illegal reader number. " "Only %d reader(s) configured.\n", - ctx->reader_count); + sc_ctx_get_reader_count(ctx)); return 1; } - reader = ctx->reader[reader_id]; + reader = sc_ctx_get_reader(ctx, reader_id); slot_id = 0; if (sc_detect_card_presence(reader, 0) <= 0) { fprintf(stderr, "Card not present.\n");