[LoRaWAN] Properly size fopts buffer
This commit is contained in:
parent
8c5ae6d266
commit
efe303ca69
1 changed files with 9 additions and 1 deletions
|
@ -1417,7 +1417,11 @@ int16_t LoRaWANNode::downlink(uint8_t* data, size_t* len, LoRaWANEvent_t* event)
|
|||
// process FOpts (if there are any)
|
||||
if(foptsLen > 0) {
|
||||
// there are some Fopts, decrypt them
|
||||
uint8_t fopts[RADIOLIB_LORAWAN_FHDR_FOPTS_LEN_MASK];
|
||||
#if !RADIOLIB_STATIC_ONLY
|
||||
uint8_t* fopts = new uint8_t[RADIOLIB_MAX(RADIOLIB_LORAWAN_FHDR_FOPTS_LEN_MASK, (int)foptsLen)];
|
||||
#else
|
||||
uint8_t fopts[RADIOLIB_STATIC_ARRAY_SIZE];
|
||||
#endif
|
||||
|
||||
// TODO it COULD be the case that the assumed FCnt rollover is incorrect, if possible figure out a way to catch this and retry with just fcnt16
|
||||
// if there are <= 15 bytes of FOpts, they are in the FHDR, otherwise they are in the payload
|
||||
|
@ -1462,6 +1466,10 @@ int16_t LoRaWANNode::downlink(uint8_t* data, size_t* len, LoRaWANEvent_t* event)
|
|||
RADIOLIB_DEBUG_PRINTLN("Processed: %d, remaining: %d", (macLen + 1), remLen);
|
||||
}
|
||||
|
||||
#if !RADIOLIB_STATIC_ONLY
|
||||
delete[] fopts;
|
||||
#endif
|
||||
|
||||
RADIOLIB_DEBUG_PRINTLN("MAC response:");
|
||||
for (int i = 0; i < this->commandsUp.numCommands; i++) {
|
||||
RADIOLIB_DEBUG_HEXDUMP(&(this->commandsUp.commands[i].cid), sizeof(LoRaWANMacCommand_t));
|
||||
|
|
Loading…
Add table
Reference in a new issue