summaryrefslogtreecommitdiffstats
path: root/pcsc-php8.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pcsc-php8.patch')
-rw-r--r--pcsc-php8.patch176
1 files changed, 176 insertions, 0 deletions
diff --git a/pcsc-php8.patch b/pcsc-php8.patch
new file mode 100644
index 0000000..32bc25a
--- /dev/null
+++ b/pcsc-php8.patch
@@ -0,0 +1,176 @@
+From 054ec3d5a3185e29557851a0db339b6524d5d810 Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@remirepo.net>
+Date: Tue, 9 Feb 2021 07:40:33 +0100
+Subject: [PATCH 1/2] fix build warnings ([-Wunused-variable] and [-Wformat=])
+
+---
+ pcsc.c | 15 ++++++---------
+ 1 file changed, 6 insertions(+), 9 deletions(-)
+
+diff --git a/pcsc.c b/pcsc.c
+index aca54c1..22bfff9 100644
+--- a/pcsc.c
++++ b/pcsc.c
+@@ -1,8 +1,6 @@
+ /*
+ +----------------------------------------------------------------------+
+- | PHP Version 5 |
+- +----------------------------------------------------------------------+
+- | Copyright (c) 1997-2006 The PHP Group |
++ | Copyright (c) The PHP Group |
+ +----------------------------------------------------------------------+
+ | This source file is subject to version 3.01 of the PHP license, |
+ | that is bundled with this package in the file LICENSE, and is |
+@@ -102,13 +100,13 @@ static void php_pcsc_ctx_res_dtor(zend_resource *rsrc) {
+ context=(SCARDCONTEXT)rsrc->ptr;
+ rc = SCardIsValidContext(context);
+ if (rc != SCARD_S_SUCCESS) {
+- php_error_docref(NULL, E_WARNING, "PC/SC context dtor: SCardIsValidContext returned %s (0x%x)", php_pcsc_error_to_string(rc), rc);
++ php_error_docref(NULL, E_WARNING, "PC/SC context dtor: SCardIsValidContext returned %s (0x%lx)", php_pcsc_error_to_string(rc), rc);
+ return;
+ }
+
+ rc = SCardReleaseContext(context);
+ if (rc != SCARD_S_SUCCESS) {
+- php_error_docref(NULL, E_WARNING, "PC/SC context dtor: SCardReleaseContext returned %s (0x%x)", php_pcsc_error_to_string(rc), rc);
++ php_error_docref(NULL, E_WARNING, "PC/SC context dtor: SCardReleaseContext returned %s (0x%lx)", php_pcsc_error_to_string(rc), rc);
+ return;
+ }
+ return;
+@@ -127,7 +125,7 @@ static void php_pcsc_conn_res_dtor(zend_resource *rsrc) {
+
+ rc = SCardDisconnect(hCard, SCARD_LEAVE_CARD);
+ if (rc != SCARD_S_SUCCESS) {
+- php_error_docref(NULL, E_WARNING, "PC/SC connection dtor: SCardDisconnect returned %s (0x%x)", php_pcsc_error_to_string(rc), rc);
++ php_error_docref(NULL, E_WARNING, "PC/SC connection dtor: SCardDisconnect returned %s (0x%lx)", php_pcsc_error_to_string(rc), rc);
+ }
+ }
+
+@@ -539,7 +537,6 @@ PHP_FUNCTION(scard_is_valid_context)
+ Invalidate the PC/SC context */
+ PHP_FUNCTION(scard_release_context)
+ {
+- LONG rc = 0;
+ zval* ctx_res;
+ SCARDCONTEXT context;
+
+@@ -547,6 +544,7 @@ PHP_FUNCTION(scard_release_context)
+ RETURN_NULL();
+ }
+ ZEND_FETCH_RESOURCE(context, SCARDCONTEXT, &ctx_res, -1, PHP_PCSC_CTX_RES_NAME, le_pcsc_ctx_res);
++ (void)context;
+
+ zend_hash_index_del(&EG(regular_list), Z_RES_HANDLE_P(ctx_res));
+ RETURN_TRUE;
+@@ -669,7 +667,7 @@ PHP_FUNCTION(scard_transmit)
+ SCARD_IO_REQUEST *recvPci = NULL;
+ BYTE *sendBuffer;
+ BYTE *recvBuffer;
+- DWORD sendLen, recvLen;
++ DWORD sendLen = 0, recvLen;
+ LONG rc;
+ char *apdu;
+ size_t apduLen;
+@@ -734,7 +732,6 @@ PHP_FUNCTION(scard_status)
+ {
+ zval* conn_res;
+ SCARDHANDLE hCard = 0;
+- char *strReader = NULL;
+ DWORD dwProtocol, dwState;
+ BYTE atrBuffer[32];
+ DWORD atrLen;
+
+From 1d0a009e0252e6be2e020a14f7a2b3fca47a52cc Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@remirepo.net>
+Date: Tue, 9 Feb 2021 07:50:34 +0100
+Subject: [PATCH 2/2] add missing arginfo (mandatory for PHP 8)
+
+---
+ pcsc.c | 52 ++++++++++++++++++++++++++++++++++++++++++----------
+ 1 file changed, 42 insertions(+), 10 deletions(-)
+
+diff --git a/pcsc.c b/pcsc.c
+index 22bfff9..3b6f788 100644
+--- a/pcsc.c
++++ b/pcsc.c
+@@ -44,24 +44,49 @@ ZEND_BEGIN_ARG_INFO_EX(php_pcsc_scard_connect_arginfo, 0, 0, 2)
+ ZEND_ARG_INFO(1, active_protocol)
+ ZEND_END_ARG_INFO()
+
++ZEND_BEGIN_ARG_INFO_EX(php_pcsc_scard_void, 0, 0, 0)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(php_pcsc_scard_context, 0, 0, 1)
++ ZEND_ARG_INFO(0, context)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(php_pcsc_scard_disconnect, 0, 0, 1)
++ ZEND_ARG_INFO(0, card)
++ ZEND_ARG_INFO(0, disposition)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(php_pcsc_scard_transmit, 0, 0, 2)
++ ZEND_ARG_INFO(0, card)
++ ZEND_ARG_INFO(0, command)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(php_pcsc_scard_card, 0, 0, 1)
++ ZEND_ARG_INFO(0, card)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(php_pcsc_scard_errstr, 0, 0, 1)
++ ZEND_ARG_INFO(0, errno)
++ZEND_END_ARG_INFO()
++
+ /* {{{ pcsc_functions[]
+ *
+ * Every user visible function must have an entry in pcsc_functions[].
+ */
+ zend_function_entry pcsc_functions[] = {
+- PHP_FE(scard_establish_context, NULL)
+- PHP_FE(scard_release_context, NULL)
+- PHP_FE(scard_is_valid_context, NULL)
+- PHP_FE(scard_list_readers, NULL)
++ PHP_FE(scard_establish_context, php_pcsc_scard_void)
++ PHP_FE(scard_release_context, php_pcsc_scard_context)
++ PHP_FE(scard_is_valid_context, php_pcsc_scard_context)
++ PHP_FE(scard_list_readers, php_pcsc_scard_context)
+ PHP_FE(scard_connect, php_pcsc_scard_connect_arginfo)
+ //PHP_FE(scard_reconnect, NULL)
+- PHP_FE(scard_disconnect, NULL)
+- PHP_FE(scard_transmit, NULL)
+- PHP_FE(scard_status, NULL)
++ PHP_FE(scard_disconnect, php_pcsc_scard_disconnect)
++ PHP_FE(scard_transmit, php_pcsc_scard_transmit)
++ PHP_FE(scard_status, php_pcsc_scard_card)
+ //PHP_FE(scard_get_status_change, NULL)
+- PHP_FE(scard_last_errno, NULL)
+- PHP_FE(scard_errstr, NULL)
+- {NULL, NULL, NULL}
++ PHP_FE(scard_last_errno, php_pcsc_scard_void)
++ PHP_FE(scard_errstr, php_pcsc_scard_errstr)
++ PHP_FE_END
+ };
+ /* }}} */
+
+@@ -500,6 +525,10 @@ PHP_FUNCTION(scard_establish_context)
+ SCARDCONTEXT scard_context = 0;
+ LONG rc = 0;
+
++ if (zend_parse_parameters_none() == FAILURE) {
++ return;
++ }
++
+ rc = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &scard_context);
+ if (rc != SCARD_S_SUCCESS)
+ {
+@@ -796,6 +825,9 @@ PHP_FUNCTION(scard_status)
+ Retrieve last error code */
+ PHP_FUNCTION(scard_last_errno)
+ {
++ if (zend_parse_parameters_none() == FAILURE) {
++ return;
++ }
+ RETURN_LONG(PCSC_G(last_errno));
+ }
+ /* }}} */