boardd: return earlier from bad unpack (#31687)

pull/31689/head
Adeeb Shihadeh 1 year ago committed by GitHub
parent 15955bfcd0
commit 1728355498
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 13
      selfdrive/boardd/panda.cc

@ -284,6 +284,13 @@ bool Panda::unpack_can_buffer(uint8_t *data, uint32_t &size, std::vector<can_fra
break; break;
} }
if (calculate_checksum(&data[pos], sizeof(can_header) + data_len) != 0) {
// TODO: also reset CAN comms?
LOGE("Panda CAN checksum failed");
size = 0;
return false;
}
can_frame &canData = out_vec.emplace_back(); can_frame &canData = out_vec.emplace_back();
canData.busTime = 0; canData.busTime = 0;
canData.address = header.addr; canData.address = header.addr;
@ -295,12 +302,6 @@ bool Panda::unpack_can_buffer(uint8_t *data, uint32_t &size, std::vector<can_fra
canData.src += CAN_RETURNED_BUS_OFFSET; canData.src += CAN_RETURNED_BUS_OFFSET;
} }
if (calculate_checksum(&data[pos], sizeof(can_header) + data_len) != 0) {
LOGE("Panda CAN checksum failed");
size = 0;
return false;
}
canData.dat.assign((char *)&data[pos + sizeof(can_header)], data_len); canData.dat.assign((char *)&data[pos + sizeof(can_header)], data_len);
pos += sizeof(can_header) + data_len; pos += sizeof(can_header) + data_len;

Loading…
Cancel
Save