Fix patch [4709] for cardmod until build in one static dll
git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@4808 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
parent
a569bf9646
commit
3076fe265c
|
@ -415,8 +415,8 @@ app tokend {
|
|||
}
|
||||
|
||||
app cardmod {
|
||||
#allow only cardmodule pcsc reader for minidriver (mandatory)
|
||||
# FIXME cardmod pcsc hack is now broken.
|
||||
# cardmod app name use special pcsc reader subset
|
||||
# fix options for this reader driver here.
|
||||
|
||||
reader_driver cardmod {
|
||||
# Enable pinpad if detected (PC/SC v2.0.2 Part 10)
|
||||
|
|
|
@ -637,6 +637,11 @@ int sc_context_create(sc_context_t **ctx_out, const sc_context_param_t *parm)
|
|||
|
||||
#ifdef ENABLE_PCSC
|
||||
ctx->reader_driver = sc_get_pcsc_driver();
|
||||
#ifdef ENABLE_CARDMOD
|
||||
if(strcmp(ctx->app_name, "cardmod") == 0) {
|
||||
ctx->reader_driver = sc_get_cardmod_driver();
|
||||
}
|
||||
#endif
|
||||
#elif ENABLE_CTAPI
|
||||
ctx->reader_driver = sc_get_ctapi_driver();
|
||||
#elif ENABLE_OPENCT
|
||||
|
|
|
@ -1540,14 +1540,12 @@ static struct sc_reader_driver cardmod_drv = {
|
|||
0, 0, NULL
|
||||
};
|
||||
|
||||
static int cardmod_init(sc_context_t *ctx, void **reader_data)
|
||||
static int cardmod_init(sc_context_t *ctx)
|
||||
{
|
||||
struct pcsc_global_private_data *gpriv;
|
||||
scconf_block *conf_block = NULL;
|
||||
int ret = SC_ERROR_INTERNAL;
|
||||
|
||||
*reader_data = NULL;
|
||||
|
||||
gpriv = calloc(1, sizeof(struct pcsc_global_private_data));
|
||||
if (gpriv == NULL) {
|
||||
ret = SC_ERROR_OUT_OF_MEMORY;
|
||||
|
@ -1600,7 +1598,7 @@ static int cardmod_init(sc_context_t *ctx, void **reader_data)
|
|||
goto out;
|
||||
}
|
||||
|
||||
*reader_data = gpriv;
|
||||
ctx->reader_drv_data = gpriv;
|
||||
gpriv = NULL;
|
||||
ret = SC_SUCCESS;
|
||||
|
||||
|
@ -1614,9 +1612,9 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int cardmod_finish(sc_context_t *ctx, void *prv_data)
|
||||
static int cardmod_finish(sc_context_t *ctx)
|
||||
{
|
||||
struct pcsc_global_private_data *gpriv = (struct pcsc_global_private_data *) prv_data;
|
||||
struct pcsc_global_private_data *gpriv = (struct pcsc_global_private_data *) ctx->reader_drv_data;
|
||||
|
||||
if (gpriv) {
|
||||
if (gpriv->dlhandle != NULL)
|
||||
|
@ -1627,12 +1625,12 @@ static int cardmod_finish(sc_context_t *ctx, void *prv_data)
|
|||
return SC_SUCCESS;
|
||||
}
|
||||
|
||||
static int cardmod_detect_readers(sc_context_t *ctx, void *prv_data)
|
||||
static int cardmod_detect_readers(sc_context_t *ctx)
|
||||
{
|
||||
SCARDHANDLE card_handle;
|
||||
u8 feature_buf[256], rbuf[SC_MAX_APDU_BUFFER_SIZE];
|
||||
PCSC_TLV_STRUCTURE *pcsc_tlv;
|
||||
struct pcsc_global_private_data *gpriv = (struct pcsc_global_private_data *) prv_data;
|
||||
struct pcsc_global_private_data *gpriv = (struct pcsc_global_private_data *) ctx->reader_drv_data;
|
||||
LONG rv;
|
||||
char reader_name[128];
|
||||
DWORD rcount, feature_len, display_ioctl, reader_name_size = sizeof(reader_name);
|
||||
|
|
Loading…
Reference in New Issue