[git] GnuPG - branch, master, updated. gnupg-2.1.5-23-g5e1d2fe

by NIIBE Yutaka cvs at cvs.gnupg.org
Tue Jun 23 03:25:13 CEST 2015


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "The GNU Privacy Guard".

The branch, master has been updated
       via  5e1d2fe6555d06f9dcd2daac713b2edfbc0428a5 (commit)
      from  4698e5b203bd983503b5fd784fcd09dd3bc3a15e (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 5e1d2fe6555d06f9dcd2daac713b2edfbc0428a5
Author: NIIBE Yutaka <gniibe at fsij.org>
Date:   Tue Jun 23 10:10:15 2015 +0900

    scd: pinpad workaround for PC/SC implementations.
    
    * scd/adpu.c (pcsc_pinpad_verify, pcsc_pinpad_modify): Bigger buffer
    for TPDU card reader.
    
    --
    
    GnuPG-bug-id: 2003, 2004
    
    This is needed for PC/SC on Debian Jessie.  Note that it's not only
    for Cherry ST-2000, but also, for any TPDU card readers.

diff --git a/scd/apdu.c b/scd/apdu.c
index 82b2e1f..e8797cd 100644
--- a/scd/apdu.c
+++ b/scd/apdu.c
@@ -2290,8 +2290,16 @@ pcsc_pinpad_verify (int slot, int class, int ins, int p0, int p1,
   int sw;
   unsigned char *pin_verify;
   int len = PIN_VERIFY_STRUCTURE_SIZE + pininfo->fixedlen;
-  unsigned char result[2];
-  pcsc_dword_t resultlen = 2;
+  /*
+   * The result buffer is only expected to have two-byte result on
+   * return.  However, some implementation uses this buffer for lower
+   * layer too and it assumes that there is enough space for lower
+   * layer communication.  Such an implementation fails for TPDU
+   * readers with "insufficient buffer", as it needs header and
+   * trailer.  Six is the number for header + result + trailer (TPDU).
+   */
+  unsigned char result[6];
+  pcsc_dword_t resultlen = 6;
   int no_lc;
 
   if (!reader_table[slot].atrlen
@@ -2365,8 +2373,8 @@ pcsc_pinpad_modify (int slot, int class, int ins, int p0, int p1,
   int sw;
   unsigned char *pin_modify;
   int len = PIN_MODIFY_STRUCTURE_SIZE + 2 * pininfo->fixedlen;
-  unsigned char result[2];
-  pcsc_dword_t resultlen = 2;
+  unsigned char result[6];      /* See the comment at pinpad_verify.  */
+  pcsc_dword_t resultlen = 6;
   int no_lc;
 
   if (!reader_table[slot].atrlen

-----------------------------------------------------------------------

Summary of changes:
 scd/apdu.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)


hooks/post-receive
-- 
The GNU Privacy Guard
http://git.gnupg.org




More information about the Gnupg-commits mailing list