Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6963006

smartcardio is not mt safe - javax.smartcardio.CardException: wait mismatch

    XMLWordPrintable

    Details

      Backports

        Description

        When trying to check from a thread whether a smartcard has been already
        removed while a read/write operation is taking place in another thread
        the following exception occurs:

           javax.smartcardio.CardException: wait mismatch
              at sun.security.smartcardio.TerminalImpl.waitForCard(TerminalImpl.java:103)
              at sun.security.smartcardio.TerminalImpl.waitForCardAbsent(TerminalImpl.java:120)
              at TerminalImplExample.run(TerminalImplExample.java:116)

        This is an exception which should never happen, please see the source code
        of waitForCard() in
        /ws/j2se/src/share/classes/sun/security/smartcardio/TerminalImpl.java

                    // should never happen
                    if (wantPresent != present) {
                        throw new CardException("wait mismatch");

        Since it does happen, I'd consider this a bug. A test case is available.
        See the attached zip file TerminalImplExample.zip. It requires a card reader.

        The reason why the exception occured is that waitForCard() is not prepared to
        handle other card state changes than SCARD_STATE_PRESENT = 0x0020;
        With the test case we can see that for example 0x0122 occurs, which means
        CHANGED PRESENT INUSE.

          Attachments

            Issue Links

              Activity

                People

                Assignee:
                miroslawzn Miroslaw Niemiec (Inactive)
                Reporter:
                tviessma Thomas Viessmann (Inactive)
                Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                  Dates

                  Created:
                  Updated:
                  Resolved:
                  Imported:
                  Indexed: