[Pcsclite-cvs-commit] r2535 - trunk/PCSC/src
rousseau at alioth.debian.org
rousseau at alioth.debian.org
Tue May 22 14:44:49 UTC 2007
Author: rousseau
Date: 2007-05-22 14:44:49 +0000 (Tue, 22 May 2007)
New Revision: 2535
Modified:
trunk/PCSC/src/winscard_clnt.c
trunk/PCSC/src/winscard_msg.c
Log:
Initialize memory to avoid valgrind warnings: Syscall param write(buf)
points to uninitialised byte(s)
Modified: trunk/PCSC/src/winscard_clnt.c
===================================================================
--- trunk/PCSC/src/winscard_clnt.c 2007-05-22 13:20:05 UTC (rev 2534)
+++ trunk/PCSC/src/winscard_clnt.c 2007-05-22 14:44:49 UTC (rev 2535)
@@ -25,6 +25,7 @@
#include <unistd.h>
#include <sys/un.h>
#include <errno.h>
+#include <stddef.h>
#include "misc.h"
#include "pcscd.h"
@@ -483,7 +484,7 @@
*/
scEstablishStruct.dwScope = dwScope;
scEstablishStruct.phContext = 0;
- scEstablishStruct.rv = 0;
+ scEstablishStruct.rv = SCARD_S_SUCCESS;
rv = WrapSHMWrite(SCARD_ESTABLISH_CONTEXT, dwClientID,
sizeof(scEstablishStruct), PCSCLITE_MCLIENT_ATTEMPTS,
@@ -555,7 +556,7 @@
SYS_MutexLock(psContextMap[dwContextIndex].mMutex);
scReleaseStruct.hContext = hContext;
- scReleaseStruct.rv = 0;
+ scReleaseStruct.rv = SCARD_S_SUCCESS;
rv = WrapSHMWrite(SCARD_RELEASE_CONTEXT, psContextMap[dwContextIndex].dwClientID,
sizeof(scReleaseStruct),
@@ -717,8 +718,9 @@
scConnectStruct.hContext = hContext;
scConnectStruct.dwShareMode = dwShareMode;
scConnectStruct.dwPreferredProtocols = dwPreferredProtocols;
- scConnectStruct.phCard = *phCard;
- scConnectStruct.pdwActiveProtocol = *pdwActiveProtocol;
+ scConnectStruct.phCard = 0;
+ scConnectStruct.pdwActiveProtocol = 0;
+ scConnectStruct.rv = SCARD_S_SUCCESS;
rv = WrapSHMWrite(SCARD_CONNECT, psContextMap[dwContextIndex].dwClientID,
sizeof(scConnectStruct),
@@ -900,6 +902,7 @@
scReconnectStruct.dwPreferredProtocols = dwPreferredProtocols;
scReconnectStruct.dwInitialization = dwInitialization;
scReconnectStruct.pdwActiveProtocol = *pdwActiveProtocol;
+ scReconnectStruct.rv = SCARD_S_SUCCESS;
rv = WrapSHMWrite(SCARD_RECONNECT, psContextMap[dwContextIndex].dwClientID,
sizeof(scReconnectStruct),
@@ -996,6 +999,7 @@
scDisconnectStruct.hCard = hCard;
scDisconnectStruct.dwDisposition = dwDisposition;
+ scDisconnectStruct.rv = SCARD_S_SUCCESS;
rv = WrapSHMWrite(SCARD_DISCONNECT, psContextMap[dwContextIndex].dwClientID,
sizeof(scDisconnectStruct),
@@ -1102,6 +1106,7 @@
}
scBeginStruct.hCard = hCard;
+ scBeginStruct.rv = SCARD_S_SUCCESS;
/*
* Query the server every so often until the sharing violation ends
@@ -1237,6 +1242,7 @@
scEndStruct.hCard = hCard;
scEndStruct.dwDisposition = dwDisposition;
+ scEndStruct.rv = SCARD_S_SUCCESS;
rv = WrapSHMWrite(SCARD_END_TRANSACTION, psContextMap[dwContextIndex].dwClientID,
sizeof(scEndStruct),
@@ -2250,7 +2256,15 @@
scControlStructExtended->dwControlCode = dwControlCode;
scControlStructExtended->cbSendLength = cbSendLength;
scControlStructExtended->cbRecvLength = cbRecvLength;
- scControlStructExtended->size = sizeof(*scControlStructExtended) + cbSendLength;
+ scControlStructExtended->pdwBytesReturned = 0;
+ scControlStructExtended->rv = SCARD_S_SUCCESS;
+ /* The size of data to send is the size of
+ * struct control_struct_extended WITHOUT the data[] field
+ * plus the effective data[] size
+ */
+ scControlStructExtended->size = sizeof(*scControlStructExtended)
+ - (sizeof(control_struct_extended) - offsetof(control_struct_extended, data))
+ + cbSendLength;
memcpy(scControlStructExtended->data, pbSendBuffer, cbSendLength);
rv = WrapSHMWrite(SCARD_CONTROL_EXTENDED,
@@ -2560,6 +2574,7 @@
scGetSetStruct.dwAttrId = dwAttrId;
scGetSetStruct.cbAttrLen = *pcbAttrLen;
scGetSetStruct.rv = SCARD_E_NO_SERVICE;
+ memset(scGetSetStruct.pbAttr, 0, sizeof(scGetSetStruct.pbAttr));
if (SCARD_SET_ATTRIB == command)
memcpy(scGetSetStruct.pbAttr, pbAttr, *pcbAttrLen);
@@ -2730,6 +2745,7 @@
memcpy(&scTransmitStructExtended->pioSendPci, pioSendPci,
sizeof(SCARD_IO_REQUEST));
memcpy(scTransmitStructExtended->data, pbSendBuffer, cbSendLength);
+ scTransmitStructExtended->rv = SCARD_S_SUCCESS;
if (pioRecvPci)
{
@@ -2737,7 +2753,10 @@
sizeof(SCARD_IO_REQUEST));
}
else
+ {
scTransmitStructExtended->pioRecvPci.dwProtocol = SCARD_PROTOCOL_ANY;
+ scTransmitStructExtended->pioRecvPci.cbPciLength = sizeof(SCARD_IO_REQUEST);
+ }
rv = WrapSHMWrite(SCARD_TRANSMIT_EXTENDED,
psContextMap[dwContextIndex].dwClientID,
@@ -2810,6 +2829,9 @@
memcpy(&scTransmitStruct.pioSendPci, pioSendPci,
sizeof(SCARD_IO_REQUEST));
memcpy(scTransmitStruct.pbSendBuffer, pbSendBuffer, cbSendLength);
+ memset(scTransmitStruct.pbSendBuffer+cbSendLength, 0, sizeof(scTransmitStruct.pbSendBuffer)-cbSendLength);
+ memset(scTransmitStruct.pbRecvBuffer, 0, sizeof(scTransmitStruct.pbRecvBuffer));
+ scTransmitStruct.rv = SCARD_S_SUCCESS;
if (pioRecvPci)
{
@@ -2817,7 +2839,10 @@
sizeof(SCARD_IO_REQUEST));
}
else
+ {
scTransmitStruct.pioRecvPci.dwProtocol = SCARD_PROTOCOL_ANY;
+ scTransmitStruct.pioRecvPci.cbPciLength = sizeof(scTransmitStruct.pioRecvPci);
+ }
rv = WrapSHMWrite(SCARD_TRANSMIT,
psContextMap[dwContextIndex].dwClientID, sizeof(scTransmitStruct),
Modified: trunk/PCSC/src/winscard_msg.c
===================================================================
--- trunk/PCSC/src/winscard_msg.c 2007-05-22 13:20:05 UTC (rev 2534)
+++ trunk/PCSC/src/winscard_msg.c 2007-05-22 14:44:49 UTC (rev 2535)
@@ -425,12 +425,14 @@
msgStruct.user_id = SYS_GetUID();
msgStruct.group_id = SYS_GetGID();
msgStruct.command = command;
+ msgStruct.dummy = 0;
msgStruct.date = time(NULL);
+ memset(msgStruct.key, 0, sizeof(msgStruct.key));
if ((SCARD_TRANSMIT_EXTENDED == command)
|| (SCARD_CONTROL_EXTENDED == command))
{
/* first block */
- memcpy(msgStruct.data, data, PCSCLITE_MAX_MESSAGE_SIZE);
+ memcpy(msgStruct.data, data, size);
ret = SHMMessageSend(&msgStruct, sizeof(msgStruct), dwClientID,
blockAmount);
More information about the Pcsclite-cvs-commit
mailing list