pcsc: correctly handle timeout situation when refreshing reader state.

The code that treated a timeout as success was never reached, because the
surrounding if eliminated the possibility of entering the block when the return code
from SCardGetStatusChange was SCARD_E_TIMEOUT.

Issue found by Coverity Scan.
This commit is contained in:
Martin Paljak 2011-06-16 10:15:34 +03:00
parent 1f870b0c07
commit 46e0c49d7b
1 changed files with 2 additions and 1 deletions

View File

@ -286,8 +286,9 @@ static int refresh_attributes(sc_reader_t *reader)
rv = priv->gpriv->SCardGetStatusChange(priv->gpriv->pcsc_ctx, 0, &priv->reader_state, 1);
if (rv != SCARD_S_SUCCESS && rv != (LONG)SCARD_E_TIMEOUT) {
if (rv != SCARD_S_SUCCESS) {
if (rv == (LONG)SCARD_E_TIMEOUT) {
/* Timeout, no change from previous recorded state. Make sure that changed flag is not set. */
reader->flags &= ~SC_READER_CARD_CHANGED;
SC_FUNC_RETURN(reader->ctx, SC_LOG_DEBUG_VERBOSE, SC_SUCCESS);
}