Change *transceive*() API to be closer to *transceive_bytes.
Warning: only prototypes have been changed, implementation does not take care about buffer size. New issue Summary: Implement buffer overflow protection on all *transceive*() functions *transceive*() functions do have an argument for rx buffer but some of them dont use it to protect user from buffer overflow.
This commit is contained in:
parent
7437f76007
commit
dd451da4a5
2 changed files with 15 additions and 7 deletions
|
@ -84,9 +84,9 @@ extern "C" {
|
||||||
NFC_EXPORT int nfc_initiator_poll_dep_target(nfc_device *pnd, const nfc_dep_mode ndm, const nfc_baud_rate nbr, const nfc_dep_info *pndiInitiator, nfc_target *pnt, const int timeout);
|
NFC_EXPORT int nfc_initiator_poll_dep_target(nfc_device *pnd, const nfc_dep_mode ndm, const nfc_baud_rate nbr, const nfc_dep_info *pndiInitiator, nfc_target *pnt, const int timeout);
|
||||||
NFC_EXPORT int nfc_initiator_deselect_target(nfc_device *pnd);
|
NFC_EXPORT int nfc_initiator_deselect_target(nfc_device *pnd);
|
||||||
NFC_EXPORT int nfc_initiator_transceive_bytes(nfc_device *pnd, const uint8_t *pbtTx, const size_t szTx, uint8_t *pbtRx, const size_t szRx, int timeout);
|
NFC_EXPORT int nfc_initiator_transceive_bytes(nfc_device *pnd, const uint8_t *pbtTx, const size_t szTx, uint8_t *pbtRx, const size_t szRx, int timeout);
|
||||||
NFC_EXPORT int nfc_initiator_transceive_bits(nfc_device *pnd, const uint8_t *pbtTx, const size_t szTxBits, const uint8_t *pbtTxPar, uint8_t *pbtRx, uint8_t *pbtRxPar);
|
NFC_EXPORT int nfc_initiator_transceive_bits(nfc_device *pnd, const uint8_t *pbtTx, const size_t szTxBits, const uint8_t *pbtTxPar, uint8_t *pbtRx, const size_t szRx, uint8_t *pbtRxPar);
|
||||||
NFC_EXPORT int nfc_initiator_transceive_bytes_timed(nfc_device *pnd, const uint8_t *pbtTx, const size_t szTx, uint8_t *pbtRx, const size_t szRx, uint32_t *cycles);
|
NFC_EXPORT int nfc_initiator_transceive_bytes_timed(nfc_device *pnd, const uint8_t *pbtTx, const size_t szTx, uint8_t *pbtRx, const size_t szRx, uint32_t *cycles);
|
||||||
NFC_EXPORT int nfc_initiator_transceive_bits_timed(nfc_device *pnd, const uint8_t *pbtTx, const size_t szTxBits, const uint8_t *pbtTxPar, uint8_t *pbtRx, uint8_t *pbtRxPar, uint32_t *cycles);
|
NFC_EXPORT int nfc_initiator_transceive_bits_timed(nfc_device *pnd, const uint8_t *pbtTx, const size_t szTxBits, const uint8_t *pbtTxPar, uint8_t *pbtRx, const size_t szRx, uint8_t *pbtRxPar, uint32_t *cycles);
|
||||||
NFC_EXPORT int nfc_initiator_target_is_present(nfc_device *pnd, const nfc_target nt);
|
NFC_EXPORT int nfc_initiator_target_is_present(nfc_device *pnd, const nfc_target nt);
|
||||||
|
|
||||||
/* NFC target: act as tag (i.e. MIFARE Classic) or NFC target device. */
|
/* NFC target: act as tag (i.e. MIFARE Classic) or NFC target device. */
|
||||||
|
|
18
libnfc/nfc.c
18
libnfc/nfc.c
|
@ -678,8 +678,10 @@ nfc_initiator_transceive_bytes(nfc_device *pnd, const uint8_t *pbtTx, const size
|
||||||
* CRC bytes. Using this feature you are able to simulate these frames.
|
* CRC bytes. Using this feature you are able to simulate these frames.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
nfc_initiator_transceive_bits(nfc_device *pnd, const uint8_t *pbtTx, const size_t szTxBits, const uint8_t *pbtTxPar,
|
nfc_initiator_transceive_bits(nfc_device *pnd,
|
||||||
uint8_t *pbtRx, uint8_t *pbtRxPar)
|
const uint8_t *pbtTx, const size_t szTxBits, const uint8_t *pbtTxPar,
|
||||||
|
uint8_t *pbtRx, const size_t szRx,
|
||||||
|
uint8_t *pbtRxPar)
|
||||||
{
|
{
|
||||||
HAL(initiator_transceive_bits, pnd, pbtTx, szTxBits, pbtTxPar, pbtRx, pbtRxPar);
|
HAL(initiator_transceive_bits, pnd, pbtTx, szTxBits, pbtTxPar, pbtRx, pbtRxPar);
|
||||||
}
|
}
|
||||||
|
@ -705,7 +707,10 @@ nfc_initiator_transceive_bits(nfc_device *pnd, const uint8_t *pbtTx, const size_
|
||||||
* @warning The configuration option \a NP_HANDLE_PARITY must be set to \c true (the default value).
|
* @warning The configuration option \a NP_HANDLE_PARITY must be set to \c true (the default value).
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
nfc_initiator_transceive_bytes_timed(nfc_device *pnd, const uint8_t *pbtTx, const size_t szTx, uint8_t *pbtRx, const size_t szRx, uint32_t *cycles)
|
nfc_initiator_transceive_bytes_timed(nfc_device *pnd,
|
||||||
|
const uint8_t *pbtTx, const size_t szTx,
|
||||||
|
uint8_t *pbtRx, const size_t szRx,
|
||||||
|
uint32_t *cycles)
|
||||||
{
|
{
|
||||||
HAL(initiator_transceive_bytes_timed, pnd, pbtTx, szTx, pbtRx, szRx, cycles);
|
HAL(initiator_transceive_bytes_timed, pnd, pbtTx, szTx, pbtRx, szRx, cycles);
|
||||||
}
|
}
|
||||||
|
@ -746,8 +751,11 @@ nfc_initiator_target_is_present(nfc_device *pnd, const nfc_target nt)
|
||||||
* @warning The configuration option \a NP_HANDLE_PARITY must be set to \c true (the default value).
|
* @warning The configuration option \a NP_HANDLE_PARITY must be set to \c true (the default value).
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
nfc_initiator_transceive_bits_timed(nfc_device *pnd, const uint8_t *pbtTx, const size_t szTxBits, const uint8_t *pbtTxPar,
|
nfc_initiator_transceive_bits_timed(nfc_device *pnd,
|
||||||
uint8_t *pbtRx, uint8_t *pbtRxPar, uint32_t *cycles)
|
const uint8_t *pbtTx, const size_t szTxBits, const uint8_t *pbtTxPar,
|
||||||
|
uint8_t *pbtRx, const size_t szRx,
|
||||||
|
uint8_t *pbtRxPar,
|
||||||
|
uint32_t *cycles)
|
||||||
{
|
{
|
||||||
HAL(initiator_transceive_bits_timed, pnd, pbtTx, szTxBits, pbtTxPar, pbtRx, pbtRxPar, cycles);
|
HAL(initiator_transceive_bits_timed, pnd, pbtTx, szTxBits, pbtTxPar, pbtRx, pbtRxPar, cycles);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue