Files
ArduinoJson/fuzzing/fuzzer.cpp
Benoit Blanchon 4592f23260 Merged MsgPackError and JsonError into DeserializationError.
Return NotSupported if the JSON input contains "\u".
2018-05-15 18:23:09 +02:00

28 lines
703 B
C++

#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) {
DynamicJsonDocument doc;
memstream json(data, size);
DeserializationError error = deserializeJson(doc, json);
if (error == DeserializationError::Ok) {
JsonVariant variant = doc.as<JsonVariant>();
variant.as<std::string>(); // <- serialize to JSON
}
return 0;
}