Files
ArduinoJson/fuzzing/fuzzer.cpp

28 lines
671 B
C++
Raw Normal View History

2017-01-08 16:17:01 +01:00
#include <ArduinoJson.h>
class memstream : public std::istream {
struct membuf : std::streambuf {
membuf(const uint8_t *p, size_t l) {
setg((char *)p, (char *)p, (char *)p + l);
}
};
membuf _buffer;
public:
memstream(const uint8_t *p, size_t l)
: std::istream(&_buffer), _buffer(p, l) {
rdbuf(&_buffer);
}
};
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
2018-03-09 16:58:01 +01:00
DynamicJsonVariant variant;
2017-01-08 16:17:01 +01:00
memstream json(data, size);
2018-03-09 16:58:01 +01:00
JsonError error = deserializeJson(variant, json);
2017-02-19 21:41:12 +01:00
JsonVariant variant = jsonBuffer.parse(json);
2018-03-09 16:58:01 +01:00
if (!error) {
2017-02-19 21:41:12 +01:00
variant.as<std::string>(); // <- serialize to JSON
}
2017-01-08 16:17:01 +01:00
return 0;
}