diff --git a/test/src/fuzzer-parse_stl.cpp b/test/src/fuzzer-parse_stl.cpp index 6561d5aac..8f4c17d94 100644 --- a/test/src/fuzzer-parse_stl.cpp +++ b/test/src/fuzzer-parse_stl.cpp @@ -24,6 +24,10 @@ Licensed under the MIT License . #include #include #include +#include +#include +#include +#include #include #include @@ -32,6 +36,7 @@ using json = nlohmann::json; // see http://llvm.org/docs/LibFuzzer.html extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { + // putting data in several STL containers std::vector vec(data, data+size); std::deque deq(data, data+size); std::list lst(data, data+size); @@ -41,19 +46,41 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) std::multiset mst(data, data+size); std::unordered_multiset umst(data, data+size); + // parsing from STL containers json j_vector(vec); json j_deque(deq); json j_list(lst); json j_flist(flist); json j_set(st); json j_uset(ust); - json j_mset(mst); - json j_umset(umst); + json j_multiset(mst); + json j_umultiset(umst); + // json must be same for sequence containers assert(j_vector == j_deque); assert(j_vector == j_list); assert(j_vector == j_flist); + map mp; + unordered_map ump; + multimap mmp; + unordered_multimap ummp; + + // converting each consecutive entry in the vector into a key-value pair + for(int i=1; i insert_data = make_pair(vec[i-1], vec[i]); + mp.insert(insert_data); + ump.insert(insert_data); + mmp.insert(insert_data); + ummp.insert(insert_data); + } + + json j_map(mp); + json j_umap(ump); + json j_multimap(mmp); + json j_umultimap(ummp); + // try // { // // step 1: parse input