Minor fixes for usb-ccid.c.

This commit is contained in:
NIIBE Yutaka
2018-11-09 15:23:33 +09:00
parent 5aee75fd4b
commit 2c390dc763
2 changed files with 8 additions and 0 deletions

View File

@@ -1,5 +1,8 @@
2018-11-09 NIIBE Yutaka <gniibe@fsij.org> 2018-11-09 NIIBE Yutaka <gniibe@fsij.org>
* src/usb-ccid.c (ccid_handle_data): Set c->state for pinpad input.
(ccid_send_data_block_internal): Fix the case of len == 0.
* src/main.c (display_status_code): There is * src/main.c (display_status_code): There is
no case where ccid_state == CCID_STATE_RECEIVE. no case where ccid_state == CCID_STATE_RECEIVE.
* src/gnuk.h (CCID_STATE_RECEIVE): Remove. * src/gnuk.h (CCID_STATE_RECEIVE): Remove.

View File

@@ -986,6 +986,9 @@ ccid_send_data_block_internal (struct ccid *c, uint8_t status, uint8_t error)
#endif #endif
if (len == 0) if (len == 0)
{ {
c->epi->buf = NULL;
c->epi->tx_done = 1;
#ifdef GNU_LINUX_EMULATION #ifdef GNU_LINUX_EMULATION
usb_lld_tx_enable_buf (c->epi->ep_num, endp1_tx_buf, usb_lld_tx_enable_buf (c->epi->ep_num, endp1_tx_buf,
CCID_MSG_HEADER_SIZE); CCID_MSG_HEADER_SIZE);
@@ -1418,6 +1421,7 @@ ccid_handle_data (struct ccid *c)
c->a->res_apdu_data_len = 0; c->a->res_apdu_data_len = 0;
c->a->res_apdu_data = &c->p[5]; c->a->res_apdu_data = &c->p[5];
c->state = APDU_STATE_COMMAND_RECEIVED;
eventflag_signal (&c->openpgp_comm, EV_VERIFY_CMD_AVAILABLE); eventflag_signal (&c->openpgp_comm, EV_VERIFY_CMD_AVAILABLE);
next_state = CCID_STATE_EXECUTE; next_state = CCID_STATE_EXECUTE;
} }
@@ -1452,6 +1456,7 @@ ccid_handle_data (struct ccid *c)
c->a->res_apdu_data_len = 0; c->a->res_apdu_data_len = 0;
c->a->res_apdu_data = &ccid_buffer[5]; c->a->res_apdu_data = &ccid_buffer[5];
c->state = APDU_STATE_COMMAND_RECEIVED;
eventflag_signal (&c->openpgp_comm, EV_MODIFY_CMD_AVAILABLE); eventflag_signal (&c->openpgp_comm, EV_MODIFY_CMD_AVAILABLE);
next_state = CCID_STATE_EXECUTE; next_state = CCID_STATE_EXECUTE;
} }