index : packages | |
Archlinux32 package modifications | gitolite user |
summaryrefslogtreecommitdiff |
author | Erich Eckner <git@eckner.net> | 2017-07-04 22:09:02 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2017-07-04 22:09:02 +0200 |
commit | 55571069296aac5e4c7f286796b3aa69ac3cac5e (patch) | |
tree | ea7353a60b23555a94f87ec8041d4f006a803713 /build-support/gnupg/scd.patch | |
parent | 4c18d81b9854f7352ff0a40da74dc62679aade18 (diff) |
-rw-r--r-- | build-support/gnupg/scd.patch | 97 |
diff --git a/build-support/gnupg/scd.patch b/build-support/gnupg/scd.patch deleted file mode 100644 index 6b07afe3..00000000 --- a/build-support/gnupg/scd.patch +++ /dev/null @@ -1,97 +0,0 @@ -From da4c132cca2c6df81243c9660b7348268a848f88 Mon Sep 17 00:00:00 2001 -From: NIIBE Yutaka <gniibe@fsij.org> -Date: Mon, 13 Feb 2017 11:09:13 +0900 -Subject: [PATCH 1/1] scd: Fix use case of PC/SC. - -* scd/apdu.c (apdu_open_reader): Add an argument APP_EMPTY. -When CCID driver fails to open, try PC/SC if APP is nothing. -* scd/app.c (select_application): Supply arg if APP is nothing. - --- - -After scanning available card readers by CCID driver, scdaemon should -try PC/SC service if no APP is registered yet. Also, when the slot -is allocated for PC/SC (ccid.handle==NULL), it should not call -ccid_compare_BAI, otherwise scdaemon crashes. - -Debian-bug-id: 852702, 854005, 854595, 854616 - -Signed-off-by: NIIBE Yutaka <gniibe@fsij.org> ---- - scd/apdu.c | 14 +++++++++++--- - scd/apdu.h | 2 +- - scd/app.c | 2 +- - 3 files changed, 13 insertions(+), 5 deletions(-) - -diff --git a/scd/apdu.c b/scd/apdu.c -index 6fc62aa..82d53b1 100644 ---- a/scd/apdu.c -+++ b/scd/apdu.c -@@ -3127,7 +3127,7 @@ apdu_open_one_reader (const char *portstr) - } - - int --apdu_open_reader (struct dev_list *dl) -+apdu_open_reader (struct dev_list *dl, int app_empty) - { - int slot; - -@@ -3177,6 +3177,7 @@ apdu_open_reader (struct dev_list *dl) - /* Check identity by BAI against already opened HANDLEs. */ - for (slot = 0; slot < MAX_READER; slot++) - if (reader_table[slot].used -+ && reader_table[slot].ccid.handle - && ccid_compare_BAI (reader_table[slot].ccid.handle, bai)) - break; - -@@ -3201,12 +3202,19 @@ apdu_open_reader (struct dev_list *dl) - dl->idx++; - } - -- slot = -1; -+ /* Not found. Try one for PC/SC, only when it's the initial scan. */ -+ if (app_empty && dl->idx == dl->idx_max) -+ { -+ dl->idx++; -+ slot = apdu_open_one_reader (dl->portstr); -+ } -+ else -+ slot = -1; - } - else - #endif - { /* PC/SC readers. */ -- if (dl->idx == 0) -+ if (app_empty && dl->idx == 0) - { - dl->idx++; - slot = apdu_open_one_reader (dl->portstr); -diff --git a/scd/apdu.h b/scd/apdu.h -index 473def5..6751e8c 100644 ---- a/scd/apdu.h -+++ b/scd/apdu.h -@@ -91,7 +91,7 @@ gpg_error_t apdu_dev_list_start (const char *portstr, struct dev_list **l_p); - void apdu_dev_list_finish (struct dev_list *l); - - /* Note, that apdu_open_reader returns no status word but -1 on error. */ --int apdu_open_reader (struct dev_list *l); -+int apdu_open_reader (struct dev_list *l, int app_empty); - int apdu_open_remote_reader (const char *portstr, - const unsigned char *cookie, size_t length, - int (*readfnc) (void *opaque, -diff --git a/scd/app.c b/scd/app.c -index 5b8da1c..7e72870 100644 ---- a/scd/app.c -+++ b/scd/app.c -@@ -343,7 +343,7 @@ select_application (ctrl_t ctrl, const char *name, app_t *r_app, - int slot; - int periodical_check_needed_this; - -- slot = apdu_open_reader (l); -+ slot = apdu_open_reader (l, !app_top); - if (slot < 0) - break; - --- -2.8.0.rc3 - |