diff options
author | NIIBE Yutaka <[email protected]> | 2013-11-11 07:41:43 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2013-11-11 07:46:00 +0000 |
commit | 07d7015e4dcb8a2439ed781928495632ec0b4fa3 (patch) | |
tree | f11f7a32da7725edad2643966b868a6cb8224a50 | |
parent | scd: pinpad fix for PC/SC on Windows. (diff) | |
download | gnupg-07d7015e4dcb8a2439ed781928495632ec0b4fa3.tar.gz gnupg-07d7015e4dcb8a2439ed781928495632ec0b4fa3.zip |
scd: more pinpad fix.
* scd/apdu.c (check_pcsc_pinpad): Set ->minlen and ->maxlen only when
those are specified.
(pcsc_pinpad_modify): Remove old check code.
--
cherry picked from master.
-rw-r--r-- | scd/apdu.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/scd/apdu.c b/scd/apdu.c index dc186b5bd..49ece0b9a 100644 --- a/scd/apdu.c +++ b/scd/apdu.c @@ -2206,8 +2206,11 @@ check_pcsc_pinpad (int slot, int command, pininfo_t *pininfo) { int r; - pininfo->minlen = reader_table[slot].pcsc.pinmin; - pininfo->maxlen = reader_table[slot].pcsc.pinmax; + if (reader_table[slot].pcsc.pinmin >= 0) + pininfo->minlen = reader_table[slot].pcsc.pinmin; + + if (reader_table[slot].pcsc.pinmax >= 0) + pininfo->maxlen = reader_table[slot].pcsc.pinmax; if ((command == ISO7816_VERIFY && reader_table[slot].pcsc.verify_ioctl != 0) || (command == ISO7816_CHANGE_REFERENCE_DATA @@ -2330,12 +2333,6 @@ pcsc_pinpad_modify (int slot, int class, int ins, int p0, int p1, if (!pininfo->maxlen) pininfo->maxlen = 15; - /* Note that the 25 is the maximum value the SPR532 allows. */ - if (pininfo->minlen < 1 || pininfo->minlen > 25 - || pininfo->maxlen < 1 || pininfo->maxlen > 25 - || pininfo->minlen > pininfo->maxlen) - return SW_HOST_INV_VALUE; - pin_modify = xtrymalloc (len); if (!pin_modify) return SW_HOST_OUT_OF_CORE; |