Fix two crashes caused by improver handling of structures.

git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/trunk/rdesktop@1413 423420c4-83ab-492f-b58f-81f9feb106b5
This commit is contained in:
Pierre Ossman 2007-06-28 12:52:13 +00:00
parent 81a75745cb
commit d90bdbcb23

View File

@ -1268,6 +1268,7 @@ TS_SCardLocateCardsByATR(STREAM in, STREAM out, RD_BOOL wide)
myRsArray = SC_xmalloc(&lcHandle, readerCount * sizeof(MYPCSC_SCARD_READERSTATE_A));
if (!myRsArray)
return SC_returnNoMemoryError(&lcHandle, in, out);
copyReaderState_ServerToMyPCSC(rsArray, myRsArray, readerCount);
rv = SCardGetStatusChange((MYPCSC_SCARDCONTEXT) hContext, 0x00000001, myRsArray,
readerCount);
copyReaderState_MyPCSCToServer(myRsArray, rsArray, readerCount);
@ -1572,7 +1573,12 @@ TS_SCardTransmit(STREAM in, STREAM out)
if (pioRecvPci)
{
copyIORequest_MyPCSCToServer(myPioRecvPci, pioRecvPci);
/*
* pscs-lite mishandles this structure in some cases.
* make sure we only copy it if it is valid.
*/
if (myPioRecvPci->cbPciLength >= sizeof(MYPCSC_SCARD_IO_REQUEST))
copyIORequest_MyPCSCToServer(myPioRecvPci, pioRecvPci);
}
if (rv != SCARD_S_SUCCESS)