improve coverage

This commit is contained in:
Willem Melching 2020-10-27 23:48:41 +01:00
parent 60d595533e
commit b00531edc8
1 changed files with 19 additions and 11 deletions

View File

@ -7,34 +7,42 @@
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *dat, size_t sz) {
const size_t min_sz = 1 + 4 + 2;
if (sz < min_sz || sz > min_sz + 8){
if (sz < min_sz || sz > 8 * 128){
return 0;
}
uint8_t src = dat[0];
uint32_t addr = *(uint32_t*)&dat[1];
uint16_t time = *(uint16_t*)&dat[5];
size_t dat_sz = sz - min_sz;
assert(dat_sz <= 8);
uint8_t num_msg = (sz - min_sz) / 8 + 1;
auto parser = CANParser(0, "toyota_prius_2017_pt_generated",
{{37, 1}, {740, 1}},
{{37, "STEER_ANGLE", 0}, {740, "STEER_REQUEST", 0}});
auto parser2 = CANParser(0, "honda_civic_touring_2016_can_generated",
{{330, 1}},
{{330, "STEER_ANGLE", 0}});
// TODO: add all brands
MessageBuilder msg;
auto event = msg.initEvent();
auto canData = event.initCan(1);
canData[0].setAddress(addr);
canData[0].setBusTime(time);
auto canData = event.initCan(num_msg);
uint8_t data[8];
memcpy(data, &dat[6], dat_sz);
size_t len = dat_sz;
size_t j = 0;
for (size_t i = 6; i < sz; i += 8){
size_t dat_sz = std::min(size_t(8), size_t(sz) - i - 1);
canData[j].setAddress(addr);
canData[j].setBusTime(time);
canData[0].setDat(kj::arrayPtr((uint8_t*)&data[0], len));
canData[0].setSrc(src);
canData[j].setDat(kj::arrayPtr(dat + i, dat_sz));
canData[j].setSrc(src);
j++;
}
parser.UpdateCans(0, canData);
parser2.UpdateCans(0, canData);
return 0;
}