Commit 153e1051 authored by Niels's avatar Niels

cleanup after #207

parent ec098ffc
json_unit json_unit
json_benchmarks json_benchmarks
fuzz-testing
*.dSYM
working working
html html
......
...@@ -9,7 +9,7 @@ all: json_unit ...@@ -9,7 +9,7 @@ all: json_unit
# clean up # clean up
clean: clean:
rm -f json_unit json_benchmarks fuzz rm -fr json_unit json_benchmarks fuzz fuzz-testing *.dSYM
########################################################################## ##########################################################################
...@@ -28,11 +28,19 @@ json_unit: test/unit.cpp src/json.hpp test/catch.hpp ...@@ -28,11 +28,19 @@ json_unit: test/unit.cpp src/json.hpp test/catch.hpp
# fuzzing # fuzzing
########################################################################## ##########################################################################
# the overall fuzz testing target
fuzz_testing:
rm -fr fuzz-testing
mkdir -p fuzz-testing fuzz-testing/testcases fuzz-testing/out
$(MAKE) fuzz CXX=afl-clang++
mv fuzz fuzz-testing
find test/json_tests -size -5k -name *json | xargs -I{} cp "{}" fuzz-testing/testcases
@echo "Execute: afl-fuzz -i fuzz-testing/testcases -o fuzz-testing/out fuzz-testing/fuzz"
# the fuzzer binary
fuzz: test/fuzz.cpp src/json.hpp fuzz: test/fuzz.cpp src/json.hpp
$(CXX) -std=c++11 $(CXXFLAGS) $(FLAGS) $(CPPFLAGS) -I src -I test $< $(LDFLAGS) -lstdc++ -lm -o $@ $(CXX) -std=c++11 $(CXXFLAGS) $(FLAGS) $(CPPFLAGS) -I src $< $(LDFLAGS) -o $@
fuzz_testcases:
mkdir -p testcases && find test/ -size -5k -name *json | xargs -I{} cp "{}" testcases
@echo "Test cases suitable for fuzzing have been copied into the testcases directory"
########################################################################## ##########################################################################
# static analyzer # static analyzer
......
...@@ -394,6 +394,7 @@ I deeply appreciate the help of the following people. ...@@ -394,6 +394,7 @@ I deeply appreciate the help of the following people.
- [Corbin Hughes](https://github.com/nibroc) fixed some typos in the contribution guidelines. - [Corbin Hughes](https://github.com/nibroc) fixed some typos in the contribution guidelines.
- [twelsby](https://github.com/twelsby) fixed the array subscript operator, an issue that failed the MSVC build, and floating-point parsing/dumping. He further added support for unsigned integer numbers. - [twelsby](https://github.com/twelsby) fixed the array subscript operator, an issue that failed the MSVC build, and floating-point parsing/dumping. He further added support for unsigned integer numbers.
- [Volker Diels-Grabsch](https://github.com/vog) fixed a link in the README file. - [Volker Diels-Grabsch](https://github.com/vog) fixed a link in the README file.
- [msm-](https://github.com/msm-) added support for american fuzzy lop.
Thanks a lot for helping out! Thanks a lot for helping out!
......
...@@ -4,8 +4,7 @@ ...@@ -4,8 +4,7 @@
| | |__ | | | | | | version 2.0.0 | | |__ | | | | | | version 2.0.0
|_____|_____|_____|_|___| https://github.com/nlohmann/json |_____|_____|_____|_|___| https://github.com/nlohmann/json
To run under afl: Run "make fuzz_testing" and follow the instructions.
afl-fuzz -i testcases -o output ./fuzz
Licensed under the MIT License <http://opensource.org/licenses/MIT>. Licensed under the MIT License <http://opensource.org/licenses/MIT>.
*/ */
...@@ -16,27 +15,19 @@ using json = nlohmann::json; ...@@ -16,27 +15,19 @@ using json = nlohmann::json;
int main() int main()
{ {
json *jp;
#ifdef __AFL_HAVE_MANUAL_CONTROL #ifdef __AFL_HAVE_MANUAL_CONTROL
while (__AFL_LOOP(1000)) { while (__AFL_LOOP(1000))
{
#endif #endif
jp = new json(); try
json j = *jp; {
try { json j(std::cin);
j << std::cin; }
} catch (std::invalid_argument e) { catch (std::invalid_argument &e)
std::cout << "Invalid argument in parsing" << e.what() << '\n'; {
} std::cout << "Invalid argument in parsing" << e.what() << '\n';
}
if (j.find("foo") != j.end()) {
std::cout << "Found a foo";
}
std::cout << j.type() << j << std::endl;
delete jp;
#ifdef __AFL_HAVE_MANUAL_CONTROL #ifdef __AFL_HAVE_MANUAL_CONTROL
} }
#endif #endif
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment