svn commit: r438157 - in head/security/openct: . files
Alex Dupre
ale at FreeBSD.org
Mon Apr 10 12:14:52 UTC 2017
Author: ale
Date: Mon Apr 10 12:14:50 2017
New Revision: 438157
URL: https://svnweb.freebsd.org/changeset/ports/438157
Log:
Don't truncate received APDU when talking to pcsc-lite.
PR: 204552
Submitted by: Marcin Cieslak <saper at saper.info>
Added:
head/security/openct/files/patch-src_pcsc_pcsc.c (contents, props changed)
Modified:
head/security/openct/Makefile
Modified: head/security/openct/Makefile
==============================================================================
--- head/security/openct/Makefile Mon Apr 10 12:12:00 2017 (r438156)
+++ head/security/openct/Makefile Mon Apr 10 12:14:50 2017 (r438157)
@@ -3,7 +3,7 @@
PORTNAME= openct
PORTVERSION= 0.6.20
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= security
MASTER_SITES= SF/opensc/${PORTNAME}
Added: head/security/openct/files/patch-src_pcsc_pcsc.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/security/openct/files/patch-src_pcsc_pcsc.c Mon Apr 10 12:14:50 2017 (r438157)
@@ -0,0 +1,50 @@
+--- src/pcsc/pcsc.c.orig 2007-05-25 21:11:45 UTC
++++ src/pcsc/pcsc.c
+@@ -25,6 +25,7 @@
+ #ifdef DEBUG_IFDH
+ #include <syslog.h>
+ #endif
++#include <limits.h>
+ #ifdef __APPLE__
+ #include <PCSC/wintypes.h>
+ #include <PCSC/pcsclite.h>
+@@ -390,6 +391,10 @@ IFDHTransmitToICC(DWORD Lun, SCARD_IO_HE
+ ctn = ((unsigned short)(Lun >> 16)) % IFDH_MAX_READERS;
+ slot = ((unsigned short)(Lun & 0x0000FFFF)) % IFDH_MAX_SLOTS;
+
++ if (TxLength > USHRT_MAX) {
++ (*RxLength) = 0;
++ return IFD_PROTOCOL_NOT_SUPPORTED;
++ }
+ #ifdef HAVE_PTHREAD
+ pthread_mutex_lock(&ifdh_context_mutex[ctn]);
+ #endif
+@@ -399,7 +404,7 @@ IFDHTransmitToICC(DWORD Lun, SCARD_IO_HE
+ #endif
+ dad = (UCHAR) ((slot == 0) ? 0x00 : slot + 1);
+ sad = 0x02;
+- lr = (unsigned short)(*RxLength);
++ lr = (*RxLength > USHRT_MAX) ? USHRT_MAX : (unsigned short)(*RxLength);
+ lc = (unsigned short)TxLength;
+
+ ret = CT_data(ctn, &dad, &sad, lc, TxBuffer, &lr, RxBuffer);
+@@ -438,6 +443,10 @@ IFDHControl(DWORD Lun, PUCHAR TxBuffer,
+ ctn = ((unsigned short)(Lun >> 16)) % IFDH_MAX_READERS;
+ slot = ((unsigned short)(Lun & 0x0000FFFF)) % IFDH_MAX_SLOTS;
+
++ if (TxLength > USHRT_MAX) {
++ (*RxLength) = 0;
++ return IFD_PROTOCOL_NOT_SUPPORTED;
++ }
+ #ifdef HAVE_PTHREAD
+ pthread_mutex_lock(&ifdh_context_mutex[ctn]);
+ #endif
+@@ -447,7 +456,7 @@ IFDHControl(DWORD Lun, PUCHAR TxBuffer,
+ #endif
+ dad = 0x01;
+ sad = 0x02;
+- lr = (unsigned short)(*RxLength);
++ lr = (*RxLength > USHRT_MAX) ? USHRT_MAX : (unsigned short)(*RxLength);
+ lc = (unsigned short)TxLength;
+
+ ret = CT_data(ctn, &dad, &sad, lc, TxBuffer, &lr, RxBuffer);
More information about the svn-ports-head
mailing list