Add an initial libfuzzer based fuzzer for the admin console

Run the actual fuzzer like this:

./admin_fuzzer -max_len=16384 fuzzer/admin-data/

Change-Id: I5891df8033ff1837afce86775ee62447587f2f20
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/91504
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
This commit is contained in:
Miklos Vajna
2020-04-01 17:22:23 +02:00
parent 01509b4087
commit a4e0a00bfe
7 changed files with 54 additions and 7 deletions

22
fuzzer/Admin.cpp Normal file
View File

@ -0,0 +1,22 @@
#include <iostream>
#include "Admin.hpp"
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
{
Admin& admin = Admin::instance();
auto handler = std::make_shared<AdminSocketHandler>(&admin);
std::string input(reinterpret_cast<const char*>(data), size);
std::stringstream ss(input);
std::string line;
while (std::getline(ss, line, '\n'))
{
std::vector<char> lineVector(line.data(), line.data() + line.size());
handler->handleMessage(lineVector);
}
return 0;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */