Я пытаюсь создать оболочку C++ вокруг libnfc, чтобы установить связь между моим Android и PN532 модуль RFID.
Мне это очень помогло: http://nfc-tools.org/index.php/Libnfc:APDU_example
Этот код предназначен для отправки команды APDU, тело которой содержится в message
(я не отправляю никаких байтов заголовка и т. д.), и чтения ответа в response
.
Проблема: если message
превышает 262 символа, я получаю сообщение об ошибке обнаружено переполнение буфера. В противном случае он работает отлично. Я даже не думаю, что ошибка выдается библиотекой NFC.
bool send(const std::string &message, std::string &response){
std::vector<uint8_t> apduCmd(message.begin(), message.end());
uint8_t *capdu = &apduCmd[0];
size_t capdulen = apduCmd.size();
uint8_t rapdu[10];
size_t rapdulen = 10;
// BUFFER OVERFLOW HERE
int res = nfc_initiator_transceive_bytes(m_nfcDevice, capdu, capdulen, rapdu, rapdulen, 500);
if (res<0) {
return false;
}
if(res<2 || rapdu[res-2] != 0x90 || rapdu[res-1] != 0x00){
return false;
}
// byteArrayToString omitting the last two bytes
response = byteArrayToString(rapdu, 0, res-2);
return true;
}
cla[1] + ins[1] + param[2] + lc[1] + data[255] + le[1] = 261 bytes
- person deR_Ed   schedule 17.12.2017