--enable-embedded: fix compiler warning
[pcsclite/PCSC.git] / ChangeLog
1 1.8.20: Ludovic Rousseau
2 30 December 2016
3 - Fix a crash and potential security issue in pcscd
4
5
6 1.8.19: Ludovic Rousseau
7 9 December 2016
8 - SCardGetStatusChange(): Fix a (rare) race condition
9 - Doxygen:
10   . SCardGetStatusChange() may return SCARD_E_UNKNOWN_READER
11   . SCardConnect() and SCardReconnect() will never return SCARD_E_NOT_READY
12 - pcsc-spy:
13   . fix display of execution time
14   . log the thread number in the results
15 - Some other minor improvements
16
17
18 1.8.18: Ludovic Rousseau
19 10 August 2016
20 - SCardDisconnect(): much faster with SCARD_UNPOWER_CARD
21 - SCardConnect(): Fix a possible duplicated hCard context
22 - Fix compilation on FreeBSD
23 - Fix compilation on Solaris
24 - Some other minor improvements
25
26
27 1.8.17: Ludovic Rousseau
28 29 May 2016
29 - Fix SCardEndTransaction() issue with a SCARD_SHARE_EXCLUSIVE connection
30 - Fix an issue when used with systemd (problem in signal handler)
31 - SCardGetAttrib(): set pcbAttrLen when buffer is too small
32 - Doxygen: SCardGetAttrib() pbAttr can be NULL
33 - Doxygen: SCardGetAttrib() *pcbAttrLen contains the buffer size
34 - fix compilation warnings and link errors on SunOS
35 - Some other minor improvements
36
37
38 1.8.16: Ludovic Rousseau
39 20 March 2016
40 - SCardCancel() was not correctly handled
41   When a SCardGetStatusChange() was cancelled then a next PC/SC call
42   after the SCardGetStatusChange() may fail with a strange error code if
43   the event waited in SCardGetStatusChange() occurs.
44 - Doxygen: fix different documentation issues
45 - SCARD_SCOPE_GLOBAL is now defined in a public header (even if never used)
46 - Enable Trace and Profile features using compiler flags and without
47   modifying the source code
48 - Some other minor improvements and bug corrections
49
50
51 1.8.15: Ludovic Rousseau
52 25 December 2015
53 - Add support of remove and/or customize PC/SC reader names using
54   PCSCLITE_FILTER_IGNORE_READER_NAMES and PCSCLITE_FILTER_EXTEND_READER_NAMES
55   See http://ludovicrousseau.blogspot.fr/2015/12/remove-andor-customize-pcsc-reader-names.html
56 - Some other minor improvements and bug corrections
57
58
59 1.8.14: Ludovic Rousseau
60 5 August 2015
61 - Threading: lock the PC/SC context in a safe way
62 - Threading: lock the card context in a safe way
63 - SCardGetStatusChange(): fix card movement rare bug
64 - Doxygen:
65   . SCardTransmit() may return SCARD_E_INSUFFICIENT_BUFFER
66   . SCardEndTransaction() The disposition IS used and the dwDisposition
67     parameter HAS an effect.
68   . SCardReconnect() do not release locks
69   . fix typos
70 - Move the source code repository from subversion to git
71 - Use asprintf(3) instead of strlcat(3) and strlcpy(3)
72 - Allow to use pcscd in a remote session (polkit issue)
73 - Some other minor improvements and bug corrections
74
75
76 pcsc-lite-1.8.13: Ludovic Rousseau
77 7 November 2014
78 - fix a systemd + libudev hotplug bug introduced in version 1.8.12.
79   The list of readers was not (yet) available just after the start of pcscd
80 - Make the license more 3-clause BSD like
81 - fix a rare race condition in the (non default) libusb hotplug
82 - Some other minor improvements and bug corrections
83
84
85 pcsc-lite-1.8.12: Ludovic Rousseau
86 24 September 2014
87 - make hotplug using libudev (default) more robust
88 - add ReiserFS file system support (for configuration files)
89 - add musl libC support (increase the thread stack)
90 - Some other minor improvements and bug corrections
91
92
93 pcsc-lite-1.8.11: Ludovic Rousseau
94 14 February 2014
95 - Add polkit support. See doc/README.polkit
96 - /etc/reader.conf: CHANNELID and DEVICENAME are both optional but not
97   at the same time
98 - Some other minor improvements and bug corrections
99
100
101 pcsc-lite-1.8.10: Ludovic Rousseau
102 19 October 2013
103 - do not export the internal log_msg symbol from libpcsclite.so.1
104
105
106 pcsc-lite-1.8.9: Ludovic Rousseau
107 16 October 2013
108 - SCardEndTransaction(): Return an error if is called with no
109   corresponding SCardBeginTransaction()
110 - SCardGetAttrib(): Add support of SCARD_ATTR_DEVICE_SYSTEM_NAME
111 - SCardGetAttrib(): Fix bug in SCARD_ATTR_DEVICE_FRIENDLY_NAME
112 - SCardBeginTransaction() was not correctly releasing a mutex when the
113   hCard handle was invalidated
114   The problem was that SCardGetStatusChange() was blocked because
115   SCardBeginTransaction() had not released the context mutex.
116 - PCSC/reader.h: Use C99 flexible array member
117   The structures PIN_MODIFY_STRUCTURE and PIN_VERIFY_STRUCTURE now use a
118   C99 flexible array member when available for abData field.
119   uint8_t abData[];
120 - Add support of --reader-name-no-serial and --reader-name-no-interface
121   It is now possible to NOT add the USB serial number of the reader
122   using --reader-name-no-serial
123   It is now possible to NOT add the CCID interface name of the reader
124   using --reader-name-no-interface
125 - Add support of serialconfdir pkg-config variable
126   It is now possible to use pkg-config to get the directory used by
127   pcscd to fetch serial drivers configurations.
128   $ pkg-config libpcsclite --variable=serialconfdir
129   /etc/reader.conf.d
130 - pcsc-spy: Try to display the thread in the order they appear in the log
131 - pcsc-spy: Add SCARD_ATTR_DEVICE_SYSTEM_NAME
132 - Check the Info.plist file is (a minimum) correct
133 - Update PROTOCOL_VERSION_MINOR from 2 to 3
134   We broke the API between version 1.8.3 and 1.8.4 by changing the value
135   of MAX_READERNAME. This change should have been made before releasing
136   version 1.8.4 to make mix of versions clearly non working instead of
137   failing with strange errors.
138 - hotplug_libudev.c: Fix a memory leak in case of error
139 - Fix OpenBSD 5.2 compilation regarding dlopen
140 - correctly manage thread safe multi-slot readers
141 - Do not use pthread_atfork() any more (fix problem on FreeBSD)
142 - fix memory leaks.
143   This was not really a problem unless you embedd pcscd in another
144   process and do init/deinit pcscd without exiting the process (as maybe
145   used on Android or iOS).
146 - pcscd.8 manpage: add documentation for --max-thread,
147   --max-card-handle-per-thread, --max-card-handle-per-reader,
148   --force-reader-polling, --error, --critical and --color
149 - Some other minor improvements and bug corrections
150
151
152 pcsc-lite-1.8.8: Ludovic Rousseau
153 16 January 2013
154 - /etc/reader.conf: handle FRIENDLYNAME with no " delimiters (serial readers)
155 - Info.plist: Correctly handle reader names containing & (USB readers)
156
157
158 pcsc-lite-1.8.7: Ludovic Rousseau
159 28 November 2012
160 - Fix a problem when a reader is unplugged (and the reader is still in use)
161
162
163 pcsc-lite-1.8.6: Ludovic Rousseau
164 30 August 2012
165 - Fix a problem when only serial drivers are used (no hotplug/USB
166   driver)
167 - increase log buffer size from 160 to 2048. Some "long" log lines where
168   truncated.
169 - Fix redirection of stdin, stdout and stderr to /dev/null when pcscd is
170   started as a daemon (default)
171 - Some other minor improvements and bug corrections
172
173
174 pcsc-lite-1.8.5: Ludovic Rousseau
175 4 August 2012
176 - Fix crash when a reader is unplugged while pcscd is in the middle of a
177   PC/SC function
178 - SCardBeginTransaction(): fix a bug introduced in version 1.8.4
179   related to sharing
180 - Some other minor improvements and bug corrections
181
182
183 pcsc-lite-1.8.4: Ludovic Rousseau
184 26 June 2012
185 - Add [ and ] in the list of accepted characters for a reader name
186 - truncates the reader name if it is too long instead of rejecting the
187   reader
188 - The restriction to have to call SCardEstablishContext() in each thread
189   has been removed. Threads could now share a PC/SC context.
190 - Fix compiler failure for static driver
191 - Update IFDHandler API Doxygen regarding the "libusb-1.0" naming scheme
192 - Some other minor improvements and bug corrections
193
194
195 pcsc-lite-1.8.3: Ludovic Rousseau
196 30 March 2012
197 - ignore directories and hidden (.*) files when parsing a configuration
198   directory (like /etc/reader.conf.d/)
199 - add Mac OS X for PC/SC spy tool
200 - fix a bug in PC/SC spy tool when loading of the real library fails
201 - add PCSCv2_PART10_PROPERTY_dwMaxAPDUDataSize,
202   PCSCv2_PART10_PROPERTY_wIdVendor and PCSCv2_PART10_PROPERTY_wIdProduct
203   from PC/SC v2 part 10 release 2.02.09 (not yet published)
204 - Some other minor improvements and bug corrections
205
206
207 pcsc-lite-1.8.2: Ludovic Rousseau
208 18 January 2012
209 - rename pcsc-spy.py to pcsc-spy and install it as a normal binary (in
210   /usr/local/bin by default)
211 - write a pcsc-spy.1 manpage
212 - fix a bug with a multi-slot reader
213 - Info.plist parser: avoid a buffer read overflow in & management
214 - Some Doxygen improvements
215
216
217 pcsc-lite-1.8.1: Ludovic Rousseau
218 25 November 2011
219 - Distribute missing files from src/spy/
220
221
222 pcsc-lite-1.8.0: Ludovic Rousseau
223 19 November 2011
224 - PC/SC spy tool
225 - Support systemd socket activation (the auto start of pcscd from the
226   library has been removed. Use systemd instead)
227 - SCardGetStatusChange(): check all the readers are already known and
228   return SCARD_E_UNKNOWN_READER if a reader name is not present.
229   Windows XP has this behavior.
230 - SCardEstablishContext(): Invalidate all the handles in the son after a
231   fork
232 - Add define of FEATURE_EXECUTE_PACE from PCSC v2 Part 10 Amendment 1
233   2011-06-03
234 - Fix some memory leaks reported by Coverity
235 - Enable silent build by default
236 - log_line(): correctly calculate delta time when no color is used
237   The update of last_time was only done in case of colorization
238   (LogDoColor). So on unsupported consoles the time was wrong.
239 - log_xxd_always(): Use a variable-length array
240   The debug message buffer is no more with a fixed size (around 600
241   bytes of buffer to log) but uses a variable-length array.
242   It is now possible to log extended APDU of 64kB.
243   The variable-length array feature is available in GCC in C90 mode and
244   is mandatory in C99 standard.
245 - Some other minor improvements and bug corrections
246
247
248 pcsc-lite-1.7.4: Ludovic Rousseau
249 23 June 2011
250 - Fix a stupid bug from the previous version. T=1 cards were not
251   working.
252
253
254 pcsc-lite-1.7.3: Ludovic Rousseau
255 22 June 2011
256 - COPYING: Add my name as copyright holder
257 - hotplug libudev: support libudev >= 171
258 - hotplug libusb: Fix a memory leak
259 - pcscd: exit immediately in case of SIGTERM
260   Closes Debian bug #620305 "pcscd slows down shutdown/restart"
261 - Send logs to stdout instead of stderr
262   It is now possible to use tee(1) to redirect logs in a file without
263   first redirecting stderr to stdout
264 - Add command line option -T, --color: force use of colored logs
265   The idea is to have colored logs even if they are redirected to a file
266   or a pipe.
267 - Define g_rgSCardT?Pci as const structures to be more Windows like
268   I do not expect a regression or compilation problem in WinSCard API
269   users but how knows...
270 - log at level PCSC_LOG_DEBUG instead of PCSC_LOG_ERROR to avoid filling
271   the system log file
272 - Remove the deprecated define FEATURE_MCT_READERDIRECT (replaced by
273   FEATURE_MCT_READER_DIRECT)
274 - better Hurd support
275 - some other minor improvements and bug corrections
276
277
278 pcsc-lite-1.7.2: Ludovic Rousseau
279 31 March 2011
280 - fix a crash if a specific driver fails to work and no class driver is
281   available
282
283 pcsc-lite-1.7.1: Ludovic Rousseau
284 30 March 2011
285 - use libudev only on Linux and libusb elsewhere. The configuration now
286   works by default on GNU/kFreeBSD systems
287 - Try to use a (CCID) class driver if a specific driver fails to use the
288   reader.
289 - fix a potential crash
290
291
292 pcsc-lite-1.7.0: Ludovic Rousseau
293 9 March 2011
294 - use libudev instead of (the deprecated) libhal
295
296
297 pcsc-lite-1.6.7: Ludovic Rousseau
298 22 February 2011
299 - better Mac OS X support
300 - Fix Alioth bug [#312960] SCardDisconnect when other context has transaction
301 - add support of multi-interfaces readers with libusb and not just libhal
302 - add a API tracing feature in the client side (#define DO_TRACE)
303 - allow the use of tracing and profiling features from different
304   application threads
305 - fix a problem with a multi-slots reader
306 - fix minor problems detected by the clang tool
307 - some other minor improvements and bug corrections
308
309
310 pcsc-lite-1.6.6: Ludovic Rousseau
311 12 December 2010
312 - SCardGetStatusChange(): fix a bug on 64-bits systems
313 - Fix another bug because of a regression in internal list manager
314
315
316 pcsc-lite-1.6.5: Ludovic Rousseau
317 3 December 2010
318 - Power on the card _only_ if an application requests a connection.
319   You can disable the feature using DISABLE_ON_DEMAND_POWER_ON in
320   src/pcscd.h.in
321   If DISABLE_AUTO_POWER_ON is defined then do not automatically power on
322   the card. The card will be powered on on the first SCardConnect()
323   See http://ludovicrousseau.blogspot.com/2010/10/card-auto-power-on-and-off.html
324 - SCardReconnect(): return SCARD_E_NO_SMARTCARD when card is removed and
325   SCARD_W_UNRESPONSIVE_CARD when card is unresponsive instead of
326   SCARD_E_PROTO_MISMATCH
327 - Install pcscd as sgid pcscd instead of suid root
328   See http://ludovicrousseau.blogspot.com/2010/09/pcscd-auto-start.html
329 - SCardSetTimeout() is no more provided. This function is not provided
330   by Microsoft and is deprecated since 2004 in pcsc-lite. 
331 - SCardCancelTransaction() is no more provided. This function is not
332   provided by Microsoft and is deprecated since 2005 in pcsc-lite.
333 - Parsing the CCID Info.plist (159 readers supported) was, on a i386
334   machine, done in 264306 µs and is now done 5547 µs => gain x47 or 4600%
335   See http://ludovicrousseau.blogspot.com/2010/08/ram-and-cpu-improvements-in-pcsc-lite.html
336 - It is now possible to configure the local socket name to use using the
337   environment variable PCSCLITE_CSOCK_NAME
338   See http://ludovicrousseau.blogspot.com/2010/11/pcsc-client-and-server-on-two-different.html    
339 - Wait until all connected readers have a chance to power up a possibly
340   inserted card before accepting clients.
341 - restrict pcscd features when not run by root (so using suid): APDU
342   logging or setting parameters are disabled for example
343 - fix compilation problem on kfreebsd-* systems
344 - PCSC/reader.h: HOST_TO_CCID_16() and HOST_TO_CCID_32() are now
345   identity functions
346   Since libccid 1.4.1 (revision 5252) the byte order is no more important
347 - If you want to use IFDHCreateChannel() instead of
348   IFDHCreateChannelByName() then do not use any DEVICENAME line in the
349   configuration file. IFDHCreateChannel() will then be called with the
350   CHANNELID parameter.
351 - the CHANNELID parameter can also be a decimal number.
352 - Remove the support of IFDHandler v1 API. I don't know any driver using
353   this API.
354   See http://ludovicrousseau.blogspot.com/2010/10/ifdhandler-version-1-support-removed.html
355 - avoids a buffer overflow with badly formed ATR
356 - some other minor improvements and bug corrections
357
358
359 pcsc-lite-1.6.4: Ludovic Rousseau
360 15 August 2010
361 - Do not use sysconfdir as configuration directory but
362   "${sysconfdir}/reader.conf.d" instead.
363   Use --enable-confdir=DIR if you want to set a specific value without
364   the "reader.conf.d" appended.
365
366
367 pcsc-lite-1.6.3: Ludovic Rousseau
368 15 August 2010
369 - "/reader.conf.d" is only appended to sysconfdir if no value of
370   sysconfdir is provided
371 - Define LPSCARD_READERSTATE since this is used in the MSDN prototype.
372   Use LPSCARD_READERSTATE in winscard.h instead of (SCARD_READERSTATE *)
373   to mimic the MSDN API.
374 - fix a pcscd crash when the application uses a PCSC handle after a
375   fork. The crash was with openvpn.
376 - some other minor improvements and bug corrections
377
378 pcsc-lite-1.6.2: Ludovic Rousseau
379 4 August 2010
380 - implement a "Forced suicide" mechanism.
381   After 3 Ctrl-C without much reaction from pcscd (in fact the drivers)
382   we force the suicide. Sometimes libusb is blocked in a kind of
383   dead-lock and kill -9 was the only option.
384 - Add support of TAG_IFD_STOP_POLLING_THREAD to request the stop of the
385   driver polling function.
386 - Avoid a division by 0. Closes [#312555] "simclist bug in pcsc-lite"
387 - if pcscd is stared by libpcsclite then close all file handles except
388   stdin, stdout and stderr so that pcscd does not confiscate resources
389   allocated by the application
390 - in case of auto exit create a new session so that Ctrl-C on the
391   application will not also quit pcscd
392 - src/hotplug_libusb.c: port from libusb-0.1 to libusb-1.0
393 - default configuration is now $sysconfdir/reader.conf.d
394 - fix crash with empty config dir
395 - src/PCSC/winscard.h: Remove definitions of SCARD_READERSTATE_A
396   PSCARD_READERSTATE_A and LPSCARD_READERSTATE_A types
397 - some other minor improvements and bug corrections
398
399
400 pcsc-lite-1.6.1: Ludovic Rousseau
401 4 June 2010
402 - SCardControl(): do not check for card events since we are talking to
403   the reader not the card. A smart card removal should not make
404   SCardControl() fail with SCARD_W_REMOVED_CARD
405 - pcscd do not timeout any more after 2 minutes of inactivity. If the
406   other side of the socket dies we will get an error from the kernel.
407   The problem was that if a client does nothing during
408   PCSCLITE_READ_TIMEOUT (120 seconds by default) then pcscd considers it
409   as a dead client and closes the connection. I guess this problem was
410   present since the first version of pcsc-lite but nobody complained
411   before.
412 - pcscd: do not return before most of the initialisation are done
413   correctly. The idea is that pcscd can return an error code if the
414   daemon fails to start correctly (hald not started for example).
415   Before the patch pcscd became a daemon, then returned 0 (success) and
416   then continued with the initialisation. If the initialisation failed
417   it was too late to return an error code. The /etc/init.d/pcscd script
418   was not aware of the failure.
419   Closes https://bugzilla.redhat.com/show_bug.cgi?id=580321
420   "/usr/sbin/pcscd exit codes broken"
421 - src/hotplug_libusb.c: Add a synchronisation so that if pcscd is auto
422   started the initial reader list is available before the server takes
423   commands from clients.
424   Before the change early calls of SCardListReaders() returned an empty
425   list of readers even if a reader was connected.
426   Thanks to Patrice Angelini for the bug report
427 - SCardConnect() & SCardReconnect(): do not reset the cardProtocol in
428   SCARD_SHARE_DIRECT case since the card have _not_ been reseted. A new
429   PPS negotiation would fail.
430 - Do not install files in /etc any more. Serial drivers are rare now.
431 - Avoids a crash if a client sends a unknown command.
432   Thanks to Martin Vogt for the bug report
433 - some other minor improvements and bug corrections
434
435
436 pcsc-lite-1.6.0: Ludovic Rousseau
437 5 May 2010
438 - redesign the client/server communication:
439   * no more shared memory used (allow pcscd and libpcsclite1.so to be on
440   different computer and talk over a network)
441   * no more difference between short and extended APDU
442   * no more use of a /var/run/pcscd/pcscd.events/ directory. events are
443   sent through the socket
444   * simpler command format between client and server
445   The side effect is that you are not able to mix an old pcscd with a
446   new libpcsclite1.so or the reverse. SCardEstablishContext() will fail
447   unless you update both sides of the communication.
448 - Use lists instead of fixed size arrays to store handles.
449   It is now possible to have:
450   - 200 simultaneous PC/SC clients instead of 16
451   - 200 SCardConnect per client instead of 16
452   - 200 clients per reader instead of 16
453   The default value of 200 can be changed by giving an argument to pcscd
454   --max-thread --max-card-handle-per-thread --max-card-handle-per-reader
455   Thanks to Jean-Luc Giraud for the big patch
456 - Make SCardReconnect(), SCardStatus() and SCardTransmit() block instead
457   of returning SCARD_E_SHARING_VIOLATION immediately. These functions
458   will then behave like on Windows.
459   This can happen if these functions are called when the reader is
460   locked by a PCSC transaction
461   (SCardBeginTransaction/SCardEndTransaction).
462   You can define the environment variable PCSCLITE_NO_BLOCKING to use
463   the old behavior.
464   Thanks to Jean-Luc Giraud for the patch.
465   http://archives.neohapsis.com/archives/dev/muscle/2010-q1/0041.html
466 - SCardEstablishContext(): try to start the pcscd daemon if not already
467   running.
468   . pcscd will suicide itself after 60 seconds of inactivity if it is
469   started using --auto-exit. This is the default behavior when pcscd is
470   started by libpcsclite
471   . Set PCSCLITE_PCSCD_ARGS with the argument you want to pass to pcscd in
472   autostart Only one argument is passed. The space character is not a
473   separator. example: export PCSCLITE_PCSCD_ARGS=-dfa
474 - SCardListReaders(): can use SCARD_AUTOALLOCATE
475 - SCardGetAttrib(): return SCARD_E_INSUFFICIENT_BUFFER if the driver
476   returns IFD_ERROR_INSUFFICIENT_BUFFER
477   . add support of SCARD_ATTR_DEVICE_FRIENDLY_NAME as it is better
478   implemented in pcscd (it knows the friendly name)
479 - SCardGetStatusChange(): Calling with cReaders == 0 will now just
480   return SCARD_S_SUCCESS
481   . Use the special reader name "\\?PnP?\Notification" to wait for a
482   reader event notification
483 - SCardTransmit(): do not limit the minimum size of an APDU to 4 bytes.
484   non ISO 7816-4 compliant cards (like Mifare DESFIRE) may use shorter
485   commands
486 - SCardStatus(): returns SCARD_E_SHARING_VIOLATION if the reader is
487   already used More conform to Windows
488 - PCSC/reader.h: update struct PIN_PROPERTIES_STRUCTURE to be conform
489   with Revision 2.02.06, April 2009 of PCSCv2 part 10 Fields
490   wLcdMaxCharacters and wLcdMaxLines have been removed
491   . rename FEATURE_MCT_READERDIRECT in FEATURE_MCT_READER_DIRECT to be
492   conform with ch. 2.3 of PCSC v2 part 10
493   . add FEATURE_GET_TLV_PROPERTIES and FEATURE_CCID_ESC_COMMAND from
494   PC/SC part 10 v2.02.07 March 2010
495   . Add PCSCv2_PART10_PROPERTY_* defines
496 - SCardControl() return SCARD_E_UNSUPPORTED_FEATURE if the driver
497   returned IFD_ERROR_NOT_SUPPORTED or IFD_NOT_SUPPORTED This is used to
498   separate an unsupported value of ControlCode from a general error
499 - Use the standard --sysconfdir=DIR ($prefix/etc by default) instead of
500   --enable-confdir=DIR for defining the directory containing reader.conf
501 - remove SCF support (PC/SC over Smart Card Framework). I never used
502   this feature and SCF is now dead and replaced by JSR 268
503   (javax.smartcardio)
504 - Better handling of PCSCLITE_STATIC_DRIVER as can be used on platforms
505   using µClinux (without dynamic loader).  This is used to statically
506   link the reader driver to pcscd. Since the link is static you must
507   define the IFDHandler API version at compilation time. Either define
508   IFDHANDLERv1, IFDHANDLERv2 or IFDHANDLERv3
509 - Use dynamic instead of static allocation for the driver library
510   filename. The filename is no more limited to 100 characters.
511   Closes: [#312332] MAX_LIBNAME too short?
512 - force the return codes SCARD_* to be long since the SCard* functions
513   return a LONG type
514 - Add the ability to parse all the configuration files of a directory
515   instead of just one configuration file. update-reader.conf is then now
516   obsolete.
517 - Add --enable-embedded (default is no) to build pcsc-lite for an
518   embedded system. This will activate the NO_LOG option to disable
519   logging and limit RAM and disk consumption.
520 - If NO_LOG is defined then no log are displayed. The idea is to limit
521   the binaries size on disk and RAM consumption at execution time.
522   With NO_LOG defined we gain 26% (17 kB) for the .text segment of pcscd
523   and 15% (4 kB) for the .text segment of libpcsclite.so (for i386)
524 - Define a minimal pcsc_stringify_error() if NO_LOG is defined. Only the
525   error code in hex is displayed in this case.
526   Gain: 2kB of .text (10%) for libpcsclite
527 - Add --disable-serial and --disable-usb options
528   --disable-serial removes support of /etc/reader.conf gain: 8.0kB of
529   .text (12%) and 160 bytes of .bss (4%) for pcscd
530   --disable-usb removes support of USB hotplug gain: 9.7kB of .text
531   (14%) and 960 bytes of .bss (23%) for pcscd
532   If you use both options (and use a static driver configuration) gain:
533   17.7kB of .text (26%) and 1152 bytes of .bss (28%) for pcscd
534 - Better support of Android
535 - some other minor improvements and bug corrections
536
537
538 pcsc-lite-1.5.5: Ludovic Rousseau
539 28 July 2009
540 - add the reader interface name if provided by the device
541 - SCardTransmit(): return SCARD_E_UNSUPPORTED_FEATURE if
542   SCARD_PROTOCOL_RAW is requested by unsupported
543 - SCardConnect() and SCardReconnect(): set dwActiveProtocol to
544   SCARD_PROTOCOL_UNDEFINED if SCARD_SHARE_DIRECT is used (conform to
545   MSDN). Contrary to Windows winscard behavior, the reader is accessed in
546   shared mode and not exclusive mode if SCARD_SHARE_DIRECT is used.
547 - SCardControl(): correctly check for buffer overflow (bug introduced in
548   pcsc-lite 1.5.4)
549 - some other minor improvements and bug corrections
550
551
552 pcsc-lite-1.5.4: Ludovic Rousseau
553 24 June 2009
554 - SCardGetStatusChange() works again. It was broken in some cases since
555   version 1.5.2
556 - detect buffer overflows if pcscd if used by a rogue client
557 - force access rights on /var/run/pcscd to be sure it can be used by a
558   libpcsclite client without privileges
559 - create the PCSCLITE_EVENTS_DIR directory with the sticky bit so only
560   root or the owner of the event files can remove them
561 - if RFAddReader() fails with the libhal scheme then we try with the
562   (old) libusb scheme.  This patch should allow proprietary drivers to
563   work even if pcsc-lite is compiled with libhal support.
564 - give a higher priority to a specific driver over the CCID Class
565   driver. This should allow proprietary drivers to be used instead of
566   libccid when possible
567 - some other minor improvements and bug corrections
568
569
570 pcsc-lite-1.5.3: Ludovic Rousseau
571 29 April 2009
572 - SCardEstablishContext(): check we do not reuse an already allocated
573   hContext
574   Thanks to Daniel Nobs for the bug report and patch
575 - pcsclite.h: add missing SCARD_E_* and SCARD_W_* return code. They are
576   unused by pcsc-lite but defined on Windows
577 - reader.h: add PIN_PROPERTIES_STRUCTURE structure and FEATURE_IFD_PIN_PROPERTIES
578   Thanks to Martin Paljak for the patch
579 - remove powermgt_macosx.c since it is using APSL version 1.1 instead of
580   the BSD-like licence like the other files
581   Thanks to Stanislav Brabec for the bug report
582 - avoid a possible crash due to a race condition
583   Thanks to Matheus Ribeiro for the patch
584 - change default log level from PCSC_LOG_INFO to PCSC_LOG_ERROR to limit
585   syslog pollution
586 - CardDisconnect(): call RFUnlockAllSharing() instead of
587   RFUnlockSharing() to release all nested locks. The problem occurs if
588   SCardBeginTransaction() are made without corresponding
589   SCardEndTransaction().  OpenSC "pkcs11-tool -I" exhibits such a
590   behavior.
591   Thanks to Marc Rios Valles for the bug report
592 - some other minor improvements and bug corrections
593
594
595 pcsc-lite-1.5.2: Ludovic Rousseau
596 6 February 2009
597 - SCardGetStatusChange(): return if the state of the reader changed
598   since the previous call. Thanks to Thomas Harning for the patch
599 - SCardCancel() no works as expected. It got broken in version 1.5.0.
600   Closes: [#311342] SCardCancel does not cancel an outstanding
601   SCardGetStatusChange
602 - log TxBuffer and RxBuffer if the SCardControl() command failed.
603   Closes: [#311376] PCSC_LOG_VERBOSE via -dd; print details of "Card not
604   transacted"
605 - add a mutex to avoid a race condition
606   Closes: [#311377] Race condition in SCardBeginTransaction
607 - SCardGetStatusChange() may not return if the reader was removed.
608 - some other minor improvements and bug corrections
609
610
611 pcsc-lite-1.5.1: Ludovic Rousseau
612 7 January 2009
613 - Extended APDU of more than 2048 bytes were corrupted. The problem was
614   introduced in version 1.3.3 (2 years ago) by making the code compile
615   with Sun Studio 11.
616   Thanks to Eric Mounier for the patch
617 - some other minor improvements and bug corrections
618
619
620 pcsc-lite-1.5.0: Ludovic Rousseau
621 18 November 2008
622 - correctly handle up to PCSCLITE_MAX_READERS_CONTEXTS readers (instead
623   of PCSCLITE_MAX_READERS_CONTEXTS-1)
624 - SCardGetStatusChange()
625   . now returns SCARD_E_TIMEOUT instead of SCARD_S_SUCCESS if dwTimeout
626     == 0 (conform to Windows XP)
627   . add support of reader name \\?PnP?\Notification to detect reader
628     insertion/removal (conform to Windows XP)
629   . if a reader disappear also set SCARD_STATE_UNAVAILABLE in
630     dwEventState (more conform to Windows XP)
631 - SCardStatus(): add support of SCARD_AUTOALLOCATE for pcchReaderLen and
632   pcbAtrLen
633 - SCardGetStatusChange() now uses asynchronous events instead of polling
634 - more and/or better Doxygen documentation
635 - SCardTransmit(): correctly pass the pioRecvPci parameter
636 - SCardConnect() and SCardReconnect(): correct a bug when two
637   applications were calling SCardConnect() or SCardReconnect() at the
638   exact same time
639 - pcscd logs the command name sent by the application (when in debug mode)
640 - some other minor improvements and bug corrections
641
642
643 pcsc-lite-1.4.102: Ludovic Rousseau
644 27 June 2008
645 - pcscd -v now displays the enabled features
646 - add support of SCARD_AUTOALLOCATE in SCardListReaders(),
647   SCardListReaderGroups() and SCardGetAttrib
648 - add SCardFreeMemory()
649 - try to use the reader polling thread also for the other slots on a
650   multi-slots reader
651 - solve a possible crash with SCardCancel() in multithreading environment
652 - SCardConnect(), SCardReconnect(): do not check the parameter
653   dwPreferredProtocols if dwShareMode == SCARD_SHARE_DIRECT
654   This is used on contactless readers to talk to the reader without any
655   card and "random" value of dwPreferredProtocols
656 - better support of driver termination (when pcscd exits)
657 - kill the driver polling thread only if the driver supports it
658   (declared using TAG_IFD_POLLING_THREAD_KILLABLE)
659 - generate a .tar.bz2 archive (smaller than the .tar.gz archive)
660 - some other minor improvements and bug corrections
661
662
663 pcsc-lite-1.4.101: Ludovic Rousseau
664 30 April 2008
665 - support for fork(). Handles are now invalid in the child process
666 - SCardStatus() returns SCARD_W_REMOVED_CARD instead of
667   SCARD_W_RESET_CARD when a card has been removed and inserted
668 - Doxygen improvements
669 - add support for DragonFly BSD
670 - some other minor improvements and bug corrections
671
672
673 pcsc-lite-1.4.100: Ludovic Rousseau
674 23 March 2008
675 - add libhal support to avoid polling the USB bus.  libusb is still
676   supported but libhal is now the default
677 - improve performances in SCardConnect(), SCardReconnect(),
678   SCardDisconnect(). Thanks to Sean Wykes for the patch
679 - SCardListReaders(): returns SCARD_E_NO_READERS_AVAILABLE when no
680   reader are available.  Thanks to Thomas Harning for the bug report
681 - add support of TAG_IFD_POLLING_THREAD to use an asynchronous card
682   movements detection instead of an active polling. The reader driver
683   need to support TAG_IFD_POLLING_THREAD to use this feature
684 - CardCheckDaemonAvailability(): lower the priority of the log message
685   in case of "PCSC Not Running" or "PCSC restarted" so that nothing is
686   logged by default.  PCSCLITE_DEBUG can be defined to see the message.
687   Programs linked with libpcsclite will not display anything if pcscd is
688   not running. Solves Red Hat bug 428299.
689 - default log level is PCSC_LOG_CRITICAL+1 so that NO log is sent to
690   stderr by default. You need to explicitly set PCSCLITE_DEBUG to have
691   logs. (in a library stderr(2) can be any file opened with fd=2 so
692   should not be used)
693 - ifdhandler-3.tex: more details about deviceName argument of
694   IFDHCreateChannelByName()
695 - some other minor improvements and bug corrections
696
697
698 pcsc-lite-1.4.99: Ludovic Rousseau
699 9 January 2008
700 - add support of mix 32/64 bits platforms.  Thanks to Jacob Berkman for
701   the big patch
702 - increase MAX_READERNAME from 52 to 100
703 - default ipcdir is /var/run/pcscd instead of /var/run so the directory
704   can be shared locally between 32/64 bits systems on chroots
705 - display time delta between two lines of logs when printed to stderr
706 - return EXIT_SUCCESS (instead of EXIT_SUCCESS) if parsing
707   /etc/reader.conf fails.
708 - performance improvement when powering a card after insertion
709 - some other minor improvements and bug corrections
710
711
712 pcsc-lite-1.4.4: Ludovic Rousseau
713 14 August 2007
714 - do not call a Log function in a signal handler and do hotplug
715   synchronously. See Debian bug #430492 Thanks to Russell Stuart
716 - support LSB init scritp format
717 - better support of Solaris and Mac OS X
718 - some other minor improvements and bug corrections
719
720
721 pcsc-lite-1.4.3: Ludovic Rousseau
722 19 June 2007
723 - correctly handle lock (SCardBeginTransaction) when the locked card is
724   removed.
725 - correct a buffer overflow introduced in 1.4.2 when extended APDU are
726   used
727 - some other minor improvements and bug corrections
728
729
730 pcsc-lite-1.4.2: Ludovic Rousseau
731 23 May 2007
732 - add a Lock counter so that SCardBeginTransaction/SCardEndTransaction
733   can be nested
734 - SCardDisconnect(): do not block if dwDisposition == SCARD_LEAVE_CARD.
735   We block only for SCARD_UNPOWER_CARD, SCARD_RESET_CARD and
736   SCARD_EJECT_CARD since that would impact other running transactions
737 - LPTSTR and LPCTSTR types are no more deprecated since they are found
738   in many applications. And using them is not a problem.
739 - some other minor improvements and bug corrections
740
741
742 pcsc-lite-1.4.1: Ludovic Rousseau
743 16 May 2007
744 - do not limit the execution of an APDU to 2 minutes (Thanks to Harsh
745   Sangal for the bug report)
746 - if the daemon is restarted we invalidate all the existing handles so
747   SCard functions returns SCARD_E_INVALID_HANDLE
748 - SCardReconnect(): block instead of returning SCARD_E_SHARING_VIOLATION
749 - clean the data buffer for SCardTransmit() to clean the APDU buffer to
750   remove any possible PIN or secret value (Thanks to Nils Larsch for the
751   patch)
752 - SCardGetStatusChange(): add a counter in the upper word of
753   dwEventState so it is possible to detect a card movement between two
754   calls to SCardGetStatusChange() (Thanks to Matheus Ribeiro for the
755   patch)
756 - SCardGetStatusChange(): do not check for SCARD_STATE_ATRMATCH,
757   SCARD_STATE_EXCLUSIVE or SCARD_STATE_INUSE bits when the card is not
758   present.  (thanks to Matheus Ribeiro for the bug report)
759 - some other minor improvements and bug corrections
760
761
762 pcsc-lite-1.4.0: Ludovic Rousseau
763 13 February 2007
764 - great speed improvements for SCardBeginTransaction(), SCardReconnect()
765   and SCardDisconnect()
766 - SCardConnect(): return SCARD_W_UNPOWERED_CARD if the card is mute
767   instead of returning SCARD_E_PROTO_MISMATCH because the requested
768   protocol is not supported by the (mute) card
769 - Ctrl-C works again to stop pcscd on FreeBSD
770 - USB polling was not active even if a driver does not support
771   IFD_GENERATE_HOTPLUG.
772 - split pcsclite.h in pcsclite.h and an internal pcscd.h. Some
773   application compilations may fail but should not
774 - move RESPONSECODE definition from wintypes.h to ifdhandler.h since it
775   should only be used as return type of IFDHandler functions. Some
776   driver compilations may fail
777 - some other minor improvements and bug corrections
778
779
780 pcsc-lite-1.3.3: Ludovic Rousseau
781 19 January 2007
782 - add -H --hotplug argument to ask the pcscd daemon to rescan the
783   avaiable readers
784 - add support for IFD_GENERATE_HOTPLUG bit in driver Info.plist
785   ifdCapabilities
786 - add --force-reader-polling to ignore the IFD_GENERATE_HOTPLUG bit in
787   driver Info.plist ifdCapabilities (pcscd will poll the USB bus every 1
788   second as in previous versions)
789 - SCardConnect() & SCardDisconnect(): wait until any transaction
790   finishes before going on. This avoids the possibility to reset a card
791   in the middle of a transaction Thanks to Martin Paljak for the bug
792   report
793 - the tools installifd and formaticc are now completely outdated and
794   should not be used anymore.
795 - PCSC/ifdhandler.h: add IFD_NO_SUCH_DEVICE for readers supporting
796   hotplug
797 - PCSC/pcsclite.h: add SCARD_E_NO_READERS_AVAILABLE
798 - SCardControl(): do not limit cbSendLength to MAX_BUFFER_SIZE bytes
799   since we now transparently support up to MAX_BUFFER_SIZE_EXTENDED
800   bytes.  Thanks to Martin Führlinger for the bug report
801 - SCardGetAttrib()/SCardSetAttrib(): if the driver returns IFD_ERROR_TAG
802   we return SCARD_E_UNSUPPORTED_FEATURE instead of the generic error
803   code SCARD_E_NOT_TRANSACTED
804 - implement SCardIsValidContext() PC/SC call
805 - some other minor improvements and bug corrections
806
807
808 pcsc-lite-1.3.2: Ludovic Rousseau
809 11 August 2006
810 - add support of extended APDU in the standard configuration and in a
811   backward compatible way: pcscd 1.3.2 can be used with libpcsclite <=
812   1.3.2
813 - define MAX_BUFFER_SIZE_EXTENDED as the maximal size allowed for a
814   extended APDU (64KB)
815 - LPCTSTR and LPTSTR types are deprecated. Use LPCSTR and LPSTR instead
816 - Dual licence src/error.c so it can be used bu OpenSC. It is now
817   BSD-like, see the COPYING file and GNU Lesser General Licence 2.1 or
818   (at your option) any later version
819 - document that the 4 bytes field value in PCSC_TLV_STRUCTURE is always
820   in big endian as documented in PCSC v2 part 10 ch 2.2 page 2. You can
821   use ntohl() to convert the value. Thanks to Ulrich Vogl for the bug
822   report
823 - some other minor improvements and bug corrections
824
825
826 pcsc-lite-1.3.1: Ludovic Rousseau
827 22 April 2006
828 - improve support of Solaris
829 - correct a bug when two clients are connecting at the same time
830 - better documentation for ./configure arguments
831 - doc/ifdhandler-3.tex: improve IFD handler documentation
832 - doc/pcsc-lite.tex: document VERIFY_PIN and MODIFY_PIN commands using
833   PCSCv2 part 10 instead of the "proprietary" mechanism now unsupported
834 - doc/pcsc-lite.tex: document log_msg and log_xxd
835 - use fprintf(stderr,) instead of syslog(3) to log messages from libpcsclite
836 - use PCSCLITE_DEBUG to activate the debug messages in libpcsclite.
837   MUSCLECARD_DEBUG is now used for libmusclecard only
838 - add the reader serial number in the reader name only if
839   ADD_SERIAL_NUMBER is defined
840 - some other minor improvements and bug corrections
841
842
843 pcsc-lite-1.3.0: Ludovic Rousseau
844 3 March 2006
845 - new official stable version since 1.2.0 in October 2003. Many thanks
846   to all the bug reporters and bug fixers
847 - libmusclecard is now in a independent package
848 - (re)allow compilation on Solaris
849 - SCardReleaseContext(): do not check that the thread releasing the
850   context is the one that established it. This check is not performed on
851   Windows and creates portability problems See
852   http://archives.neohapsis.com/archives/dev/muscle/2006-q1/0134.html
853 - automatically call SCardUnload() when the libpcsclite library is
854   unloaded Thanks to Najam Siddiqui. See
855   http://archives.neohapsis.com/archives/dev/muscle/2006-q1/0177.html
856 - some other minor improvements and bug corrections
857
858
859 pcsc-lite-1.2.9-beta10: Ludovic Rousseau
860 3 February 2006
861 - if the USB reader defines a serial number then include it in the
862   reader name (between parenthesis)
863 - the library libpcsclite.so.1 only exports the symbols defined by the
864   API (http://pcsclite.alioth.debian.org/pcsc-lite/). This is needed to
865   be able to use the library in an appliation that also uses flex (like
866   muscleTool). The problem only occurs with GCC >= 4.0
867 - some other minor improvements and bug corrections
868
869
870 pcsc-lite-1.2.9-beta9: Ludovic Rousseau
871 27 November 2005
872 - add/improve support of PIN pad readers
873   . define HOST_TO_CCID_16() and HOST_TO_CCID_32() macro to convert 16 and
874     32-bits data to the CCID format (replace HOST_TO_CCID)
875 - add support of SUN C compiler and try to avoid GCC specific features
876   (Heiko Nardmann)
877 - SCardGetStatusChange():
878   . exists if the list of readers changed (one reader added) so that the
879     application can update its list of readers (Najam Siddiqui)
880   . correct a bug when two contexts where used (Najam Siddiqui)
881 - add support of Solaris 10 IFDhandler (Douglas E. Engert)
882 - allow pcsc-lite to be compiled without (f)lex installed
883 - add a TODO file. Help/money needed here.
884 - improve Doxygen documentation
885 - some other minor improvements and bug corrections
886
887
888 pcsc-lite-1.2.9-beta8: Ludovic Rousseau
889 6 September 2005
890 - correct a crash on Fedora Core 4 (off by 1 buffer overflow)
891 - do not silently truncate the reader, library or device name if they
892   are too long but display an error message instead
893 - reinclude musclecard library in pcsc-lite package since a lot of code
894   is shared. The separation was a mistake
895 - add colorization of the logs when sent to stderr. The color depends on
896   the priority level
897 - restrict the number of symbols (function names) exported from
898   libpcsclite.so to limit symbol conflicts with other libraries. Only
899   the PC/SC API symbols should be exported
900 - add Doxygen documentation. Thanks to Luiz Reuter Silva Torro.
901   HTML pages available at
902   http://pcsclite.alioth.debian.org/doxygen/html/index.html
903 - SCardControl(): a 0 byte long pbSendBuffer is no more rejected since
904   the command is in dwControlCode. Thanks to Martin Paljak for the patch
905 - provide a reader.h file (by default in /usr/local/include/PCSC/reader.h)
906   that contains definitions shared between an application and a smart
907   card driver (like SCARD_CTL_CODE, CM_IOCTL_GET_FEATURE_REQUEST,
908   FEATURE_* and HOST_TO_CCID)
909 - pcscd: allow a serial hotplug by sending a SIGUSR1 signal. The
910   /etc/reader.conf file is re-read and reader presence/abscence is updated
911 - musclecard library: small bug fixes
912 - pcsc-lite SCF: small bug fixes
913 - some other minor improvements and bug corrections
914
915
916 pcsc-lite-1.2.9-beta7: Ludovic Rousseau
917 2 March 2005
918 - SCARD_PROTOCOL_ANY is defined as (SCARD_PROTOCOL_T0|SCARD_PROTOCOL_T1)
919   You should not use SCARD_PROTOCOL_ANY since it is not defined in
920   Windows PC/SC. It is just defined for backward source code compatibility
921 - define SCARD_STATE_UNPOWERED even it is a state never used so source
922   code using it can compile
923 - SCardStatus(): pdwState and pdwProtocol parameters may be NULL (mimic
924   Windows)
925 - provide a script update-reader.conf to update the /etc/reader.conf
926   file from /etc/reader.conf.d/* files
927   This script is called by /etc/init.d/pcscd before starting the daemon
928 - add support of SCardGetAttrib() with a NULL pbAttr parameter to only
929   get the needed lenth in pcbAttrLen
930 - SCardReconnect() now works after a card movement.  Previously
931   SCardReconnect() returned "Card was removed" even if the new card is
932   reseted.
933 - SCardGetStatusChange(): greatly improve performances. Thanks to Oivind
934   H. Danielsen
935 - SCardControl(): check if the pbSendBuffer is NULL or no bytes are sent
936   for driver API v2 only. With API v3 we can use dwControlCode as the
937   only data to send.
938 - Implement the dynamic level logging in pcscd
939   The new command line options are:
940     -d, --debug           display lower level debug messages
941         --info            display info level debug messages (default level)
942         --error           display error level debug messages
943         --critical        display critical only level debug messages
944 - some documentation update
945
946
947 pcsc-lite-1.2.9-beta6: Ludovic Rousseau
948 15 August 2004
949 - The debug messages are now displayed by default. This prevented error
950   messages generated by a wrong /etc/reader.conf parsing to be displayed
951 - thread management:
952   . threads are now created with the PTHREAD_CREATE_DETACHED attribute
953     so that resources are released when the thread ends. Thanks to
954     Michael Gold for the patch.
955     Previous versions of pcscd just died after 256 clients connections.
956 - remove PCSC/ from the header files path since the path is given by
957   pkg-config --cflags libpcsclite or the correct -I directive
958 - src/winscard_svc.c:
959   . MSGCleanupClient(): always reset all the fields. Thanks to Michael
960     Gold for the patch.
961 - src/configfile.l:
962   . if the file referenced by DEVICENAME can't be use (because it is not
963     a correct filename) we now display:
964     You should use 'DEVICENAME /dev/null' if your driver does not use this field
965 - src/winscard.c:
966   . Avoid generating a PPS request that would not be just after a power
967     up. The previous code worked only when the card was _reseted_ at
968     SCardDisconnect() but not when SCARD_LEAVE_CARD was used.
969 - correctly manage multi-slots readers
970 - etc/pcscd.init:
971   . updated to reflect the RPM version. Thanks to Ville Skyttä & Fritz Elfert
972 - doc/example/pcsc_demo.c:
973   . add SCardTransmit() code sample
974 - src/testpcsc.c:
975   . add a "(don't panic)" after a "Transaction failed." if it is not a
976     critical failure.
977 - doc/pcsc-lite.tex:
978   . the function SCardSetTimeout() is deprecated and does nothing
979 - doc/ifdhandler-3.tex:
980   . add documentation for IFDHGetCapabilities(..., TAG_IFD_THREAD_SAFE, ...),
981     IFDHGetCapabilities(..., TAG_IFD_SLOT_THREAD_SAFE, ...) and
982     IFDHSetCapabilities(..., TAG_IFD_SLOTNUM, ...)
983 - some internal changes and bugs corrections
984
985
986 pcsc-lite-1.2.9-beta5: Ludovic Rousseau
987 16 July 2004
988 - src/PCSC/wintypes.h:
989   . add type LPSTR (again) so that "old" drivers and applications can
990     compile but mark the type deprecated.
991     See http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Type-Attributes.html
992 - src/tokenfactory.c:
993   . TPSearchBundlesForAtr(): use "%s/%s" insead of "%s%s" when
994     generating the MuscleCard bundle name on MacOSX
995 - src/winscard.c:
996   . SCardControl() (new API) can now be used with a IFDHandler v2.0 or v3.0.
997     The previous code was broken and only worked with an IFDHandler v3.0
998     (crashed with a v2.0).
999 - src/PCSC/ifdhandler.h:
1000   . IFDHControl(): use PUCHAR instead of LPCVOID and LPVOID so the
1001     driver can use TxBuffer[x] without needing a cast.
1002   . it is now possible to compile a IFDHandler v2.0 with this include
1003     file.  Just #define IFDHANDLERv2 in your source code before
1004     #include <ifdhandler.h>
1005     By default it is setup for for most recent version of the API (V3.0)
1006
1007
1008 pcsc-lite-1.2.9-beta4: Ludovic Rousseau
1009 3 July 2004
1010 - src/libmusclecard.pc.in and src/libpcsclite.pc.in
1011   . includedir is now @includedir@/PCSC
1012   . add pthread flags for compilation and link
1013   . thanks to Ville Skyttä for these patches.
1014     They are small but are mandatory to (re)compile muscleTools (and
1015     others) without modification to their Makefile.
1016
1017
1018 pcsc-lite-1.2.9-beta3: Ludovic Rousseau
1019 30 June 2004
1020 - src/hotplug_libusb.c:
1021   . use a dynamic array for available USB drivers:
1022    - avoid a buffer overflow (argh!)
1023    - allow to use more than 16 drivers/supported readers
1024 - src/Makefile.am:
1025   . install mscdefines.h, winscard.h, musclecard.h, pcsclite.h and wintypes.h
1026     in /usr/include/PCSC/ to not pollute /usr/include/
1027   . install ifdhandler.h, debuglog.h and parser.h in /usr/include/PCSC/ so
1028     drivers can use them for compilation.
1029   Modify your source code or add -I/usr/include/PCSC to CFLAGS in your
1030   Makefile or, better, use CFLAGS=`pkg-config libpcsclite --cflags`
1031 - doc/pcsc-lite.tex:
1032   . dwPreferredProtocols is a bit mask of acceptable protocols
1033   . SCARD_SHARE_DIRECT can be used to talk to the reader without a card
1034     inserted
1035   . add "Some SCardControl commands" section (IFD_EXCHANGE and VERIFY_PIN)
1036   . add documentation for LTPBundleFindValueWithKey(), debug_msg() and
1037     debug_xxd()
1038 - src/configfile.l: (/etc/reader.conf parser):
1039   . allow ':' in DEVICENAME. use ':' to indicate a non-real device (pcscd does
1040     not test for its existence as a file).  You can use this in something like
1041     "net://1.2.3.4/foobar" to indicate a reader on a remote machine like an
1042     X11 terminal.
1043 - src/PCSC/wintypes.h:
1044   . Change the names of the types LPCSTR to LPCTSTR and LPSTR to LPTSTR to be
1045     compliant with the Microsoft SCard API. You will have to update your
1046     source codes.
1047 - src/readerfactory.c:
1048   . rework RFSetReaderName() to simply the code and always start with the
1049     lowest number available (like in previous pcsc-lite version)
1050 - src/prothandler.c:
1051   . completely redesign the function so that IFDSetPTS() is always called to
1052     tell the driver which protocol to use and to initialise its internal
1053     state. The driver now knows which protocol (T=0 or T=1) the application
1054     wants to use even if the card only support only one protocol.
1055 - src/atrhandler.c:
1056   . add support of specific mode by the presence of TA2 (protocol not
1057     negociable)
1058 - src/utils/Makefile.am:
1059   . install bundleTool and installifd in [...]/sbin/ instead of [...]/bin/
1060 - doc/example/Makefile.am:
1061   . do not install pcsc_demo since it is just a sample code for developers
1062     that is not supposed (the code) to do anything useful
1063 - doc/example/pcsc_demo.c:
1064   . replace SCARD_PROTOCOL_ANY by SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1 since
1065     SCARD_PROTOCOL_ANY is _not_ defined by Microsoft PC/SC and is not equals
1066     to SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1 in pcsc-lite
1067 - and lots of other minor and/or internal only changes
1068
1069 pcsc-lite-1.2.9-beta2: Ludovic Rousseau
1070 11 May 2004
1071 - change libmusclecard current version to 1 so that old libmusclecard0 and new
1072   libmusclecard1 can cohabit on the same system and will not break existing
1073   programs during upgrades.
1074
1075   This is because libmusclecard is provided in the same distrib/package as
1076   libpcsclite. If we want two libpcsclite to cohabit we must also ensure
1077   that the two libmusclecard can also cohabit.
1078 - src/pcscdaemon.c: print pcsc-lite version number during startup
1079 - src/winscard.c: in SCardReconnect(), SCardDisconnect() and
1080   SCardEndTransaction() SCARD_UNPOWER_CARD is "Power down the card and reset
1081   it (Cold Reset)" so we really power down _and_ then power up the card.
1082 - doc/pcsc-lite.tex: add the chapter "Multithreading and contexts"
1083 - doc/ifdhandler-3.tex: IFD Handler API in LaTeX format
1084 - correct some minor typos in documentation and output texts
1085
1086
1087 pcsc-lite-1.2.9-beta1: Ludovic Rousseau
1088 6 May 2004
1089 - configure: add support of --enable-extendedapdu argument to allow the use of
1090   big APDUs (APDU size between 256-Bytes and 128-KBytes)
1091 - API changes:
1092   . SCardControl() API changed to be similar to the Microsoft PC/SC
1093     implementation
1094   . add SCardGetAttrib()/SCardSetAttrib() functions
1095   . the driver need to be compliant to IFDHandler API v3 to support these new
1096     functions
1097 - multithreading:
1098   Damien Sauveron added the support of multiplexing multi-readers
1099   communications. In the previous version the communications were serialized
1100   and not simultaneous even if it was not needed. Thanks Damien.
1101 - src/pcscdaemon.c:
1102   . remove the warning if no /etc/reader.conf is found. It is normal to not
1103     have an /etc/reader.conf for USB readers only.
1104   . send debug to syslog by default
1105   . send debug to stderr if --foreground|-f is used (no need to add
1106     --debug stderr anymore)
1107 - doc/pcsc-lite.pdf: doc improved to add the new functions and API. The doc is
1108   now generated from a LaTeX file (easier to maintain, html version available,
1109   much more nice, etc.)
1110 - src/testpcsc.c:
1111   . added tests for the new functions SCardGetAttrib(), SCardSetAttrib() and
1112     SCardControl() and also the old SCardListReaderGroups()
1113   . do not ask for reader number if only one reader is present
1114   . some more debug
1115 - pcscd and libpcsclite now exchange a protocol version to know what API to
1116   use. This will be useful if/when the API change again
1117 - change library version to 1:0:0 since the interface changed
1118 - hotplug: the daemon pcscd do not try to restart drivers anymore when it is
1119   exiting
1120 - src/hotplug_libusb.c:
1121   . do not try to restart a USB driver if the first execution fails (because
1122     of a bug in the driver or whatever) since the next execution of the driver
1123     will, with a great probability, also fail. The user has to unplug/replug
1124     the reader to restart the driver. This prevents to fill the system logs
1125     with an error message every 1 second.
1126   . use deviceName defined as usb:idVendor/idProduct:libusb:busname:filename
1127     in HPAddHotPluggable(). This should avoid wrong USB enumeration when used
1128     in IFDHCreateChannelByName()
1129 - src/hotplug_macosx.c:
1130   . buffer overflow: the driver list was not terminated and caused crashes.
1131 - src/winscard.c:
1132   . remove the code to map SCARD_UNPOWER_CARD on IFD_RESET.
1133     SCARD_UNPOWER_CARD is power down and power up (cold reset) => IFD_POWER_DOWN
1134     SCARD_RESET_CARD is just power up (warm reset) => IFD_RESET
1135 - src/winscard.h:
1136   . use SCARDCONTEXT, DWORD, LPSCARDHANDLE, etc. instead of long, unsigned
1137     long, long *, etc. to be more Windows PC/SC compliant
1138 - doc/reader.conf.5.in: new manpage to make it clear that this configuration
1139   file SHOULD not be used for USB readers
1140 - src/configfile.l:
1141   . print a warning if the LIBPATH contains ".bundle". USB drivers SHOULD NOT
1142     be declared in reader.conf
1143   . Check that DEVICENAME and LIBPATH files exist and if an error occurs
1144     during the parsing the reader is not added and pcscd exit.
1145 - doc/example/pcsc_demo.c:
1146   . recode the readers enumeration to avoid the use of
1147     PCSCLITE_MAX_READERS_CONTEXTS. You do not and should not need
1148     PCSCLITE_MAX_READERS_CONTEXTS. Use a dynamic management instead.
1149   . add SCardReconnect() sample code
1150   . allow to select the reader number instead of always selecting the first
1151     reader
1152   . some minor debug
1153 - src/musclecard.c:
1154   . Initialize currentToken->tokenType in MSCListTokens(). Closes "[ #300607 ]
1155     MSCListTokens should set tokenType to know state before OR operation"
1156 - src/tokenfactory.c:
1157   . correct atrString[] buffer size. The ATR is in ASCII so it must be
1158     MAX_ATR_SIZE*2 +1. This was problematic for cards with a "long" ATR.
1159 - src/readerfactory.c:
1160   . initialize vHandle field to NULL in RFAllocateReaderSpace() (caused a
1161     crash under MacOS X)
1162 - aclocal/acx_pthread.m4:
1163   . new upstream version to avoid checking for pthread.h which does not exist
1164     on *BSD
1165 - src/libmusclecard.pc.in, src/libpcsclite.pc.in:
1166   . add muscledropdir (in libmusclecard) and usbdropdir (in libpcsclite) so we
1167     can use `pkg-config libpcsclite --variable=usbdropdir` to find the
1168     directory to use. Should be used by drivers and plugins installation.
1169     Thanks to Ville Skyttä for the patch.
1170 - many other minor patches and corrections. Read ChangeLog.cvs for a complete
1171   list
1172
1173
1174 pcsc-lite-1.2.0: Ludovic Rousseau
1175 27 october, 2003
1176 - the 1.2.0 version is the same as 1.2.0-rc3 version
1177
1178 pcsc-lite-1.2.0-rc3: Ludovic Rousseau
1179 15 october, 2003
1180 - src/winscard_msg.c: perform a round-robbin among clients to avoid starvation
1181   under heavy load. Patch from Bettina Martelli.
1182 - src/winscard_clnt.c: send debug to stdout only if the environment variable
1183   MUSCLECARD_DEBUG is defined
1184 - src/libmusclecard.pc.in: add a new pkg-config file for application using
1185   libmusclecard.
1186 - a lot of code and build clean up by Antti Tapaninen
1187 - some code clean up and debug by Damien Sauveron
1188
1189
1190 pcsc-lite-1.2.0-rc2: Ludovic Rousseau
1191 4 September, 2003
1192 - removed a very _stupid_ bug that linked libpcsclite with libusb. Any
1193   application linked with libpcsclite was also linked with libusb.
1194 - generate a new library libmusclecard and remove MuscleCard code from
1195   libpcsclite. An application using MuscleCard functions needs to explicitly
1196   link with libmusclecard.
1197 - src/winscard_clnt.c: add a new function SCardUnload() to free allocated
1198   resources. It is mandatory only if you use dlopen/dlclose to often
1199   load/unload the library.  Otherwi se you will exhaust the resources
1200   available and get a crash.  Thanks to Guy Moreillon for the patch.
1201 - src/muscletest.c: code cleaning
1202
1203
1204 pcsc-lite-1.2.0-rc1: Ludovic Rousseau
1205 26 August, 2003
1206 - configure.in: --enable-usb is now deprecated and off by default.
1207   --enable-libusb is selected by default and will be used if libusb is
1208   installed in /usr. If libusb is installed in /usr/local use
1209   --enable-libusb=/usr/local
1210 - src/hotplug_macosx.c: Add support of reader aliases using <array></array> in
1211   driver Info.plist on MacOS X.
1212   The old syntax did not work since pcscd on MacOS X wants a correct XML file.
1213   The new syntax is:
1214     <key>ifdVendorID</key>
1215     <array>
1216         <string>0x08E6</string> <!-- 1, Gemplus -->
1217         <string>0x04E6</string> <!-- 2, SCM Microsystems -->
1218         <string>0x076B</string> <!-- 3, OmniKey -->
1219         <string>0x0783</string> <!-- 4, C3PO -->
1220     </array>
1221
1222     <key>ifdProductID</key>
1223     <array>
1224         <string>0x3437</string> <!-- 1 -->
1225         <string>0x5115</string> <!-- 2 -->
1226         <string>0x3021</string> <!-- 3 -->
1227         <string>0x0003</string> <!-- 4 -->
1228     </array>
1229
1230     <key>ifdFriendlyName</key>
1231     <array>
1232         <string>GemPC Twin</string>   <!-- 1 -->
1233         <string>SCR 335</string>      <!-- 2 -->
1234         <string>CardMan 3121</string> <!-- 3 -->
1235         <string>LTC31</string>        <!-- 4 -->
1236     </array>
1237 - src/powermgt_macosx.c, src/hotplug_macosx.c and some others: Add support of
1238   PCMCIA for MacOS X. Thanks to Stephen M. Webb.
1239 - src/hotplug_libusb.c: Add support of libusb. Allow to use USB readers on
1240   *BSD or any plateform supported by libusb. Thanks to Toni Andjelkovic for
1241   the great job.
1242   I also redesigned the code to support up to PCSCLITE_MAX_READERS readers
1243   whatever the driver they use.
1244 - src/musclecard.c:
1245   . fix an initialisation problem of pConnection->shareMode (thanks to Wan-Teh
1246   Chang)
1247   . avoid a memory leak (Toni Andjelkovic)
1248 - doc/example: sample demo application using pcsc-lite API
1249 - src/winscard.c:
1250   . pcscd reported card is present when there is no card in the reader
1251   . return SCARD_E_INVALID_PARAMETER for APDU of less than 4 bytes
1252 - src/winscard_svc.c: Sometimes unknown APDUs were being transmitted when
1253   'SCardStatus' function was invoked
1254 - some code cleanup and compilation problems removed.
1255
1256
1257 pcsc-lite-1.1.2beta5: Ludovic Rousseau
1258 30 May, 2003
1259 - src/winscard.c: SCardStatus(): do not return before filling buffers
1260 - src/winscard_clnt.c: SCardStatusTH(): simplify code and return correct
1261   results when buffers are too short or NULL is used
1262 - src/libpcsclite.pc.in: used to generated a pkg-config ".pc" file (thanks to
1263   Andreas Jellinghaus for the idea and the patch)
1264 - configure.in, src/Makefile.am, src/utils/installifd.c, doc/bundleTool.8.in,
1265   doc/pcscd.8.in, etc/reader.conf.in:
1266   . correct typos and include path configured by ./configure appear in the
1267   docs (thanks to Ville Skyttä)
1268 - src/utils/installifd.c:
1269   . replace gets() by fgets() to avoid buffer overflow.
1270   . Use sizeof() instead of constants.
1271   . do not use strdup() since it is useless.
1272   . print error messages when needed.
1273
1274
1275 pcsc-lite-1.1.2beta4: Ludovic Rousseau
1276 13 Apr, 2003
1277 - src/debuglog.c:
1278   . DebugLogSetLogType() set flags and not just _or_ them (allow unset)
1279   . use strncpy to avoid a possible buffer overflow
1280 - src/hotplug_linux.c:
1281   . code cleanup
1282   . support for driver aliases in Info.plist. The syntax is:
1283         <key>ifdProductString</key>
1284         <string>GemPC430</string>
1285
1286         <key>ifdVendorID</key>
1287         <string>0x08E6</string>
1288         <string>0x08E6</string>
1289         <string>0x08E6</string>
1290
1291         <key>ifdProductID</key>
1292         <string>0x0430</string>
1293         <string>0x0432</string>
1294         <string>0x0435</string>
1295
1296         <key>ifdFriendlyName</key>
1297         <string>GemPC430</string>
1298         <string>GemPC432</string>
1299         <string>GemPC435</string>
1300     So this driver will be used by the three possible readers.
1301 - src/Makefile.am:
1302   . support for driver aliases in Info.plist (use tokenparser.l instead of
1303     driverparser.l)
1304   . support for xBSD back
1305 - src/pcsclite.h:
1306   . rename "pcsc.pub" and "pcsc.comm" in "pcscd.pub" and "pcscd.comm"
1307 - src/tokenparser.l:
1308   . code reindentation
1309   . use DebugLogB()/DebugLogC with correct number of arguments
1310 - src/tokenparser.l:
1311   . regenerated from src/tokenparser.l
1312
1313
1314 pcsc-lite-1.1.2beta3: Ludovic Rousseau, David Corcoran
1315 7 Nov, 2002
1316 - Support for Sun Microsystems' SCF
1317 - Patches from Dmitry Djachenko to:
1318   . init g_rgSCard??Pci variable at compile time
1319   . return more meaningfull error codes in SCardReconnect()
1320   . return more information in SCardStatus()
1321   . accept pioRecvPci == NULL in SCardTransmit()
1322     according to MSDN (July 2002) : SCardTransmit description
1323      pioRecvPci
1324       [in, out] Pointer to the protocol header structure for the instruction,
1325       followed by a buffer in which to receive any returned protocol control
1326       information (PCI) specific to the protocol in use. This parameter may be
1327       NULL if no returned PCI is desired.
1328 - correct an overflow in SCardGetStatusChange(). Thanks to Michael Nidd
1329 - configure.in, src/pcscdaemon.c, src/pcsclite.h:
1330   . add --enable-ipcdir=DIR option. Default is now /var/run/ instead of
1331   /tmp/pcsc/
1332 - src/Makefile.am:
1333   . reorganise conditionals to to have a src/Makefile.in file 142 (yes 142)
1334   times smaller (33 KB instead of 4.7 MB)
1335 - src/eventhandler.c:
1336   . add filename and error message to error logs for /var/run/pcsc.pub
1337 - src/debuglog.h:
1338   . DebugLogC() uses 3 parameters not 2 (use DebugLogB() for that)
1339
1340
1341 pcsc-lite-1.1.2beta2: Ludovic Rousseau, David Corcoran, Jean-Luc Giraud
1342 12 Oct, 2002
1343 - OpenBSD 3.1 and FreeBSD 4.7RC2 debug and testing
1344 - MacOSX debug and improvement
1345 - support multiple identical USB readers under GNU/Linux
1346 - more debug
1347 - Bug in winscard.c for protocol when ANY is chosen
1348
1349 pcsc-lite-1.1.2beta1: (Ludovic Rousseau <ludovic.rousseau@free.fr>)
1350 6 Sep, 2002
1351 - src/tokenfactory.c, configure.in and bundleTool.c:
1352   . add support for --enable-muscledropdir=DIR
1353 - README:
1354   . The licence file is COPYING and not LICENSE (thanks to Juha Tuomala)
1355 - doc/formaticc.1:
1356   . add formaticc.1 manpage from Debian
1357 - doc/bundleTool.1:
1358   . update and rename from .8 to .1
1359 - src/utils/formaticc.c:
1360   . lots of debug and buffer overflow removal
1361 - src/ifdwrapper.c, src/debuglog.c, doc/pcscd.8:
1362   . add support for --apdu|-a
1363 - src/pcscdaemon.c:
1364   . add support for --apdu, test if the pcscd is still running before
1365     complaining that /tmp/pcsc is present
1366   . print an error message if the --debug argument is not known
1367 - src/Makefile.am:
1368   . add -Wl,--export-dynamic link option
1369 - src/hotplug_linux.c:
1370   . add support for --enable-usbdropdir=DIR
1371
1372
1373 pcsc-lite-1.1.1: (David Corcoran <corcoran@linuxnet.com>)
1374 5 Jun, 2002
1375 - src/readerfactory.c
1376   . Fixed multiple slot handling by adding dwFeeds to multiple slots
1377 - src/winscard_clnt.c
1378   . Fixed multi Establish/Release Context problem by removing CleanupClient
1379
1380
1381 pcsc-lite-1.1.0: (David Corcoran <corcoran@linuxnet.com>)
1382 28 May, 2002
1383 - src/mscdefines.h added
1384 - src/musclecard.c/.h added
1385   . Added client side token/card plugin interface
1386 - src/tokenfactory.c added
1387 - src/powermgt_macosx.h added
1388 - src/powermgt_macosx.c added
1389   . Support for sleep mode on OS X
1390 - src/tokenparser.l added
1391 - src/dyn_hpux modified with new include <errno.h>
1392 - src/winscard_svc.c
1393   . Added session checking so rogue clients cannot steal hCard values
1394 - src/readerfactory.c
1395   . removed world writable files in /tmp/pcsc
1396 - configure.in
1397   . Added support for SCF with SCF plugin
1398 - Added command line arguments for debug/daemon mode <cprados@yahoo.com>
1399 - Previous additions from Ludovic Rousseau <ludovic.rousseau@free.fr>
1400
1401 pcsc-lite-1.0.2beta5: (Ludovic Rousseau <ludovic.rousseau@free.fr>)
1402 10 Mar, 2002
1403 - src/pcscdaemon.c:
1404    . move the pid file creation earlier (before drivers loading)
1405    . allow to properly kill pcscd before or during driver loading
1406      this is useful when the driver init is buggy
1407 - src/pcsclite.h: change PCSCLITE_VERSION_NUMBER to 1.0.2.beta5
1408 - configure.in: change version number to 1.0.2.beta5
1409
1410
1411 pcsc-lite-1.0.2beta4: (Ludovic Rousseau <ludovic.rousseau@free.fr>)
1412 13 Feb, 2002
1413 - configure.in: change version number to 1.0.2.beta4
1414 (from Douglas Atique bugs report and patch)
1415 - etc/Makefile.am
1416    . add the files makeFMStyle, makeSTDStyle and moveFMCode to the
1417      distribution archive
1418 - src/Makefile.am
1419    . add the files sys_solaris.c, sys_hpux.c and powermgt_macosx.c to the
1420      distribution archive
1421 - src/pcscdaemon.c
1422    . ignore SIGHUP signal
1423    . remove pid file if USE_RUN_PID is defined
1424 - src/winscard_msg.c
1425    . move #ifdef PCSC_TARGET_SOLARIS _after_ the inclusion of config.h since
1426      PCSC_TARGET_SOLARIS is defined in config.h
1427
1428
1429 pcsc-lite-1.0.2beta3: (Ludovic Rousseau <ludovic.rousseau@free.fr>)
1430 10 Jan, 2002
1431 (from Carlos Prados Debian package)
1432 - configure.in
1433    . add AC_PREFIX_DEFAULT(/usr/local/pcsc) to install in /usr/local/pcsc by
1434    default
1435 - etc/
1436    . add makeFMStyle, makeSTDStyle and moveFMCode scripts
1437 - src/utils/Makefile.am
1438    . add EXTRA_DIST = sample.in sample.ibm sample.out
1439 - src/dyn_bsd.c
1440    . try without a leading '_' in cas of failure (needed by FreeBSD) thanks to
1441    Toni Andjelkovic <toni@soth.at> for the patch)
1442 - src/test.c
1443    . commented declarations on unused variables
1444    . corrected three %x to %lx for long arguments
1445 - README
1446    . add documentation for --enable-confdir and --enable-runpid
1447 - src/README_INTERNALS.txt: new file containing some documentation for source
1448   code hackers
1449 - src/Makefile.am: add EXTRA_DIST = README_INTERNALS.txt
1450 - src/pcscdaemon.c: the daemon now cleany stops the drivers before exiting
1451    . the global variable AraKiri is set in signal_trap()
1452    . this variable is checked in the main loop of SVCServiceRunLoop()
1453    . RFCleanupReaders() is then called if AraKiri
1454 - src/readerfactory.c: add RFCleanupReaders() to do the cleaning job at exit
1455 - src/test.c: change %x to %02X for the ATR bytes
1456 - src/debuglog.c and src/debuglog.h:
1457    . rewrote the DebugLog[ABCD] function
1458    . the function are now defines than include __FILE__ and __LINE__
1459    . the test #ifdef USE_SYSLOG if moved from the source code to the
1460      src/debuglog.c function only -> the source is more readable
1461    . the new log functions are now used everywhere
1462 - src/configfile.l:
1463    . changed syslog() to DebugLog()
1464    . add #include "debuglog.h"
1465 - README: add a supported platform: OpenBSD 3.0 (with libc.so.28.2)
1466 - Makefile.am: add HELP file to EXTRA_DIST
1467
1468
1469 pcsc-lite-1.0.2beta2: (Ludovic Rousseau <ludovic.rousseau@free.fr>)
1470 20 Dec, 2001
1471 - bootstrap: added --verbose
1472 - reconf: added --verbose and --enable-debug
1473 - configure.in:
1474    . changed release number to 1.0.2.beta2
1475    . added -Wall to CFLAGS to compile with all the warnings ON. This change
1476          implied many small corrections: mainly addition of include file to add
1477          functions prototyping, adding return values when needed, removing unused
1478          variables.
1479    . add doc/ directory (from Carlos Prados Debian package)
1480    . add --enable-confdir=DIR (default to /etc)
1481      inspiration from Shell Hin-Lik Hung, OpenBSD pcsc-lite port
1482    . add --enable-runpid=FILE to store the pcscd pid
1483      inspiration from Carlos Prados, Debian package maintainer
1484 - many C source files includes <pcsclite.h> (or similar). I changed to
1485   "pcsclite.h" since the local .h should be more recent and with less
1486   bugs than the one in /usr/local/include/
1487 - src/dyn_bsd.c, src/dyn_unix.c: in DYN_LoadLibrary() changed 0 to
1488   NULL, "char *" to "const char *"
1489 - src/dyn_hpux.c: removed declared but unused variables
1490 - src/ifdwrapper.c: initialize IFD_? functions pointer to NULL
1491 - src/pcscdaemon.c:
1492    . removed declaration of errno (already made in errno.h)
1493    . exit with code value
1494    . more explicit error message when /tmp/pcsc/ already exist
1495    . test if VERSION and PCSCLITE_VERSION_NUMBER are the same
1496      release numbers
1497    . create a file containing the PID (see configure --enable-runpid=FILE)
1498      ("stolen" from Carlos Prados Debian package)
1499 - src/readerfactory.c
1500    . removed unused variables
1501    . dwSlot is a long, use %ld instead of %d
1502    . changed "SCARD_F_UNKNOWN_ERROR;" to "return SCARD_F_UNKNOWN_ERROR;"
1503 - src/readerfactory.h: corrected "RVAllocateReaderSpace" to
1504   "RFAllocateReaderSpace" (RVA -> RFA)
1505 - sys_*.c: removed declaration of errno
1506 - src/sys_unix.c: add "return 0;" in SYS_Initialize()
1507 - winscard.c: in SCardReconnect()
1508    . initialize dwAction to 0
1509    . remove unused variables dwReaderLen and dwProtocol
1510 - src/winscard_clnt.c: commented out declaration and definition of
1511   SCardSetupThreadSafety(). It is not used anywhere.
1512 - src/winscard_msg.c:
1513    . add the error message "strerror(errno)" returned by the socket
1514      functions in the debug message logged
1515    . removed unused variables
1516    . removed (fd_set *) cast in select calls. (compiles OK without)
1517 - src/winscard_svc.c: add a "return 0;" in MSGCleanupClient()
1518 - src/winscard_svc.h: add prototype for MSGCleanupClient()
1519 - doc/Makefile.am: ("stolen" from Carlos Prados Debian package)
1520    . add this directory in dist files
1521 - Makefile.am: ("stolen" from Carlos Prados Debian package)
1522    . add doc directory
1523    . add reconf bootstrap in dist files
1524 - src/Makefile.am: ("stolen" from Carlos Prados Debian package)
1525    . add utils directory
1526    . remove libpcsclite-core.la from install target
1527    . add dyn_bsd.c dyn_hpux.c to EXTRA_libpcsclite_core_la_SOURCES
1528 - src/utils/Makefile.am: ("stolen" from Carlos Prados Debian package)
1529    . converted LIBS line into formaticc_LDADD line
1530 - src/hotplug_linux.c
1531    . add some includes files
1532    . commented useless declarations of hpManu_id, hpProd_id, bundleArraySize
1533 - src/utils/installifd.c
1534    . rv, dwRecvLength and dwSendLength are long, use %ld instead of %d
1535    . commented useless declarations of many variables
1536    . add some (int *) casts
1537 - etc/ ("stolen" from Carlos Prados Debian package)
1538    . added SmartcardServices
1539    . added StartupParameters.plist
1540 - src/debuglog.c:
1541    . put the ATR on just one line even with syslog
1542    . changed LOG_DEBUG to LOG_INFO since the LOG_DEBUG level messages are
1543      seldom logged
1544 - src/pcsclite.h: test if USE_READER_CONF is defined (see
1545      --enable-confdir=DIR)
1546
1547 pcsc-lite-1.0.2beta: (Ludovic Rousseau)
1548 29 Nov, 2001
1549 - stop if /tmp/pcsc already exists
1550 - clean and remove /tmp/pcsc on exit using signal() and atexit()
1551 - renamed SYS_Exit to exit in many places to use the atexit() defined
1552   cleaning function
1553 - removed \n in debug messages (syslog does not need it)
1554 - some minor print cosmetic modification in atrhandler.c
1555 - use a define DEBUG_BUFFER_LENGTH instead of 150 in debuglog.c
1556 - use snprintf() instead of sprintf() in debuglog.c
1557 - add a error on compile in pcscdaemon.c
1558    You must use '--enable-syslog' when also using '--enable-daemon' or
1559    you will not get any message
1560 - renamed SYS_Stat to SYS_Fstat since the system call is fstat and stat
1561   is another one
1562 - use PCSCLITE_IPC_DIR instead of repeating "/tmp/pcsc/" in pcsclite.h
1563
1564 pcsc-lite-1.0.1:
1565 added -fno-common to CCFLAGS
1566 fixed syslog error on ATR
1567 lengthened the default client timeout on commands
1568 fixed bus error when vendir/id not found
1569 Added support for HP-UX 11 and OpenBSD 2.9
1570 Removed callback socket from server
1571 Fixed GetStatusChange bug on small timeouts
1572 Fix bug in transmit where reader sends back
1573 wrong length causes client to overwrite buffer
1574
1575 pcsc-lite-1.0.0b:
1576 Fixed numerous NULL pointer errors
1577 Fixed many, many behaviors
1578 Tried Windows compatibility testing
1579 Switched to sockets based implementation
1580 Basically, it's had 2 months testing
1581
1582 pcsc-lite-0.9.3:
1583 Changed test.c
1584 Added buffered read/write layer
1585 Shortened timeouts on outgoing commands
1586 Added support for Solaris 2.6 2.8
1587 Fixed autoconf problems
1588 Added an option for client side thread safety
1589 Fixed '-' problem for bundleparser
1590
1591 pcsc-lite-0.9.1:
1592 Switched to named pipes for transport
1593 Fixed SCARD_POWERED tag when card inserted upside down
1594 Added non-polling request blocking
1595 Switched to autoconf thanks to some help
1596 Added timeouts for client/server
1597
1598 pcsc-lite-0.8.7:
1599 Added kernel IoKit notifications for USB devices on OS X
1600 Added polling support for USB devices on Linux
1601 Added XML parsing for bundles on Linux
1602 Fixed GetStatusChange's SCARD_READERSTATE structure problem
1603 Fixed random generation in EstablishContext ( Carl-Magnus Pettersson )
1604 Fixed RPC Channel leak in EstablishContext  ( Carl-Magnus Pettersson )
1605 Updated documentation to 0.8.7
1606
1607 pcsc-lite-0.8.6:
1608 Added empty file powermgt_macosx.c for future power management
1609 Added ability for multiple identical readers on OS X
1610 Fixed bug enabling SCardTransmit to pass memory card functions
1611 by allowing sSendPci to be NULL
1612 Fixed some possible buffer overrun exploits
1613
1614 pcsc-lite-0.8.5:
1615 Moved to 'fat client' architecture
1616 Mapped status to clients so events are immediate
1617 Removed fork() from server, and wait() calls
1618 Added multi readers to GetStatusChange
1619 Added block for reader in GetStatusChange
1620 Added Reader Lun naming mechanism for friendlynames
1621 Updated the documentation
1622
1623 pcsc-lite-0.8.2:
1624 Added more error checking to all winscard functions.
1625 Added the ability to use Domain Sockets on Linux, Solaris.
1626 Increased the select sleep time to conserve cpu time.
1627 Added the ability to recover from errors by reloading drivers/etc.
1628 Pre-allocated bundle array list to save cpu time and memory leakage.
1629 Added SECURITY file.
1630
1631 pcsc-lite-0.8.0:
1632 Added Hot Pluggable search function to select loop.
1633 Fixed Makefiles to do copies not moves
1634 Changed some filenames.
1635
1636 pcsc-lite-0.7.8:
1637 Fixed race condition between pcscusb and eventhandler.c
1638 Fixed core dump on error startup.
1639 Added T=1 detection to test.c.
1640 Added SCardControl()
1641
1642 pcsc-lite-0.7.5:
1643 Dynamically addable readers.
1644 Multiple dynamically addable readers.
1645 More startup error checking.
1646 Full support for OS X
1647
1648 pcsc-lite-0.7.3:
1649 Added stringified error responses.
1650 Fixed some error returning bugs.
1651 Support for dynamic readers such as USB readers.
1652 More support for OS X
1653
1654 pcsc-lite-0.7.1:
1655 Fixed bugs causing problems in Redhat regarding mutex pointers.
1656 Fixed exiting problem causing random zombie processes.
1657 Removed thread libs and dyn libs from local library.
1658 Abstracted thread libs in thread_generic.h
1659 Added support for Mac OS X.
1660
1661 pcsc-lite-0.7.0:
1662 Support for ifd handler 2.0 specifications.
1663
1664 pcsc-lite-0.6.9:
1665 Fixed bug in readerfactory.c that only allowed 2 applications
1666 to run simultaneously.
1667 Fixed bug in rpc/winscard.c so that some applications which
1668 while looped on Begin/End could not cause starvation.
1669
1670
1671 pcsc-lite-0.6.8
1672 Fixed mutex bug in readerfactory.c
1673 Added SCardListReaderGroups for compatibility
1674 Fixed NULL in for ListReaders
1675 Fixed NULL as pioRecvPci in Transmit
1676 Added multi-sys Makefiles
1677 Pulled Windows(r) defs from pcsclite.h
1678 Added INFINITE to GetStatusChange.
1679
1680 pcsc-lite-0.6.6
1681 Added application event notification on calls
1682 Added SCardReconnect
1683
1684 pcsc-lite-0.6.5
1685 Added -v option for version checking
1686 Added security module for future encryption/decryption
1687 Added function to allow only from localhost
1688 Added default values to all variables
1689 Proper freeing of all pointer values
1690 Fixed Reset on Disconnect
1691 Removed any dangerous pointer references
1692
1693 pcsc-lite-0.6.4
1694 Shortened the thread zombie cleanup time.
1695
1696 pcsc-lite-0.6.3
1697 Fixed readerfactory assignment of ID problem
1698
1699 pcsc-lite-0.6.2
1700 Using pthreads for status poll.
1701 Using pthread mutexes instead of test and set.
1702 Fixed problem in GetStatusChange.
1703 Fixed SCardBeginTransaction.
1704
1705 pcsc-lite-0.6.0
1706 Removed SCardReadMemory, SCardWriteMemory
1707 Added Mutex locks around all driver calls
1708 Added ability to do startup allocation
1709 Fixed memory leak in RFAddReader
1710 Removed some warnings
1711
1712 pcsc-lite-0.5.5
1713 Added multi-slot support
1714 Fixed T=0/1 protocol definition
1715
1716 pcsc-lite-0.5.2
1717 Fixed protocol negotiation
1718 Modified defines to work with OCF
1719
1720 pcsc-lite-0.5.0
1721 Fixed the Makefiles to include
1722 symbolic links to external libraries
1723
1724 pcsc-lite-0.4.9
1725 Added some objects to the client's
1726 library so it can be used with ssp-lite
1727
1728 pcsc-lite-0.4.7
1729 Added Server State Machine
1730 Kills dead clients and frees resources
1731 Added SCardSetTimeout
1732 Fixed Makefile for non-rpc
1733 Added BSD style Makefile for BSD compilation
1734 Fixed SCardRead/Write functions
1735
1736 pcsc-lite-0.4.0
1737 Fixed SCardStatus Function
1738 Added IFD Wrapper Abstraction Layer
1739 Began support for multiple slots
1740 Fixed bug in SCardStatus with overflow
1741 Added code to remove zombie processes
1742 Added support for connecting to multiple
1743 readers/resource managers from the client.
1744
1745 pcsc-lite-0.3.0:
1746 Added RPC abstraction layer.
1747 Added Server Forking on Transmit and GetStatusChange.
1748 Fixed overflowed buffer in atrhandler.c
1749 Fixed Disconnect Bug.
1750
1751 pcsc-lite-0.2.4:
1752 Added ATR Handling.
1753 Added support for T=1
1754 Added support for PTS negotiation
1755 Added abstraction for more slots/terminal
1756 Added correct ATR size return
1757
1758 pcsc-lite-0.2.2:
1759 Added some defines in pcsclite.h
1760 Added support for Memory cards.
1761 Added support for SCardCancel.
1762
1763 pcsc-lite-0.2.0:
1764 Fixed powering up error in GetStatusChange.
1765 Added some type defines in pcsclite.h
1766
1767 pcsc-lite-0.1.0:
1768 Fixed bug in readerfactory.c line 117 lpcReaders[p] = 0
1769 to lpcTReaders[p] = 0.  This was giving strange errors.
1770 Fixed return rv at SCardStatus function to return SCARD_S_SUCCESS.
1771 Added 7 more defines to pcsclite.h
1772
1773 pcsc-lite-0.0.2:
1774 Added functions Status, and GetStatusChange
1775 Fixed Connect to look for card
1776 Fixed return values for functions