Merge branch 'master' of github.com:awakecoding/FreeRDP
This commit is contained in:
commit
a2fa4eb6ed
@ -145,32 +145,6 @@ const char* smartcard_get_ioctl_string(UINT32 ioControlCode, BOOL funcName)
|
||||
return funcName ? "SCardUnknown" : "SCARD_IOCTL_UNKNOWN";
|
||||
}
|
||||
|
||||
size_t smartcard_multi_string_length_a(const char* msz)
|
||||
{
|
||||
char* p = (char*) msz;
|
||||
|
||||
if (!p)
|
||||
return 0;
|
||||
|
||||
while ((p[0] != 0) && (p[1] != 0))
|
||||
p++;
|
||||
|
||||
return (p - msz) + 1;
|
||||
}
|
||||
|
||||
size_t smartcard_multi_string_length_w(const WCHAR* msz)
|
||||
{
|
||||
WCHAR* p = (WCHAR*) msz;
|
||||
|
||||
if (!p)
|
||||
return 0;
|
||||
|
||||
while ((p[0] != 0) && (p[1] != 0))
|
||||
p++;
|
||||
|
||||
return (p - msz) + 1;
|
||||
}
|
||||
|
||||
static UINT32 smartcard_EstablishContext(SMARTCARD_DEVICE* smartcard, IRP* irp)
|
||||
{
|
||||
UINT32 status;
|
||||
@ -363,7 +337,7 @@ static UINT32 smartcard_GetStatusChangeA(SMARTCARD_DEVICE* smartcard, IRP* irp)
|
||||
ret.rgReaderStates[index].dwCurrentState = call.rgReaderStates[index].dwCurrentState;
|
||||
ret.rgReaderStates[index].dwEventState = call.rgReaderStates[index].dwEventState;
|
||||
ret.rgReaderStates[index].cbAtr = call.rgReaderStates[index].cbAtr;
|
||||
CopyMemory(&ret.rgReaderStates[index].rgbAtr, &call.rgReaderStates[index].rgbAtr, 32);
|
||||
CopyMemory(&(ret.rgReaderStates[index].rgbAtr), &(call.rgReaderStates[index].rgbAtr), 32);
|
||||
}
|
||||
|
||||
smartcard_trace_get_status_change_return(smartcard, &ret, FALSE);
|
||||
@ -421,7 +395,7 @@ static UINT32 smartcard_GetStatusChangeW(SMARTCARD_DEVICE* smartcard, IRP* irp)
|
||||
ret.rgReaderStates[index].dwCurrentState = call.rgReaderStates[index].dwCurrentState;
|
||||
ret.rgReaderStates[index].dwEventState = call.rgReaderStates[index].dwEventState;
|
||||
ret.rgReaderStates[index].cbAtr = call.rgReaderStates[index].cbAtr;
|
||||
CopyMemory(&ret.rgReaderStates[index].rgbAtr, &call.rgReaderStates[index].rgbAtr, 32);
|
||||
CopyMemory(&(ret.rgReaderStates[index].rgbAtr), &(call.rgReaderStates[index].rgbAtr), 32);
|
||||
}
|
||||
|
||||
smartcard_trace_get_status_change_return(smartcard, &ret, TRUE);
|
||||
|
@ -1496,7 +1496,7 @@ void smartcard_trace_get_status_change_return(SMARTCARD_DEVICE* smartcard, GetSt
|
||||
|
||||
szCurrentState = SCardGetReaderStateString(rgReaderState->dwCurrentState);
|
||||
szEventState = SCardGetReaderStateString(rgReaderState->dwEventState);
|
||||
rgbAtr = winpr_BinToHexString(rgReaderState->rgbAtr, rgReaderState->cbAtr, FALSE);
|
||||
rgbAtr = winpr_BinToHexString((BYTE*) &(rgReaderState->rgbAtr), rgReaderState->cbAtr, FALSE);
|
||||
|
||||
WLog_Print(smartcard->log, WLOG_DEBUG,
|
||||
"\t[%d]: dwCurrentState: %s (0x%08X)",
|
||||
@ -2173,8 +2173,8 @@ UINT32 smartcard_unpack_transmit_call(SMARTCARD_DEVICE* smartcard, wStream* s, T
|
||||
|
||||
Stream_Read_UINT32(s, length); /* Length (4 bytes) */
|
||||
|
||||
Stream_Read_UINT16(s, ioRecvPci.dwProtocol); /* dwProtocol (2 bytes) */
|
||||
Stream_Read_UINT16(s, ioRecvPci.cbExtraBytes); /* cbExtraBytes (2 bytes) */
|
||||
Stream_Read_UINT32(s, ioRecvPci.dwProtocol); /* dwProtocol (4 bytes) */
|
||||
Stream_Read_UINT32(s, ioRecvPci.cbExtraBytes); /* cbExtraBytes (4 bytes) */
|
||||
|
||||
if (ioRecvPci.cbExtraBytes > 1024)
|
||||
{
|
||||
@ -2339,8 +2339,8 @@ UINT32 smartcard_pack_transmit_return(SMARTCARD_DEVICE* smartcard, wStream* s, T
|
||||
|
||||
Stream_EnsureRemainingCapacity(s, cbExtraBytes + 16);
|
||||
Stream_Write_UINT32(s, cbExtraBytes); /* Length (4 bytes) */
|
||||
Stream_Write_UINT16(s, ret->pioRecvPci->dwProtocol); /* dwProtocol (2 bytes) */
|
||||
Stream_Write_UINT16(s, cbExtraBytes); /* cbExtraBytes (2 bytes) */
|
||||
Stream_Write_UINT32(s, ret->pioRecvPci->dwProtocol); /* dwProtocol (4 bytes) */
|
||||
Stream_Write_UINT32(s, cbExtraBytes); /* cbExtraBytes (4 bytes) */
|
||||
Stream_Write(s, pbExtraBytes, cbExtraBytes);
|
||||
smartcard_pack_write_size_align(smartcard, s, cbExtraBytes, 4);
|
||||
}
|
||||
|
@ -227,6 +227,12 @@
|
||||
#define SCARD_NEGOTIABLE 5
|
||||
#define SCARD_SPECIFIC 6
|
||||
|
||||
#if defined(__APPLE__) | defined(sun)
|
||||
#pragma pack(1)
|
||||
#else
|
||||
#pragma pack(push, 1)
|
||||
#endif
|
||||
|
||||
typedef struct _SCARD_IO_REQUEST
|
||||
{
|
||||
DWORD dwProtocol;
|
||||
@ -551,6 +557,12 @@ typedef struct
|
||||
SCARDHANDLE hCardHandle;
|
||||
} OPENCARDNAMEW, *POPENCARDNAMEW, *LPOPENCARDNAMEW;
|
||||
|
||||
#if defined(__APPLE__) | defined(sun)
|
||||
#pragma pack()
|
||||
#else
|
||||
#pragma pack(pop)
|
||||
#endif
|
||||
|
||||
#ifdef UNICODE
|
||||
#define LPOCNCONNPROC LPOCNCONNPROCW
|
||||
#define SCARD_READERSTATE SCARD_READERSTATEW
|
||||
|
@ -64,12 +64,22 @@ typedef int BOOL;
|
||||
|
||||
typedef BOOL *PBOOL, *LPBOOL;
|
||||
|
||||
#ifdef __APPLE__
|
||||
typedef int LONG;
|
||||
typedef unsigned int DWORD;
|
||||
typedef unsigned int ULONG;
|
||||
#else
|
||||
typedef long LONG;
|
||||
typedef unsigned long DWORD;
|
||||
typedef unsigned long ULONG;
|
||||
#endif
|
||||
|
||||
typedef unsigned char BYTE, *PBYTE, *LPBYTE;
|
||||
typedef BYTE BOOLEAN, *PBOOLEAN;
|
||||
typedef unsigned short WCHAR, *PWCHAR;
|
||||
typedef WCHAR* BSTR;
|
||||
typedef char CHAR, *PCHAR;
|
||||
typedef unsigned long DWORD, *PDWORD, *LPDWORD;
|
||||
typedef DWORD *PDWORD, *LPDWORD;
|
||||
typedef unsigned int DWORD32;
|
||||
typedef unsigned __int64 DWORD64;
|
||||
typedef unsigned __int64 ULONGLONG;
|
||||
@ -107,7 +117,7 @@ typedef signed __int64 INT64;
|
||||
#endif
|
||||
typedef const WCHAR* LMCSTR;
|
||||
typedef WCHAR* LMSTR;
|
||||
typedef long LONG, *PLONG, *LPLONG;
|
||||
typedef LONG *PLONG, *LPLONG;
|
||||
typedef signed __int64 LONGLONG;
|
||||
|
||||
typedef __int3264 LONG_PTR, *PLONG_PTR;
|
||||
@ -132,7 +142,7 @@ typedef unsigned char UINT8;
|
||||
typedef unsigned short UINT16;
|
||||
typedef unsigned int UINT32;
|
||||
typedef unsigned __int64 UINT64;
|
||||
typedef unsigned long ULONG, *PULONG;
|
||||
typedef ULONG *PULONG;
|
||||
|
||||
typedef ULONG HRESULT;
|
||||
typedef ULONG SCODE;
|
||||
|
@ -5,6 +5,7 @@ set(MODULE_PREFIX "TEST_CRT")
|
||||
set(${MODULE_PREFIX}_DRIVER ${MODULE_NAME}.c)
|
||||
|
||||
set(${MODULE_PREFIX}_TESTS
|
||||
TestTypes.c
|
||||
TestAlignment.c
|
||||
TestString.c
|
||||
TestUnicodeConversion.c)
|
||||
|
112
winpr/libwinpr/crt/test/TestTypes.c
Normal file
112
winpr/libwinpr/crt/test/TestTypes.c
Normal file
@ -0,0 +1,112 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <winpr/crt.h>
|
||||
#include <winpr/windows.h>
|
||||
|
||||
#define EXPECTED_SIZEOF_BYTE 1
|
||||
#define EXPECTED_SIZEOF_BOOLEAN 1
|
||||
#define EXPECTED_SIZEOF_CHAR 1
|
||||
#define EXPECTED_SIZEOF_UCHAR 1
|
||||
#define EXPECTED_SIZEOF_INT8 1
|
||||
#define EXPECTED_SIZEOF_UINT8 1
|
||||
#define EXPECTED_SIZEOF_INT16 2
|
||||
#define EXPECTED_SIZEOF_UINT16 2
|
||||
#define EXPECTED_SIZEOF_WORD 2
|
||||
#define EXPECTED_SIZEOF_WCHAR 2
|
||||
#define EXPECTED_SIZEOF_SHORT 2
|
||||
#define EXPECTED_SIZEOF_USHORT 2
|
||||
#define EXPECTED_SIZEOF_BOOL 4
|
||||
#define EXPECTED_SIZEOF_INT 4
|
||||
#define EXPECTED_SIZEOF_UINT 4
|
||||
#define EXPECTED_SIZEOF_INT32 4
|
||||
#define EXPECTED_SIZEOF_UINT32 4
|
||||
#define EXPECTED_SIZEOF_DWORD 4
|
||||
#define EXPECTED_SIZEOF_DWORD32 4
|
||||
#define EXPECTED_SIZEOF_LONG 4
|
||||
#define EXPECTED_SIZEOF_LONG32 4
|
||||
#define EXPECTED_SIZEOF_INT64 8
|
||||
#define EXPECTED_SIZEOF_UINT64 8
|
||||
#define EXPECTED_SIZEOF_DWORD64 8
|
||||
#define EXPECTED_SIZEOF_DWORDLONG 8
|
||||
#define EXPECTED_SIZEOF_LONG64 8
|
||||
#define EXPECTED_SIZEOF_ULONGLONG 8
|
||||
#define EXPECTED_SIZEOF_LUID 8
|
||||
#define EXPECTED_SIZEOF_FILETIME 8
|
||||
#define EXPECTED_SIZEOF_LARGE_INTEGER 8
|
||||
#define EXPECTED_SIZEOF_ULARGE_INTEGER 8
|
||||
#define EXPECTED_SIZEOF_GUID 16
|
||||
#define EXPECTED_SIZEOF_SYSTEMTIME 16
|
||||
#define EXPECTED_SIZEOF_SIZE_T sizeof(void*)
|
||||
#define EXPECTED_SIZEOF_INT_PTR sizeof(void*)
|
||||
#define EXPECTED_SIZEOF_UINT_PTR sizeof(void*)
|
||||
#define EXPECTED_SIZEOF_DWORD_PTR sizeof(void*)
|
||||
#define EXPECTED_SIZEOF_LONG_PTR sizeof(void*)
|
||||
#define EXPECTED_SIZEOF_ULONG_PTR sizeof(void*)
|
||||
|
||||
#define TEST_SIZEOF_TYPE(_name) \
|
||||
if (sizeof(_name) != EXPECTED_SIZEOF_ ##_name) { \
|
||||
fprintf(stderr, "sizeof(%s) mismatch: Actual: %d, Expected: %d\n", \
|
||||
#_name, (int) sizeof(_name), (int) EXPECTED_SIZEOF_ ##_name); \
|
||||
status = -1; \
|
||||
}
|
||||
|
||||
int TestTypes(int argc, char* argv[])
|
||||
{
|
||||
int status = 0;
|
||||
|
||||
TEST_SIZEOF_TYPE(INT8)
|
||||
TEST_SIZEOF_TYPE(UINT8)
|
||||
|
||||
TEST_SIZEOF_TYPE(BYTE)
|
||||
TEST_SIZEOF_TYPE(BOOLEAN)
|
||||
TEST_SIZEOF_TYPE(CHAR)
|
||||
TEST_SIZEOF_TYPE(UCHAR)
|
||||
|
||||
TEST_SIZEOF_TYPE(INT16)
|
||||
TEST_SIZEOF_TYPE(UINT16)
|
||||
|
||||
TEST_SIZEOF_TYPE(WORD)
|
||||
TEST_SIZEOF_TYPE(WCHAR)
|
||||
TEST_SIZEOF_TYPE(SHORT)
|
||||
TEST_SIZEOF_TYPE(USHORT)
|
||||
|
||||
/* fails on OS X */
|
||||
//TEST_SIZEOF_TYPE(BOOL)
|
||||
|
||||
TEST_SIZEOF_TYPE(INT)
|
||||
TEST_SIZEOF_TYPE(UINT)
|
||||
TEST_SIZEOF_TYPE(DWORD)
|
||||
TEST_SIZEOF_TYPE(DWORD32)
|
||||
TEST_SIZEOF_TYPE(LONG)
|
||||
TEST_SIZEOF_TYPE(LONG32)
|
||||
|
||||
TEST_SIZEOF_TYPE(INT32)
|
||||
TEST_SIZEOF_TYPE(UINT32)
|
||||
|
||||
TEST_SIZEOF_TYPE(INT64)
|
||||
TEST_SIZEOF_TYPE(UINT64)
|
||||
|
||||
TEST_SIZEOF_TYPE(DWORD64)
|
||||
TEST_SIZEOF_TYPE(DWORDLONG)
|
||||
|
||||
TEST_SIZEOF_TYPE(LONG64)
|
||||
TEST_SIZEOF_TYPE(ULONGLONG)
|
||||
|
||||
TEST_SIZEOF_TYPE(LUID)
|
||||
TEST_SIZEOF_TYPE(FILETIME)
|
||||
TEST_SIZEOF_TYPE(LARGE_INTEGER)
|
||||
TEST_SIZEOF_TYPE(ULARGE_INTEGER)
|
||||
|
||||
TEST_SIZEOF_TYPE(GUID)
|
||||
TEST_SIZEOF_TYPE(SYSTEMTIME)
|
||||
|
||||
TEST_SIZEOF_TYPE(SIZE_T)
|
||||
TEST_SIZEOF_TYPE(INT_PTR)
|
||||
TEST_SIZEOF_TYPE(UINT_PTR)
|
||||
TEST_SIZEOF_TYPE(DWORD_PTR)
|
||||
TEST_SIZEOF_TYPE(LONG_PTR)
|
||||
TEST_SIZEOF_TYPE(ULONG_PTR)
|
||||
|
||||
return status;
|
||||
}
|
||||
|
@ -45,7 +45,10 @@
|
||||
|
||||
void InitializeSCardApiStubs(void);
|
||||
|
||||
#ifndef _WIN32
|
||||
#include "smartcard_pcsc.h"
|
||||
#else
|
||||
#include "smartcard_winscard.h"
|
||||
#endif
|
||||
|
||||
#endif /* WINPR_SMARTCARD_PRIVATE_H */
|
||||
|
@ -21,6 +21,8 @@
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#ifndef _WIN32
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@ -162,3 +164,5 @@ int PCSC_InitializeSCardApi_Link(void)
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -20,6 +20,8 @@
|
||||
#ifndef WINPR_SMARTCARD_PCSC_PRIVATE_H
|
||||
#define WINPR_SMARTCARD_PCSC_PRIVATE_H
|
||||
|
||||
#ifndef _WIN32
|
||||
|
||||
#include <winpr/platform.h>
|
||||
#include <winpr/smartcard.h>
|
||||
|
||||
@ -34,6 +36,22 @@
|
||||
#define PCSC_SCARD_PROTOCOL_RAW 0x00000004
|
||||
#define PCSC_SCARD_PROTOCOL_T15 0x00000008
|
||||
|
||||
#define PCSC_MAX_BUFFER_SIZE 264
|
||||
#define PCSC_MAX_BUFFER_SIZE_EXTENDED (4 + 3 + (1 << 16) + 3 + 2)
|
||||
|
||||
#define PCSC_MAX_ATR_SIZE 33
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LPCSTR szReader;
|
||||
LPVOID pvUserData;
|
||||
DWORD dwCurrentState;
|
||||
DWORD dwEventState;
|
||||
DWORD cbAtr;
|
||||
BYTE rgbAtr[PCSC_MAX_ATR_SIZE]; /* WinSCard: 36, PCSC: 33 */
|
||||
}
|
||||
PCSC_SCARD_READERSTATE;
|
||||
|
||||
struct _PCSCFunctionTable
|
||||
{
|
||||
LONG (* pfnSCardEstablishContext)(DWORD dwScope, LPCVOID pvReserved1, LPCVOID pvReserved2, LPSCARDCONTEXT phContext);
|
||||
@ -52,7 +70,7 @@ struct _PCSCFunctionTable
|
||||
LPSTR mszReaderName, LPDWORD pcchReaderLen, LPDWORD pdwState,
|
||||
LPDWORD pdwProtocol, LPBYTE pbAtr, LPDWORD pcbAtrLen);
|
||||
LONG (* pfnSCardGetStatusChange)(SCARDCONTEXT hContext,
|
||||
DWORD dwTimeout, LPSCARD_READERSTATEA rgReaderStates, DWORD cReaders);
|
||||
DWORD dwTimeout, PCSC_SCARD_READERSTATE* rgReaderStates, DWORD cReaders);
|
||||
LONG (* pfnSCardControl)(SCARDHANDLE hCard,
|
||||
DWORD dwControlCode, LPCVOID pbSendBuffer, DWORD cbSendLength,
|
||||
LPVOID pbRecvBuffer, DWORD cbRecvLength, LPDWORD lpBytesReturned);
|
||||
@ -72,4 +90,6 @@ typedef struct _PCSCFunctionTable PCSCFunctionTable;
|
||||
int PCSC_InitializeSCardApi(void);
|
||||
PSCardApiFunctionTable PCSC_GetSCardApiFunctionTable(void);
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* WINPR_SMARTCARD_PCSC_PRIVATE_H */
|
||||
|
@ -21,6 +21,8 @@
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
#include <winpr/crt.h>
|
||||
#include <winpr/library.h>
|
||||
#include <winpr/smartcard.h>
|
||||
@ -203,3 +205,5 @@ int WinSCard_InitializeSCardApi(void)
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -20,6 +20,8 @@
|
||||
#ifndef WINPR_SMARTCARD_WINSCARD_PRIVATE_H
|
||||
#define WINPR_SMARTCARD_WINSCARD_PRIVATE_H
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
#include <winpr/smartcard.h>
|
||||
|
||||
#define WINSCARD_LOAD_PROC(_name, ...) \
|
||||
@ -28,4 +30,6 @@
|
||||
int WinSCard_InitializeSCardApi(void);
|
||||
PSCardApiFunctionTable WinSCard_GetSCardApiFunctionTable(void);
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* WINPR_SMARTCARD_WINSCARD_PRIVATE_H */
|
||||
|
Loading…
x
Reference in New Issue
Block a user