mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-26 04:06:34 +00:00
Merge pull request #10958 from s-hadinger/zigbee_fix_B_crash
Zigbee fix crash in case of bad framed received from MCU
This commit is contained in:
commit
70066066b8
@ -138,10 +138,10 @@ void ZigbeeInputLoop(void) {
|
|||||||
// buffer received, now check integrity
|
// buffer received, now check integrity
|
||||||
if (zigbee_buffer->len() != zigbee_frame_len) {
|
if (zigbee_buffer->len() != zigbee_frame_len) {
|
||||||
// Len is not correct, log and reject frame
|
// Len is not correct, log and reject frame
|
||||||
AddLog_P(LOG_LEVEL_INFO, PSTR(D_JSON_ZIGBEEZNPRECEIVED ": received frame of wrong size %_B, len %d, expected %d"), &zigbee_buffer, zigbee_buffer->len(), zigbee_frame_len);
|
AddLog_P(LOG_LEVEL_INFO, PSTR(D_JSON_ZIGBEEZNPRECEIVED ": received frame of wrong size %_B, len %d, expected %d"), zigbee_buffer, zigbee_buffer->len(), zigbee_frame_len);
|
||||||
} else if (0x00 != fcs) {
|
} else if (0x00 != fcs) {
|
||||||
// FCS is wrong, packet is corrupt, log and reject frame
|
// FCS is wrong, packet is corrupt, log and reject frame
|
||||||
AddLog_P(LOG_LEVEL_INFO, PSTR(D_JSON_ZIGBEEZNPRECEIVED ": received bad FCS frame %_B, %d"), &zigbee_buffer, fcs);
|
AddLog_P(LOG_LEVEL_INFO, PSTR(D_JSON_ZIGBEEZNPRECEIVED ": received bad FCS frame %_B, %d"), zigbee_buffer, fcs);
|
||||||
} else {
|
} else {
|
||||||
// frame is correct
|
// frame is correct
|
||||||
//AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_JSON_ZIGBEEZNPRECEIVED ": received correct frame %s"), hex_char);
|
//AddLog_P(LOG_LEVEL_DEBUG_MORE, PSTR(D_JSON_ZIGBEEZNPRECEIVED ": received correct frame %s"), hex_char);
|
||||||
@ -243,7 +243,7 @@ void ZigbeeInputLoop(void) {
|
|||||||
// remove 2 last bytes
|
// remove 2 last bytes
|
||||||
|
|
||||||
if (crc_received != crc) {
|
if (crc_received != crc) {
|
||||||
AddLog_P(LOG_LEVEL_INFO, PSTR(D_JSON_ZIGBEE_EZSP_RECEIVED ": bad crc (received 0x%04X, computed 0x%04X) %_B"), crc_received, crc, &zigbee_buffer);
|
AddLog_P(LOG_LEVEL_INFO, PSTR(D_JSON_ZIGBEE_EZSP_RECEIVED ": bad crc (received 0x%04X, computed 0x%04X) %_B"), crc_received, crc, zigbee_buffer);
|
||||||
} else {
|
} else {
|
||||||
// copy buffer
|
// copy buffer
|
||||||
SBuffer ezsp_buffer = zigbee_buffer->subBuffer(0, frame_len - 2); // CRC
|
SBuffer ezsp_buffer = zigbee_buffer->subBuffer(0, frame_len - 2); // CRC
|
||||||
@ -265,7 +265,7 @@ void ZigbeeInputLoop(void) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// the buffer timed-out, print error and discard
|
// the buffer timed-out, print error and discard
|
||||||
AddLog_P(LOG_LEVEL_INFO, PSTR(D_JSON_ZIGBEE_EZSP_RECEIVED ": time-out, discarding %s, %_B"), &zigbee_buffer);
|
AddLog_P(LOG_LEVEL_INFO, PSTR(D_JSON_ZIGBEE_EZSP_RECEIVED ": time-out, discarding %s, %_B"), zigbee_buffer);
|
||||||
}
|
}
|
||||||
zigbee_buffer->setLen(0); // empty buffer
|
zigbee_buffer->setLen(0); // empty buffer
|
||||||
escape = false;
|
escape = false;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user