Made use of libfuzzer

This commit is contained in:
eidheim 2020-08-08 10:52:11 +02:00
commit f6df4cde4e
9 changed files with 107 additions and 13 deletions

6
tests/fuzzers/README.md Normal file
View file

@ -0,0 +1,6 @@
Prior to running the fuzzers, build and prepare for instance as follows:
```sh
CXX=clang++ cmake -DBUILD_FUZZING=1 ..
make
export LSAN_OPTIONS=detect_leaks=0
```

View file

@ -0,0 +1,6 @@
#include "utility.hpp"
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
SimpleWeb::HttpHeader::FieldValue::SemicolonSeparatedAttributes::parse(std::string(reinterpret_cast<const char *>(data), size));
return 0;
}

View file

@ -0,0 +1,9 @@
#include "utility.hpp"
#include <sstream>
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
std::stringstream ss;
ss << std::string(reinterpret_cast<const char *>(data), size);
SimpleWeb::HttpHeader::parse(ss);
return 0;
}

View file

@ -0,0 +1,6 @@
#include "utility.hpp"
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
SimpleWeb::Percent::decode(std::string(reinterpret_cast<const char *>(data), size));
return 0;
}

View file

@ -0,0 +1,6 @@
#include "utility.hpp"
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
SimpleWeb::QueryString::parse(std::string(reinterpret_cast<const char *>(data), size));
return 0;
}

View file

@ -0,0 +1,11 @@
#include "utility.hpp"
#include <sstream>
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
std::stringstream ss;
ss << std::string(reinterpret_cast<const char *>(data), size);
std::string method, path, query_string, version;
SimpleWeb::CaseInsensitiveMultimap header;
SimpleWeb::RequestMessage::parse(ss, method, path, query_string, version, header);
return 0;
}

View file

@ -0,0 +1,11 @@
#include "utility.hpp"
#include <sstream>
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
std::stringstream ss;
ss << std::string(reinterpret_cast<const char *>(data), size);
std::string version, status_code;
SimpleWeb::CaseInsensitiveMultimap header;
SimpleWeb::ResponseMessage::parse(ss, version, status_code, header);
return 0;
}