Changeset 1187 for trunk/src/ifd


Ignore:
Timestamp:
01/09/12 22:22:00 (4 months ago)
Author:
alonbl
Message:

Add some more debugging information

Location:
trunk/src/ifd
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/ifd/ifd-ccid.c

    r1186 r1187  
    228228{ 
    229229        unsigned char *p = (unsigned char *)status; 
    230  
    231         if ((p[7] >> 6 & 3) == 0) 
    232                 return 0; 
    233  
     230        int ret; 
     231 
     232        if ((p[7] >> 6 & 3) == 0) { 
     233                ret = 0; 
     234        } 
    234235        /* XXX */ 
    235         if ((p[7] >> 6 & 3) == 2) { 
     236        else if ((p[7] >> 6 & 3) == 2) { 
    236237                /*ct_error("card requests more time"); */ 
    237                 return -300; 
    238         } 
    239  
    240         switch (p[8]) { 
    241         case CCID_ERR_ICC_MUTE: 
    242                 return IFD_ERROR_NO_CARD; 
    243         case CCID_ERR_XFR_PARITY: 
    244         case CCID_ERR_OVERRUN: 
    245                 return IFD_ERROR_COMM_ERROR; 
    246         case CCID_ERR_BAD_ATR_TS: 
    247         case CCID_ERR_BAD_ATR_TCK: 
    248                 return IFD_ERROR_NO_ATR; 
    249         case CCID_ERR_PROT_NOSUP: 
    250         case CCID_ERR_CLASS_NOSUP: 
    251                 return IFD_ERROR_INCOMPATIBLE_DEVICE; 
    252         case CCID_ERR_BAD_PROC_BYTE: 
    253                 return IFD_ERROR_INVALID_ARG; 
    254         case CCID_ERR_BUSY_AUTO_SEQ: 
    255         case CCID_ERR_SLOT_BUSY: 
    256                 return IFD_ERROR_TIMEOUT; 
    257         case CCID_ERR_PIN_TIMEOUT: 
    258                 return IFD_ERROR_USER_TIMEOUT; 
    259         case CCID_ERR_PIN_CANCELED: 
    260                 return IFD_ERROR_USER_ABORT; 
    261         case CCID_OFFSET_MSGTYPE: 
    262                 return IFD_ERROR_NOT_SUPPORTED; 
    263         case CCID_OFFSET_SLOT: 
    264                 return IFD_ERROR_INVALID_SLOT; 
    265         } 
    266         return IFD_ERROR_GENERIC; 
     238                ret = -300; 
     239        } 
     240        else { 
     241                switch (p[8]) { 
     242                case CCID_ERR_ICC_MUTE: 
     243                        ret = IFD_ERROR_NO_CARD; 
     244                        break; 
     245                case CCID_ERR_XFR_PARITY: 
     246                case CCID_ERR_OVERRUN: 
     247                        ret = IFD_ERROR_COMM_ERROR; 
     248                        break; 
     249                case CCID_ERR_BAD_ATR_TS: 
     250                case CCID_ERR_BAD_ATR_TCK: 
     251                        ret = IFD_ERROR_NO_ATR; 
     252                        break; 
     253                case CCID_ERR_PROT_NOSUP: 
     254                case CCID_ERR_CLASS_NOSUP: 
     255                        ret = IFD_ERROR_INCOMPATIBLE_DEVICE; 
     256                        break; 
     257                case CCID_ERR_BAD_PROC_BYTE: 
     258                        ret = IFD_ERROR_INVALID_ARG; 
     259                        break; 
     260                case CCID_ERR_BUSY_AUTO_SEQ: 
     261                case CCID_ERR_SLOT_BUSY: 
     262                        ret = IFD_ERROR_TIMEOUT; 
     263                        break; 
     264                case CCID_ERR_PIN_TIMEOUT: 
     265                        ret = IFD_ERROR_USER_TIMEOUT; 
     266                        break; 
     267                case CCID_ERR_PIN_CANCELED: 
     268                        ret = IFD_ERROR_USER_ABORT; 
     269                        break; 
     270                case CCID_OFFSET_MSGTYPE: 
     271                        ret = IFD_ERROR_NOT_SUPPORTED; 
     272                        break; 
     273                case CCID_OFFSET_SLOT: 
     274                        ret = IFD_ERROR_INVALID_SLOT; 
     275                        break; 
     276                default: 
     277                        ret = IFD_ERROR_GENERIC; 
     278                        break; 
     279                } 
     280        } 
     281 
     282        ifd_debug(1, "r: %d", ret); 
     283        return ret; 
    267284} 
    268285 
     
    276293        if (slot >= reader->nslots) 
    277294                return IFD_ERROR_INVALID_SLOT; 
    278         if (sendlen + 10 > outsz)       /* this probably means the apdu is larger 
     295        if (sendlen + 10 > outsz) {     /* this probably means the apdu is larger 
    279296                                           than the supported MaxMessageSize - 10  */ 
     297                ifd_debug(1, "error: unsupported (apdu larger than max outsz: %d, sendlen: %d)", outsz, sendlen); 
    280298                return IFD_ERROR_NOT_SUPPORTED; 
     299        } 
    281300        *p++ = cmd; 
    282301        *p++ = sendlen & 0xFF; 
     
    13211340        ccid_status_t *st = (ccid_status_t *) reader->driver_data; 
    13221341 
    1323         ifd_debug(1, "called."); 
     1342        ifd_debug(1, "called. reader_type: %d, icc_proto[slot]=%d", st->reader_type, st->icc_proto[slot]); 
    13241343        if (st->reader_type == TYPE_APDU || 
    13251344            (st->reader_type == TYPE_TPDU && 
    13261345             st->icc_proto[slot] == IFD_PROTOCOL_T0)) 
    13271346                return ccid_exchange(reader, slot, sbuf, slen, rbuf, rlen); 
     1347 
     1348        ifd_debug(1, "error: unsupported (slot settings)"); 
    13281349        return IFD_ERROR_NOT_SUPPORTED; 
    13291350} 
  • trunk/src/ifd/process.c

    r1114 r1187  
    387387                       ct_tlv_builder_t * resp) 
    388388{ 
    389         unsigned char replybuf[258]; 
     389        unsigned char replybuf[258+256]; 
    390390        unsigned char *data; 
    391391        size_t data_len; 
Note: See TracChangeset for help on using the changeset viewer.