Made use of libfuzzer
This commit is contained in:
parent
8e82428740
commit
f6df4cde4e
9 changed files with 107 additions and 13 deletions
6
tests/fuzzers/README.md
Normal file
6
tests/fuzzers/README.md
Normal 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
|
||||
```
|
||||
|
|
@ -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;
|
||||
}
|
||||
9
tests/fuzzers/http_header_parse.cpp
Normal file
9
tests/fuzzers/http_header_parse.cpp
Normal 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;
|
||||
}
|
||||
6
tests/fuzzers/percent_decode.cpp
Normal file
6
tests/fuzzers/percent_decode.cpp
Normal 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;
|
||||
}
|
||||
6
tests/fuzzers/query_string_parse.cpp
Normal file
6
tests/fuzzers/query_string_parse.cpp
Normal 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;
|
||||
}
|
||||
11
tests/fuzzers/request_message_parse.cpp
Normal file
11
tests/fuzzers/request_message_parse.cpp
Normal 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;
|
||||
}
|
||||
11
tests/fuzzers/response_message_parse.cpp
Normal file
11
tests/fuzzers/response_message_parse.cpp
Normal 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;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue