Hello,

I found a multi-thread issue in the way I used the lists in pcsc-lite
2.0.0 beta. The problem is fixed in the latest version available at
[1].
If you experienced crashes or problems with the previous beta please
try again with the new one.

I as also created two unitary tests [2, 3]. You may want to play with them.

Bye

2010/2/10 Ludovic Rousseau <[email protected]>:
> I uploaded to [1] new versions of pcsc-lite and libccid. They have
> many and important changes (in particular for pcsc-lite). I would like
> to test these versions before I release them as stable. They work for
> me and should work for you too.
>
> I will not detail any specific change here but do not hesitate to ask
> more for information.
>
> Regards

>
> Changes for pcsc-lite:
> pcsc-lite-2.0.0 BETA: Ludovic Rousseau
> 10 Feb 2010
> - redesign the client/server communication:
>  * no more shared memory used (allow pcscd and libpcsclite1.so to be on
>  different computer and talk over a network)
>  * no more difference between short and extended APDU
>  * no more use of a /var/run/pcscd/pcscd.events/ directory. events are
>  sent through the socket
>  * simpler command format between client and server
>  The side effect is that you are not able to mix an old pcscd with a
>  new libpcsclite1.so or the reverse. SCardEstablishContext() will fail
>  unless you update both sides of the communication.
> - Use lists instead of fixed size arrays to store handles.
>  It is now possible to have:
>  - 200 simultaneous PC/SC clients instead of 16
>  - 200 SCardConnect per client instead of 16
>  - 200 clients per reader instead of 16
>  The default value of 200 can be changed by giving an argument to pcscd
>  --max-thread --max-card-handle-per-thread --max-card-handle-per-reader
>  Thanks to Jean-Luc Giraud for the big patch
> - Make SCardReconnect(), SCardStatus() and SCardTransmit() block instead
>  of returning SCARD_E_SHARING_VIOLATION immediately. These functions
>  will then behave like on Windows.
>  This can happen if these functions are called when the reader is
>  locked by a PCSC transaction
>  (SCardBeginTransaction/SCardEndTransaction).
>  You can define the environment variable PCSCLITE_NO_BLOCKING to use
>  the old behavior.
>  Thanks to Jean-Luc Giraud for the patch.
>  http://archives.neohapsis.com/archives/dev/muscle/2010-q1/0041.html
> - SCardEstablishContext(): try to start the pcscd daemon if not already
>  running.
>  . pcscd will suicide itself after 60 seconds of inactivity if it is
>  started using --auto-exit. This is the default behavior when pcscd is
>  started by libpcsclite
>  . Set PCSCLITE_PCSCD_ARGS with the argument you want to pass to pcscd in
>  autostart Only one argument is passed. The space character is not a
>  separator. example: export PCSCLITE_PCSCD_ARGS=-dfa
> - SCardListReaders(): can use SCARD_AUTOALLOCATE
> - SCardGetAttrib(): return SCARD_E_INSUFFICIENT_BUFFER if the driver
>  returns IFD_ERROR_INSUFFICIENT_BUFFER
>  . add support of SCARD_ATTR_DEVICE_FRIENDLY_NAME as it is better
>  implemented in pcscd (it knows the friendly name)
> - SCardGetStatusChange(): Calling with cReaders == 0 will now just
>  return SCARD_S_SUCCESS
>  . Use the special reader name "\\?PnP?\Notification" to wait for a
>  reader event notification
> - SCardTransmit(): do not limit the minimum size of an APDU to 4 bytes.
>  non ISO 7816-4 compliant cards (like Mifare DESFIRE) may use shorter
>  commands
> - SCardStatus(): returns SCARD_E_SHARING_VIOLATION if the reader is
>  already used More conform to Windows
> - PCSC/reader.h: update sruct PIN_PROPERTIES_STRUCTURE to be conform
>  with Revision 2.02.06, April 2009 of PCSCv2 part 10 Fields
>  wLcdMaxCharacters and wLcdMaxLines have been removed
>  . rename FEATURE_MCT_READERDIRECT in FEATURE_MCT_READER_DIRECT to be
>  conform with ch. 2.3 of PCSC v2 part 10
> - SCardControl() return SCARD_E_UNSUPPORTED_FEATURE if the driver
>  returned IFD_ERROR_NOT_SUPPORTED or IFD_NOT_SUPPORTED This is used to
>  separate an unsupported value of ControlCode from a general error
> - Use the standard --sysconfdir=DIR ($prefix/etc by default) instead of
>  --enable-confdir=DIR for defining the directory containing reader.conf
> - remove SCF support (PC/SC over Smart Card Framework). I never used
>  this feature and SCF is now dead and replaced by JSR 268
>  (javax.smartcardio)
> - Better handling of PCSCLITE_STATIC_DRIVER as can be used on platforms
>  using <B5>Clinux (without dynamic loader).  This is used to statically
>  link the reader driver to pcscd. Since the link is static you must
>  define the IFDHandler API version at compilation time. Either define
>  IFDHANDLERv1, IFDHANDLERv2 or IFDHANDLERv3
> - Use dynamic instead of static allocation for the driver library
>  filename. The filename is no more limited to 100 characters.
>  Closes: [#312332] MAX_LIBNAME too short?
> - force the return codes SCARD_* to be long since the SCard* functions
>  return a LONG type
> - some other minor improvements and bug corrections
>

[1] http://ludovic.rousseau.free.fr/softwares/pcsc-lite/
[2] http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/UnitaryTests/ThreadSafe.py
[3] 
http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/UnitaryTests/ThreadSafeConnect.py

-- 
 Dr. Ludovic Rousseau

_______________________________________________
Muscle mailing list
[email protected]
http://lists.drizzle.com/mailman/listinfo/muscle

Reply via email to