Add iso14443a fuzz command

This commit is contained in:
douniwan5788
2013-02-05 10:03:53 +00:00
parent d16e0478d2
commit 04202e7aa7
2 changed files with 81 additions and 2 deletions

View File

@@ -1770,6 +1770,7 @@ void ReaderIso14443a(UsbCommand * c, UsbCommand * ack)
iso14a_command_t param = c->arg[0];
uint8_t * cmd = c->d.asBytes;
size_t len = c->arg[1];
uint8_t *receiveBuf = (((uint8_t *)BigBuf) + FREE_BUFFER_OFFSET);
if(param & ISO14A_REQUEST_TRIGGER) iso14a_set_trigger(1);
@@ -1788,7 +1789,19 @@ void ReaderIso14443a(UsbCommand * c, UsbCommand * ack)
}
if(param & ISO14A_APDU) {
ack->arg[0] = iso14_apdu(cmd, len, ack->d.asBytes);
memcpy(receiveBuf, ack->d.asBytes, len);
ack->arg[0] = iso14_apdu(cmd, len, receiveBuf);
while(ack->arg[0] > sizeof(ack->d))
{
memcpy(ack->d.asBytes, receiveBuf, sizeof(ack->d));
UsbSendPacket((void *)ack, sizeof(UsbCommand));
receiveBuf+=sizeof(ack->d);
ack->arg[0]-=sizeof(ack->d);
}
memcpy(ack->d.asBytes, receiveBuf, ack->arg[0]);
UsbSendPacket((void *)ack, sizeof(UsbCommand));
}
@@ -2513,4 +2526,4 @@ done:
Dbprintf("maxDataLen=%x, Uart.state=%x, Uart.byteCnt=%x Uart.byteCntMax=%x", maxDataLen, Uart.state, Uart.byteCnt, Uart.byteCntMax);
LEDsoff();
}
}