[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