Samsung / rlottie

A platform independent standalone library that plays Lottie Animation.
Other
1.15k stars 223 forks source link

Suggest fuzzer for rlottie::Animation::loadFromFile() #532

Open autofuzzoss opened 1 year ago

autofuzzoss commented 1 year ago

I suggest this fuzzer for continuous vulnerability checks.

/*
 * This fuzzer is generated by UTopia with some manual modifications.
 * (UTopia Project: https://github.com/Samsung/UTopia)
 */

#include "FuzzedDataProvider.h"
#include "rlottie.h"
#include <fstream>

bool saveFile(std::string Path, std::string Content) {
  std::ofstream OFS(Path);
  if (!OFS.is_open())
    return false;

  OFS << Content;
  return true;
}

extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, uint32_t size) {
  FuzzedDataProvider provider(data, size);
  std::string InputPath = "input";
  auto input = provider.ConsumeRandomLengthString();
  saveFile(InputPath, input);
  auto out = rlottie::Animation::loadFromFile(InputPath.c_str());
  if (!out)
    return 0;
  out->totalFrame();
  size_t width, height;
  out->size(width, height);

  return 0;
}