fuzzer.cpp 703 B

123456789101112131415161718192021222324252627
  1. #include <ArduinoJson.h>
  2. class memstream : public std::istream {
  3. struct membuf : std::streambuf {
  4. membuf(const uint8_t *p, size_t l) {
  5. setg((char *)p, (char *)p, (char *)p + l);
  6. }
  7. };
  8. membuf _buffer;
  9. public:
  10. memstream(const uint8_t *p, size_t l)
  11. : std::istream(&_buffer), _buffer(p, l) {
  12. rdbuf(&_buffer);
  13. }
  14. };
  15. extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
  16. DynamicJsonDocument doc;
  17. memstream json(data, size);
  18. DeserializationError error = deserializeJson(doc, json);
  19. if (error == DeserializationError::Ok) {
  20. JsonVariant variant = doc.as<JsonVariant>();
  21. variant.as<std::string>(); // <- serialize to JSON
  22. }
  23. return 0;
  24. }