fuzzer.cpp 632 B

1234567891011121314151617181920212223242526
  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. DynamicJsonBuffer jsonBuffer;
  17. memstream json(data, size);
  18. JsonVariant variant = jsonBuffer.parse(json);
  19. if (variant.success()) {
  20. variant.as<std::string>(); // <- serialize to JSON
  21. }
  22. return 0;
  23. }