[Pcsclite-git-commit] [PCSC] 02/04: Add BufferOverflow_SCardControl.c test code
Ludovic Rousseau
rousseau at moszumanska.debian.org
Tue Feb 28 17:04:42 UTC 2017
This is an automated email from the git hooks/post-receive script.
rousseau pushed a commit to branch master
in repository PCSC.
commit 4c57679826bf1fbfda995a7869f8a19c572a2784
Author: Ludovic Rousseau <ludovic.rousseau at free.fr>
Date: Tue Feb 28 16:31:47 2017 +0100
Add BufferOverflow_SCardControl.c test code
Test for the patch implemented in 09cf6c7de55f1b4ab1d8a3f86c7a56d7a8621538
---
UnitaryTests/BufferOverflow_SCardControl.c | 81 ++++++++++++++++++++++++++++++
UnitaryTests/Makefile | 1 +
2 files changed, 82 insertions(+)
diff --git a/UnitaryTests/BufferOverflow_SCardControl.c b/UnitaryTests/BufferOverflow_SCardControl.c
new file mode 100644
index 0000000..9a3f2eb
--- /dev/null
+++ b/UnitaryTests/BufferOverflow_SCardControl.c
@@ -0,0 +1,81 @@
+/*
+ * MUSCLE SmartCard Development ( http://pcsclite.alioth.debian.org/pcsclite.html )
+ *
+ * Copyright (C) 2009
+ * Ludovic Rousseau <ludovic.rousseau at free.fr>
+ */
+#include <stdio.h>
+#include <string.h>
+
+#ifdef __APPLE__
+#include <PCSC/winscard.h>
+#include <PCSC/wintypes.h>
+#else
+#include <winscard.h>
+#include <reader.h>
+#endif
+
+#define GREEN "\33[32m"
+#define BRIGHT_RED "\33[01;31m"
+#define NORMAL "\33[0m"
+
+int main(void)
+{
+ SCARDCONTEXT hContext;
+ SCARDHANDLE hCard;
+ DWORD dwActiveProtocol;
+ LONG rv;
+ char mszReaders[1024];
+ DWORD dwReaders = sizeof(mszReaders);
+ unsigned char bRecvBuffer[MAX_BUFFER_SIZE];
+ DWORD length;
+
+ rv = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hContext);
+ printf("SCardEstablishContext %lX\n", rv);
+
+ rv = SCardListReaders(hContext, NULL, mszReaders, &dwReaders);
+ printf("SCardListReaders %lX\n", rv);
+
+ rv = SCardConnect(hContext, mszReaders, SCARD_SHARE_DIRECT,
+ SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1, &hCard,
+ &dwActiveProtocol);
+ printf("SCardConnect %lX\n", rv);
+
+ /* expected size is at least 4 bytes */
+ length = 3;
+ rv = SCardControl(hCard, CM_IOCTL_GET_FEATURE_REQUEST, NULL, 0,
+ bRecvBuffer, length, &length);
+ if (SCARD_E_INSUFFICIENT_BUFFER == rv)
+ {
+ printf(GREEN "test PASS. Insufficient buffer is expected\n" NORMAL);
+ }
+ else
+ {
+ printf(BRIGHT_RED "test FAIL\n" NORMAL);
+ }
+ printf("SCardControl %lX: %s\n", rv, pcsc_stringify_error(rv));
+ printf("Expected length: %ld\n", length);
+ if (SCARD_S_SUCCESS == rv)
+ {
+ int i;
+
+ for (i=0; i<length; i++)
+ printf("%02X ", bRecvBuffer[i]);
+ printf("\n");
+ }
+
+ rv = SCardControl(hCard, CM_IOCTL_GET_FEATURE_REQUEST, NULL, 0,
+ bRecvBuffer, sizeof bRecvBuffer, &length);
+ printf("SCardControl %lX: %s\n", rv, pcsc_stringify_error(rv));
+ printf("Expected length: %ld\n", length);
+ if (SCARD_S_SUCCESS == rv)
+ {
+ int i;
+
+ for (i=0; i<length; i++)
+ printf("%02X ", bRecvBuffer[i]);
+ printf("\n");
+ }
+
+ return 0;
+}
diff --git a/UnitaryTests/Makefile b/UnitaryTests/Makefile
index cce25ff..98c7647 100644
--- a/UnitaryTests/Makefile
+++ b/UnitaryTests/Makefile
@@ -12,6 +12,7 @@ LDLIBS := $(PCSC_LDLIBS)
PROGRAMS := SCardBeginTransaction \
BufferOverflow \
BufferOverflow2 \
+ BufferOverflow_SCardControl \
exec
all: $(PROGRAMS)
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pcsclite/PCSC.git
More information about the Pcsclite-cvs-commit
mailing list