[Pcsclite-cvs-commit] r4233 - /trunk/PCSC/src/testpcsc.c
rousseau at users.alioth.debian.org
rousseau at users.alioth.debian.org
Thu May 28 13:30:13 UTC 2009
Author: rousseau
Date: Thu May 28 13:30:12 2009
New Revision: 4233
URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=4233
Log:
use a union of fields with different types instead of casts to avoid
testpcsc.c:313: warning: dereferencing type-punned pointer will break strict-aliasing rules
testpcsc.c:323: warning: dereferencing type-punned pointer will break strict-aliasing rules
Thanks to Stanislav Brabec for the patch
Modified:
trunk/PCSC/src/testpcsc.c
Modified: trunk/PCSC/src/testpcsc.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/testpcsc.c?rev=4233&op=diff
==============================================================================
--- trunk/PCSC/src/testpcsc.c (original)
+++ trunk/PCSC/src/testpcsc.c Thu May 28 13:30:12 2009
@@ -65,7 +65,11 @@
#else
unsigned char pbAtr[MAX_ATR_SIZE];
#endif
- unsigned char buf[100];
+ union {
+ unsigned char as_char[100];
+ DWORD as_DWORD;
+ uint32_t as_uint32_t;
+ } buf;
DWORD dwBufLen;
unsigned char *pbAttr = NULL;
DWORD pcbAttrLen;
@@ -306,31 +310,31 @@
printf("Testing SCardGetAttrib\t\t: ");
dwBufLen = sizeof(buf);
- rv = SCardGetAttrib(hCard, SCARD_ATTR_VENDOR_IFD_VERSION, buf, &dwBufLen);
+ rv = SCardGetAttrib(hCard, SCARD_ATTR_VENDOR_IFD_VERSION, buf.as_char, &dwBufLen);
test_rv(rv, hContext, DONT_PANIC);
if (rv == SCARD_S_SUCCESS)
printf("Vendor IFD version\t\t: " GREEN "0x%08lX\n" NORMAL,
- ((DWORD *)buf)[0]);
+ buf.as_DWORD);
printf("Testing SCardGetAttrib\t\t: ");
dwBufLen = sizeof(buf);
- rv = SCardGetAttrib(hCard, SCARD_ATTR_MAXINPUT, buf, &dwBufLen);
+ rv = SCardGetAttrib(hCard, SCARD_ATTR_MAXINPUT, buf.as_char, &dwBufLen);
test_rv(rv, hContext, DONT_PANIC);
if (rv == SCARD_S_SUCCESS)
{
if (dwBufLen == sizeof(uint32_t))
printf("Max message length\t\t: " GREEN "%d\n" NORMAL,
- *(uint32_t *)buf);
+ buf.as_uint32_t);
else
printf(RED "Wrong size" NORMAL);
}
printf("Testing SCardGetAttrib\t\t: ");
dwBufLen = sizeof(buf);
- rv = SCardGetAttrib(hCard, SCARD_ATTR_VENDOR_NAME, buf, &dwBufLen);
+ rv = SCardGetAttrib(hCard, SCARD_ATTR_VENDOR_NAME, buf.as_char, &dwBufLen);
test_rv(rv, hContext, DONT_PANIC);
if (rv == SCARD_S_SUCCESS)
- printf("Vendor name\t\t\t: " GREEN "%s\n" NORMAL, buf);
+ printf("Vendor name\t\t\t: " GREEN "%s\n" NORMAL, buf.as_char);
printf("Testing SCardSetAttrib\t\t: ");
rv = SCardSetAttrib(hCard, SCARD_ATTR_ATR_STRING, (LPCBYTE)"", 1);
More information about the Pcsclite-cvs-commit
mailing list