fixed bug stating insufficient buffer

git-svn-id: https://vsmartcard.svn.sourceforge.net/svnroot/vsmartcard@518 96b47cad-a561-4643-ad3b-153ac7d7599c
This commit is contained in:
frankmorgner
2011-09-02 14:15:26 +00:00
parent 59b8a9b0da
commit 326904b2de

View File

@@ -1,7 +1,7 @@
Index: ccid-1.4.4/src/ccid.h Index: ccid-1.4.4/src/ccid.h
=================================================================== ===================================================================
--- ccid-1.4.4.orig/src/ccid.h 2011-08-09 12:43:45.364997651 +0200 --- ccid-1.4.4.orig/src/ccid.h 2011-05-13 10:56:01.000000000 +0200
+++ ccid-1.4.4/src/ccid.h 2011-08-09 12:44:14.611616565 +0200 +++ ccid-1.4.4/src/ccid.h 2011-09-02 16:07:03.000000000 +0200
@@ -142,8 +142,10 @@ @@ -142,8 +142,10 @@
#define CCID_CLASS_EXCHANGE_MASK 0x00070000 #define CCID_CLASS_EXCHANGE_MASK 0x00070000
@@ -52,8 +52,8 @@ Index: ccid-1.4.4/src/ccid.h
#define ISO_DATA_RATES 10753, 14337, 15625, 17204, \ #define ISO_DATA_RATES 10753, 14337, 15625, 17204, \
Index: ccid-1.4.4/src/ccid_ifdhandler.h Index: ccid-1.4.4/src/ccid_ifdhandler.h
=================================================================== ===================================================================
--- ccid-1.4.4.orig/src/ccid_ifdhandler.h 2011-08-09 12:43:45.373002117 +0200 --- ccid-1.4.4.orig/src/ccid_ifdhandler.h 2010-06-04 14:31:15.000000000 +0200
+++ ccid-1.4.4/src/ccid_ifdhandler.h 2011-08-09 13:00:19.457796237 +0200 +++ ccid-1.4.4/src/ccid_ifdhandler.h 2011-09-02 16:07:03.000000000 +0200
@@ -59,4 +59,9 @@ @@ -59,4 +59,9 @@
CcidDesc *get_ccid_slot(unsigned int reader_index); CcidDesc *get_ccid_slot(unsigned int reader_index);
@@ -66,8 +66,8 @@ Index: ccid-1.4.4/src/ccid_ifdhandler.h
Index: ccid-1.4.4/src/commands.c Index: ccid-1.4.4/src/commands.c
=================================================================== ===================================================================
--- ccid-1.4.4.orig/src/commands.c 2011-08-09 12:43:45.381006510 +0200 --- ccid-1.4.4.orig/src/commands.c 2011-02-22 23:20:26.000000000 +0100
+++ ccid-1.4.4/src/commands.c 2011-08-09 12:46:11.466014831 +0200 +++ ccid-1.4.4/src/commands.c 2011-09-02 16:07:03.000000000 +0200
@@ -75,6 +75,18 @@ @@ -75,6 +75,18 @@
unsigned int tx_length, unsigned char tx_buffer[], unsigned int *rx_length, unsigned int tx_length, unsigned char tx_buffer[], unsigned int *rx_length,
unsigned char rx_buffer[]); unsigned char rx_buffer[]);
@@ -450,8 +450,8 @@ Index: ccid-1.4.4/src/commands.c
* *
Index: ccid-1.4.4/src/commands.h Index: ccid-1.4.4/src/commands.h
=================================================================== ===================================================================
--- ccid-1.4.4.orig/src/commands.h 2011-08-09 12:43:45.393012512 +0200 --- ccid-1.4.4.orig/src/commands.h 2010-06-04 14:31:15.000000000 +0200
+++ ccid-1.4.4/src/commands.h 2011-08-09 12:44:14.615618285 +0200 +++ ccid-1.4.4/src/commands.h 2011-09-02 16:07:03.000000000 +0200
@@ -37,6 +37,14 @@ @@ -37,6 +37,14 @@
unsigned char TxBuffer[], unsigned int TxLength, unsigned char TxBuffer[], unsigned int TxLength,
unsigned char RxBuffer[], unsigned int *RxLength); unsigned char RxBuffer[], unsigned int *RxLength);
@@ -469,9 +469,9 @@ Index: ccid-1.4.4/src/commands.h
unsigned char RxBuffer[], unsigned int *RxLength); unsigned char RxBuffer[], unsigned int *RxLength);
Index: ccid-1.4.4/src/ifdhandler.c Index: ccid-1.4.4/src/ifdhandler.c
=================================================================== ===================================================================
--- ccid-1.4.4.orig/src/ifdhandler.c 2011-08-09 12:43:45.409020406 +0200 --- ccid-1.4.4.orig/src/ifdhandler.c 2011-05-11 11:46:00.000000000 +0200
+++ ccid-1.4.4/src/ifdhandler.c 2011-08-09 12:50:19.537986427 +0200 +++ ccid-1.4.4/src/ifdhandler.c 2011-09-02 16:12:56.000000000 +0200
@@ -65,6 +65,71 @@ @@ -65,6 +65,73 @@
static unsigned int T1_card_timeout(double f, double d, int TC1, int BWI, static unsigned int T1_card_timeout(double f, double d, int TC1, int BWI,
int CWI, int clock_frequency); int CWI, int clock_frequency);
static int get_IFSC(ATR_t *atr, int *i); static int get_IFSC(ATR_t *atr, int *i);
@@ -506,15 +506,17 @@ Index: ccid-1.4.4/src/ifdhandler.c
+ +
+ switch(*TxBuffer) { + switch(*TxBuffer) {
+ case 1: + case 1:
+ i = RxLength;
+ r = SecurePINPACECapabilities(reader_index, + r = SecurePINPACECapabilities(reader_index,
+ TxBuffer+3, lengthInputData, RxBuffer, &i); + TxBuffer+3, lengthInputData, RxBuffer, &i);
+ *pdwBytesReturned = i; + *pdwBytesReturned = i;
+ return r; + return r;
+ +
+ case 2: + case 2:
+ i = RxLength;
+ r = SecurePINPACEVerify(reader_index, TxBuffer+3, + r = SecurePINPACEVerify(reader_index, TxBuffer+3,
+ lengthInputData, RxBuffer, &i); + lengthInputData, RxBuffer, &i);
+ *pdwBytesReturned = i; + *pdwBytesReturned = i;
+ return r; + return r;
+ +
+ default: + default:
@@ -543,7 +545,7 @@ Index: ccid-1.4.4/src/ifdhandler.c
EXTERNAL RESPONSECODE IFDHCreateChannelByName(DWORD Lun, LPSTR lpcDevice) EXTERNAL RESPONSECODE IFDHCreateChannelByName(DWORD Lun, LPSTR lpcDevice)
@@ -1400,6 +1465,17 @@ @@ -1400,6 +1467,17 @@
iBytesReturned += sizeof(PCSC_TLV_STRUCTURE); iBytesReturned += sizeof(PCSC_TLV_STRUCTURE);
} }
@@ -561,7 +563,7 @@ Index: ccid-1.4.4/src/ifdhandler.c
/* We can always forward wLcdLayout */ /* We can always forward wLcdLayout */
pcsc_tlv -> tag = FEATURE_IFD_PIN_PROPERTIES; pcsc_tlv -> tag = FEATURE_IFD_PIN_PROPERTIES;
pcsc_tlv -> length = 0x04; /* always 0x04 */ pcsc_tlv -> length = 0x04; /* always 0x04 */
@@ -1582,6 +1658,12 @@ @@ -1582,6 +1660,12 @@
} }
} }