Merge 3434adbb4e8c605545ba89dd817d693cc0cbd1b8 into 42de50f2b7bd4c43e3b92f5c9d6a996fd5300e4f
This commit is contained in:
commit
3b431c464a
@ -81,6 +81,7 @@
|
|||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#include <alloca.h>
|
||||||
|
|
||||||
#include <nfc/nfc.h>
|
#include <nfc/nfc.h>
|
||||||
|
|
||||||
@ -566,29 +567,24 @@ nfc_initiator_select_passive_target(nfc_device *pnd,
|
|||||||
{
|
{
|
||||||
uint8_t *abtInit = NULL;
|
uint8_t *abtInit = NULL;
|
||||||
uint8_t maxAbt = MAX(12, szInitData);
|
uint8_t maxAbt = MAX(12, szInitData);
|
||||||
uint8_t *abtTmpInit = malloc(sizeof(uint8_t) * maxAbt);
|
uint8_t *abtTmpInit = alloca(sizeof(uint8_t) * maxAbt);
|
||||||
size_t szInit = 0;
|
size_t szInit = 0;
|
||||||
int res;
|
int res;
|
||||||
if ((res = nfc_device_validate_modulation(pnd, N_INITIATOR, &nm)) != NFC_SUCCESS) {
|
if ((res = nfc_device_validate_modulation(pnd, N_INITIATOR, &nm)) != NFC_SUCCESS) {
|
||||||
free(abtTmpInit);
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
if (szInitData == 0) {
|
if (szInitData == 0) {
|
||||||
// Provide default values, if any
|
// Provide default values, if any
|
||||||
prepare_initiator_data(nm, &abtInit, &szInit);
|
prepare_initiator_data(nm, &abtInit, &szInit);
|
||||||
free(abtTmpInit);
|
|
||||||
} else if (nm.nmt == NMT_ISO14443A) {
|
} else if (nm.nmt == NMT_ISO14443A) {
|
||||||
abtInit = abtTmpInit;
|
abtInit = abtTmpInit;
|
||||||
iso14443_cascade_uid(pbtInitData, szInitData, abtInit, &szInit);
|
iso14443_cascade_uid(pbtInitData, szInitData, abtInit, &szInit);
|
||||||
} else {
|
} else {
|
||||||
abtInit = abtTmpInit;
|
abtInit = abtTmpInit;
|
||||||
memcpy(abtInit, pbtInitData, szInitData);
|
memcpy(abtInit, pbtInitData, szInitData);
|
||||||
free(abtTmpInit);
|
|
||||||
szInit = szInitData;
|
szInit = szInitData;
|
||||||
}
|
}
|
||||||
HAL(initiator_select_passive_target, pnd, nm, abtInit, szInit, pnt);
|
HAL(initiator_select_passive_target, pnd, nm, abtInit, szInit, pnt);
|
||||||
|
|
||||||
free(abtTmpInit);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @ingroup initiator
|
/** @ingroup initiator
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user