diff --git a/.gitignore b/.gitignore index 322bbf9..a3aca00 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ *.a example_simple connection_afl +findings diff --git a/Makefile b/Makefile index 9727f30..1b5369c 100644 --- a/Makefile +++ b/Makefile @@ -11,6 +11,7 @@ firecgi.a: $(objects) ar rcs $@ $^ example_simple: example_simple.o $(objects) + $(MAKE) --directory=firebuf $(FIRE_CXX) $(FIRE_CXXFLAGS) -o $@ $+ firebuf/firebuf.a $(FIRE_LDLIBS) %.o: %.cc *.h Makefile @@ -27,11 +28,12 @@ afl: afl_int: connection_afl connection_afl: connection_afl.o $(objects) - $(FIRE_CXX) $(FIRE_CXXFLAGS) -o $@ $+ $(FIRE_LDLIBS) + $(MAKE) --directory=firebuf + $(FIRE_CXX) $(FIRE_CXXFLAGS) -o $@ $+ firebuf/firebuf.a $(FIRE_LDLIBS) test: test_connection -test_connection: connection_afl_afl - @echo "Running $$(ls afl_state/testcases | wc -l) tests" - for FILE in afl_state/testcases/*; do ./connection_afl < $$FILE; done +test_connection: connection_afl + @echo "Running $$(ls testcases | wc -l) tests" + for FILE in testcases/*; do ./connection_afl < $$FILE; done @printf '\033[0;32mALL TESTS PASSED\033[0m\n' diff --git a/afl.sh b/afl.sh new file mode 100755 index 0000000..d8b6fc4 --- /dev/null +++ b/afl.sh @@ -0,0 +1,6 @@ +#!/bin/bash -ex + +cd $(dirname $0) + +make afl +afl-fuzz -i testcases -o findings -- ./connection_afl diff --git a/connection_afl.cc b/connection_afl.cc new file mode 100644 index 0000000..791ede3 --- /dev/null +++ b/connection_afl.cc @@ -0,0 +1,18 @@ +#include "connection.h" + +int main(int argc, char* argv[]) { + FLAGS_logtostderr = 1; + FLAGS_minloglevel = 3; + google::InitGoogleLogging(argv[0]); + gflags::ParseCommandLineFlags(&argc, &argv, true); + + { + firecgi::Connection conn(STDIN_FILENO, {}, [](std::unique_ptr req) { req->End(); }, {}); + static_cast(conn.Read()); + } + + gflags::ShutDownCommandLineFlags(); + google::ShutdownGoogleLogging(); + + return 0; +} diff --git a/testcases/022037fbc06e85dad6715825e87f12f9d5225c5d261d2c57dd85d319f7e7ef5b b/testcases/022037fbc06e85dad6715825e87f12f9d5225c5d261d2c57dd85d319f7e7ef5b new file mode 100644 index 0000000..bd7a9d3 Binary files /dev/null and b/testcases/022037fbc06e85dad6715825e87f12f9d5225c5d261d2c57dd85d319f7e7ef5b differ diff --git a/testcases/111e5d01a64d5ecb6242b18b435776eb0732660dd0a07fdef48764beacb67a99 b/testcases/111e5d01a64d5ecb6242b18b435776eb0732660dd0a07fdef48764beacb67a99 new file mode 100644 index 0000000..574b774 Binary files /dev/null and b/testcases/111e5d01a64d5ecb6242b18b435776eb0732660dd0a07fdef48764beacb67a99 differ diff --git a/testcases/121ca696c06f2954a5ea890175b1b0d77d13d2b3cc68a79121d9f2644b78d099 b/testcases/121ca696c06f2954a5ea890175b1b0d77d13d2b3cc68a79121d9f2644b78d099 new file mode 100644 index 0000000..406e081 Binary files /dev/null and b/testcases/121ca696c06f2954a5ea890175b1b0d77d13d2b3cc68a79121d9f2644b78d099 differ diff --git a/testcases/185e3888af879ceaa1b5b14389df7b72ace63e83f25640bbee8425e15dd0cde3 b/testcases/185e3888af879ceaa1b5b14389df7b72ace63e83f25640bbee8425e15dd0cde3 new file mode 100644 index 0000000..02cd8fa Binary files /dev/null and b/testcases/185e3888af879ceaa1b5b14389df7b72ace63e83f25640bbee8425e15dd0cde3 differ diff --git a/testcases/1928aa764353c6adb9ec81c20f35261a9e43fbdf4238b57064f0b47c3f28110e b/testcases/1928aa764353c6adb9ec81c20f35261a9e43fbdf4238b57064f0b47c3f28110e new file mode 100644 index 0000000..e2c2793 Binary files /dev/null and b/testcases/1928aa764353c6adb9ec81c20f35261a9e43fbdf4238b57064f0b47c3f28110e differ diff --git a/testcases/1ad846ec633f6d5463263b0059ad04875ee66b2abebf489a7feda6cd3d6fe051 b/testcases/1ad846ec633f6d5463263b0059ad04875ee66b2abebf489a7feda6cd3d6fe051 new file mode 100644 index 0000000..91e8aae Binary files /dev/null and b/testcases/1ad846ec633f6d5463263b0059ad04875ee66b2abebf489a7feda6cd3d6fe051 differ diff --git a/testcases/1d49ab3935007821bbd09a9fe51cc844e174d86e37d87903530754e1f14ecb45 b/testcases/1d49ab3935007821bbd09a9fe51cc844e174d86e37d87903530754e1f14ecb45 new file mode 100644 index 0000000..ee84c9b Binary files /dev/null and b/testcases/1d49ab3935007821bbd09a9fe51cc844e174d86e37d87903530754e1f14ecb45 differ diff --git a/testcases/2371f72e7af92774396c6b171cab81359608b47e06b07d52ea353eada90a3b2e b/testcases/2371f72e7af92774396c6b171cab81359608b47e06b07d52ea353eada90a3b2e new file mode 100644 index 0000000..8842abb Binary files /dev/null and b/testcases/2371f72e7af92774396c6b171cab81359608b47e06b07d52ea353eada90a3b2e differ diff --git a/testcases/28e517f07b8c9cfbd8516fec9c7e7b40c6e8812d08926d18c79485f59fab348a b/testcases/28e517f07b8c9cfbd8516fec9c7e7b40c6e8812d08926d18c79485f59fab348a new file mode 100644 index 0000000..1769f8b Binary files /dev/null and b/testcases/28e517f07b8c9cfbd8516fec9c7e7b40c6e8812d08926d18c79485f59fab348a differ diff --git a/testcases/30ed1395d21b4800441056effeeba6be045e5dc5b9f548ba206341f3dfb331ce b/testcases/30ed1395d21b4800441056effeeba6be045e5dc5b9f548ba206341f3dfb331ce new file mode 100644 index 0000000..20210f7 Binary files /dev/null and b/testcases/30ed1395d21b4800441056effeeba6be045e5dc5b9f548ba206341f3dfb331ce differ diff --git a/testcases/4e4c2fc640cd44474724dc09d574063838b15bfa3b4c1cf2cbd57b762a5385bb b/testcases/4e4c2fc640cd44474724dc09d574063838b15bfa3b4c1cf2cbd57b762a5385bb new file mode 100644 index 0000000..6819097 Binary files /dev/null and b/testcases/4e4c2fc640cd44474724dc09d574063838b15bfa3b4c1cf2cbd57b762a5385bb differ diff --git a/testcases/5a475f3e29d831c020160ed9e9fcf06c5715c33abbeddb9f1125b9b519b78b70 b/testcases/5a475f3e29d831c020160ed9e9fcf06c5715c33abbeddb9f1125b9b519b78b70 new file mode 100644 index 0000000..c0fffd2 Binary files /dev/null and b/testcases/5a475f3e29d831c020160ed9e9fcf06c5715c33abbeddb9f1125b9b519b78b70 differ diff --git a/testcases/5be2228ef8f078cd0513dbb44f64fb2db8405c1404b9d5d57c28cdc9f837a095 b/testcases/5be2228ef8f078cd0513dbb44f64fb2db8405c1404b9d5d57c28cdc9f837a095 new file mode 100644 index 0000000..e934f88 Binary files /dev/null and b/testcases/5be2228ef8f078cd0513dbb44f64fb2db8405c1404b9d5d57c28cdc9f837a095 differ diff --git a/testcases/5d1ae4ffcce1e8adf38af8ab0f13cd9eaee2f192f7abd23a669b8dcecf67fed8 b/testcases/5d1ae4ffcce1e8adf38af8ab0f13cd9eaee2f192f7abd23a669b8dcecf67fed8 new file mode 100644 index 0000000..8353483 Binary files /dev/null and b/testcases/5d1ae4ffcce1e8adf38af8ab0f13cd9eaee2f192f7abd23a669b8dcecf67fed8 differ diff --git a/testcases/69c9b3ea606d4f2cab4f947c56aaf687dcaa03e787480cf08d3e294c7adb789e b/testcases/69c9b3ea606d4f2cab4f947c56aaf687dcaa03e787480cf08d3e294c7adb789e new file mode 100644 index 0000000..78f2c49 Binary files /dev/null and b/testcases/69c9b3ea606d4f2cab4f947c56aaf687dcaa03e787480cf08d3e294c7adb789e differ diff --git a/testcases/6d0fd877b23fbda56ba5c9642064c60d7b836cf51b25e3e63ebc15c4040df0fd b/testcases/6d0fd877b23fbda56ba5c9642064c60d7b836cf51b25e3e63ebc15c4040df0fd new file mode 100644 index 0000000..bb252d2 Binary files /dev/null and b/testcases/6d0fd877b23fbda56ba5c9642064c60d7b836cf51b25e3e63ebc15c4040df0fd differ diff --git a/testcases/70e75d905651c89bdb007261c044a67531aa45cf98e3a4d9cfa70613e95aaa88 b/testcases/70e75d905651c89bdb007261c044a67531aa45cf98e3a4d9cfa70613e95aaa88 new file mode 100644 index 0000000..17f5084 Binary files /dev/null and b/testcases/70e75d905651c89bdb007261c044a67531aa45cf98e3a4d9cfa70613e95aaa88 differ diff --git a/testcases/71ccd45d0579bcca593a5d38986d2b44195b7a34990a5f3af26a51d02c0dd2e3 b/testcases/71ccd45d0579bcca593a5d38986d2b44195b7a34990a5f3af26a51d02c0dd2e3 new file mode 100644 index 0000000..be69bc4 Binary files /dev/null and b/testcases/71ccd45d0579bcca593a5d38986d2b44195b7a34990a5f3af26a51d02c0dd2e3 differ diff --git a/testcases/737fa988d1dce8d841ef209a496ca36f3678ce5a10eea1c22841ba47e0e67d93 b/testcases/737fa988d1dce8d841ef209a496ca36f3678ce5a10eea1c22841ba47e0e67d93 new file mode 100644 index 0000000..65c353a Binary files /dev/null and b/testcases/737fa988d1dce8d841ef209a496ca36f3678ce5a10eea1c22841ba47e0e67d93 differ diff --git a/testcases/75e5befe1b1bbd6cc4d56c514d7ed7018c6771337de049a6e18afb4e964206cc b/testcases/75e5befe1b1bbd6cc4d56c514d7ed7018c6771337de049a6e18afb4e964206cc new file mode 100644 index 0000000..4b92cfb Binary files /dev/null and b/testcases/75e5befe1b1bbd6cc4d56c514d7ed7018c6771337de049a6e18afb4e964206cc differ diff --git a/testcases/768986e1087fe968f65838001cf40ae0649be9dfd3b67eaaa88251fd6a3e8375 b/testcases/768986e1087fe968f65838001cf40ae0649be9dfd3b67eaaa88251fd6a3e8375 new file mode 100644 index 0000000..923e933 Binary files /dev/null and b/testcases/768986e1087fe968f65838001cf40ae0649be9dfd3b67eaaa88251fd6a3e8375 differ diff --git a/testcases/76a3c32566a2963938d9e8c09747cffa65b988e67812abac5a9da9684000a37a b/testcases/76a3c32566a2963938d9e8c09747cffa65b988e67812abac5a9da9684000a37a new file mode 100644 index 0000000..3cd488d Binary files /dev/null and b/testcases/76a3c32566a2963938d9e8c09747cffa65b988e67812abac5a9da9684000a37a differ diff --git a/testcases/7e9901365d69d3c41ad48093209d4af8c282a3178901846758fdaf032541ae35 b/testcases/7e9901365d69d3c41ad48093209d4af8c282a3178901846758fdaf032541ae35 new file mode 100644 index 0000000..8917595 Binary files /dev/null and b/testcases/7e9901365d69d3c41ad48093209d4af8c282a3178901846758fdaf032541ae35 differ diff --git a/testcases/80ab510b2c1fb6ce80cc76a9f2669918900a42373b17d0451013ab015aebc11a b/testcases/80ab510b2c1fb6ce80cc76a9f2669918900a42373b17d0451013ab015aebc11a new file mode 100644 index 0000000..5e92dba Binary files /dev/null and b/testcases/80ab510b2c1fb6ce80cc76a9f2669918900a42373b17d0451013ab015aebc11a differ diff --git a/testcases/829582023a0aa4c3d474ca11d8cfc290c9a079b52742662bf9ecbc0d2b4ba839 b/testcases/829582023a0aa4c3d474ca11d8cfc290c9a079b52742662bf9ecbc0d2b4ba839 new file mode 100644 index 0000000..3ce56f9 Binary files /dev/null and b/testcases/829582023a0aa4c3d474ca11d8cfc290c9a079b52742662bf9ecbc0d2b4ba839 differ diff --git a/testcases/83c64007b09298194d5a7ceea75fdd9e570e9a147476478a0baec24a51fc061c b/testcases/83c64007b09298194d5a7ceea75fdd9e570e9a147476478a0baec24a51fc061c new file mode 100644 index 0000000..6573cc7 Binary files /dev/null and b/testcases/83c64007b09298194d5a7ceea75fdd9e570e9a147476478a0baec24a51fc061c differ diff --git a/testcases/8a7b5bfa45d3288150d3b42244d03a274bc169ca16dc1b230ccf045051fcb09c b/testcases/8a7b5bfa45d3288150d3b42244d03a274bc169ca16dc1b230ccf045051fcb09c new file mode 100644 index 0000000..1964562 Binary files /dev/null and b/testcases/8a7b5bfa45d3288150d3b42244d03a274bc169ca16dc1b230ccf045051fcb09c differ diff --git a/testcases/949ab2c9cced1ab2e59dac76dae7f3e5eeb92dcb7bda201b590b97c29f70d04d b/testcases/949ab2c9cced1ab2e59dac76dae7f3e5eeb92dcb7bda201b590b97c29f70d04d new file mode 100644 index 0000000..8f66d2c Binary files /dev/null and b/testcases/949ab2c9cced1ab2e59dac76dae7f3e5eeb92dcb7bda201b590b97c29f70d04d differ diff --git a/testcases/af1d054aa382592fd3606fe219463d3bc1bd43843d97e87bf44cf7c0698aba4d b/testcases/af1d054aa382592fd3606fe219463d3bc1bd43843d97e87bf44cf7c0698aba4d new file mode 100644 index 0000000..0864eea Binary files /dev/null and b/testcases/af1d054aa382592fd3606fe219463d3bc1bd43843d97e87bf44cf7c0698aba4d differ diff --git a/testcases/b18d3ff06e0803083dde3803e295f669ea2061260df472f66e1cf8a2f93f9963 b/testcases/b18d3ff06e0803083dde3803e295f669ea2061260df472f66e1cf8a2f93f9963 new file mode 100644 index 0000000..d8e6355 Binary files /dev/null and b/testcases/b18d3ff06e0803083dde3803e295f669ea2061260df472f66e1cf8a2f93f9963 differ diff --git a/testcases/b280e6a891120e9dd57a749dca0e49d85dd4c5ce27ac8b6d4467f2cacb6842cc b/testcases/b280e6a891120e9dd57a749dca0e49d85dd4c5ce27ac8b6d4467f2cacb6842cc new file mode 100644 index 0000000..3e9213e Binary files /dev/null and b/testcases/b280e6a891120e9dd57a749dca0e49d85dd4c5ce27ac8b6d4467f2cacb6842cc differ diff --git a/testcases/b43a8f29662ce030264860be29692b866a73ab61ace36b2fba1deb63f5e834e6 b/testcases/b43a8f29662ce030264860be29692b866a73ab61ace36b2fba1deb63f5e834e6 new file mode 100644 index 0000000..f4e6095 Binary files /dev/null and b/testcases/b43a8f29662ce030264860be29692b866a73ab61ace36b2fba1deb63f5e834e6 differ diff --git a/testcases/bbab38731506afc10241edbdfa2d621e824e788e6801fccb6c94c9221e7555fc b/testcases/bbab38731506afc10241edbdfa2d621e824e788e6801fccb6c94c9221e7555fc new file mode 100644 index 0000000..9033570 Binary files /dev/null and b/testcases/bbab38731506afc10241edbdfa2d621e824e788e6801fccb6c94c9221e7555fc differ diff --git a/testcases/bbc1d2e91dad4aa0b30028e2dadf957e12cc5772e19a39e8cb8cc7fd51715fab b/testcases/bbc1d2e91dad4aa0b30028e2dadf957e12cc5772e19a39e8cb8cc7fd51715fab new file mode 100644 index 0000000..84ea21b Binary files /dev/null and b/testcases/bbc1d2e91dad4aa0b30028e2dadf957e12cc5772e19a39e8cb8cc7fd51715fab differ diff --git a/testcases/cb068972ae29231ee8994f78f1f5267b00201c60e4ea05dca190a2bf208ec84b b/testcases/cb068972ae29231ee8994f78f1f5267b00201c60e4ea05dca190a2bf208ec84b new file mode 100644 index 0000000..e0bdbd3 Binary files /dev/null and b/testcases/cb068972ae29231ee8994f78f1f5267b00201c60e4ea05dca190a2bf208ec84b differ diff --git a/testcases/cee40462df109c1240452a8b21152a20a64b3d4823bc5cba214a9ab0e9bd7c91 b/testcases/cee40462df109c1240452a8b21152a20a64b3d4823bc5cba214a9ab0e9bd7c91 new file mode 100644 index 0000000..59e5208 Binary files /dev/null and b/testcases/cee40462df109c1240452a8b21152a20a64b3d4823bc5cba214a9ab0e9bd7c91 differ diff --git a/testcases/d053a13665e280669feba52b058540fef909f305b84188d8b8ff7fa2a4a2f046 b/testcases/d053a13665e280669feba52b058540fef909f305b84188d8b8ff7fa2a4a2f046 new file mode 100644 index 0000000..392cfdd Binary files /dev/null and b/testcases/d053a13665e280669feba52b058540fef909f305b84188d8b8ff7fa2a4a2f046 differ diff --git a/testcases/d9b54a10c72c8d8403e7b7e5ec76b5595d135f68cfc2d9f1e84931374cc2683e b/testcases/d9b54a10c72c8d8403e7b7e5ec76b5595d135f68cfc2d9f1e84931374cc2683e new file mode 100644 index 0000000..305e737 Binary files /dev/null and b/testcases/d9b54a10c72c8d8403e7b7e5ec76b5595d135f68cfc2d9f1e84931374cc2683e differ diff --git a/testcases/dbd16092ab38e71d15db1a746254aeb71939d68e80d34e6453e9b79117001bb8 b/testcases/dbd16092ab38e71d15db1a746254aeb71939d68e80d34e6453e9b79117001bb8 new file mode 100644 index 0000000..c3ced6f Binary files /dev/null and b/testcases/dbd16092ab38e71d15db1a746254aeb71939d68e80d34e6453e9b79117001bb8 differ diff --git a/testcases/e6e02a365f3d7d6cee919d0e3477dbe2da02981ebf1df321b185b4c81594fc30 b/testcases/e6e02a365f3d7d6cee919d0e3477dbe2da02981ebf1df321b185b4c81594fc30 new file mode 100644 index 0000000..0a90e28 Binary files /dev/null and b/testcases/e6e02a365f3d7d6cee919d0e3477dbe2da02981ebf1df321b185b4c81594fc30 differ diff --git a/testcases/f0bd75e23d5310b0a749bcd38995054df14892f592a548590779323628d97ee7 b/testcases/f0bd75e23d5310b0a749bcd38995054df14892f592a548590779323628d97ee7 new file mode 100644 index 0000000..a9a2791 Binary files /dev/null and b/testcases/f0bd75e23d5310b0a749bcd38995054df14892f592a548590779323628d97ee7 differ diff --git a/testcases/f4ab1cb7fb2de87e60d33e0c30cd6d00e46894b530886f855a9ff77b3b4e9f28 b/testcases/f4ab1cb7fb2de87e60d33e0c30cd6d00e46894b530886f855a9ff77b3b4e9f28 new file mode 100644 index 0000000..6536433 Binary files /dev/null and b/testcases/f4ab1cb7fb2de87e60d33e0c30cd6d00e46894b530886f855a9ff77b3b4e9f28 differ diff --git a/testcases/fb89ee72a9399c6bec2ff246d350462a8eb603cdb8ff607afc632ac722fe860c b/testcases/fb89ee72a9399c6bec2ff246d350462a8eb603cdb8ff607afc632ac722fe860c new file mode 100644 index 0000000..dad71ba Binary files /dev/null and b/testcases/fb89ee72a9399c6bec2ff246d350462a8eb603cdb8ff607afc632ac722fe860c differ