OSEC

Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com
 
From: Jean-Luc Giraud (giraudbtinternet.com)
Date: Fri Jan 04 2002 - 11:33:19 CST

  • Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

    Hi,

    On Friday, January 4, 2002, at 03:44 pm, hariharan swaminathan wrote:

    > Hi,
    > If i remember correct , dwRecvLength should be set by SCardTransmit.
    > We are passing a pointer to get the result length. So i don't
    > understand why this has to be set.

    I think it should be set by the caller as the maximum length of the
    response (i.e. the size of the buffer). Otherwise SCardTransmit does not
    know how much information it can return.

    Not checking this length might cause a buffer overflow...

    So I would patch the code with:

                                      dwRecvLength = sizeof(r); // size of response buffer
                                    rv = SCardTransmit( hCard, PROTOCOL, buffer,
    dwSendLength, \
                  &sRecvPci, r, &dwRecvLength ); \

    BTW, 256 is too small as the answer could be 256 bytes of Data + 2 bytes
    for the SW.

    Cheers,
    JLuc.

    ***************************************************************
    Unix Smart Card Developers - M.U.S.C.L.E.
    (Movement for the Use of Smart Cards in a Linux Environment)
    http://www.linuxnet.com/
    To unsubscribe send an email to majordomolinuxnet.com with
    unsubscribe sclinux
    ***************************************************************