From 0439e9164d56fd8a24bc38869f1aecc812262a45 Mon Sep 17 00:00:00 2001 From: corydu Date: Mon, 6 Nov 2023 19:20:59 +0000 Subject: [PATCH] Move libfuzzer to example 7 --- docker/coverage_scripts/angr_snapchange.py | 2 +- .../libfuzzer => 07_libfuzzer}/.dockerignore | 0 .../libfuzzer => 07_libfuzzer}/.gitignore | 0 .../libfuzzer => 07_libfuzzer}/Cargo.lock | 432 ++++++++---------- .../libfuzzer => 07_libfuzzer}/Cargo.toml | 3 +- .../libfuzzer => 07_libfuzzer}/Dockerfile | 3 +- .../libfuzzer => 07_libfuzzer}/build.rs | 0 examples/07_libfuzzer/config.toml | 18 + .../harness/.dockerignore | 0 .../harness/.gitignore | 0 .../harness/Makefile | 0 .../harness/example.c | 0 examples/07_libfuzzer/make_example.sh | 26 ++ .../libfuzzer => 07_libfuzzer}/reset.sh | 0 .../libfuzzer => 07_libfuzzer}/run.sh | 0 .../libfuzzer => 07_libfuzzer}/src/fuzzer.rs | 13 +- .../libfuzzer => 07_libfuzzer}/src/main.rs | 4 +- examples/07_libfuzzer/test.sh | 31 ++ examples/standalone/libfuzzer/make_example.sh | 19 - examples/test.sh | 15 +- 20 files changed, 299 insertions(+), 267 deletions(-) rename examples/{standalone/libfuzzer => 07_libfuzzer}/.dockerignore (100%) rename examples/{standalone/libfuzzer => 07_libfuzzer}/.gitignore (100%) rename examples/{standalone/libfuzzer => 07_libfuzzer}/Cargo.lock (77%) rename examples/{standalone/libfuzzer => 07_libfuzzer}/Cargo.toml (81%) rename examples/{standalone/libfuzzer => 07_libfuzzer}/Dockerfile (91%) rename examples/{standalone/libfuzzer => 07_libfuzzer}/build.rs (100%) create mode 100644 examples/07_libfuzzer/config.toml rename examples/{standalone/libfuzzer => 07_libfuzzer}/harness/.dockerignore (100%) rename examples/{standalone/libfuzzer => 07_libfuzzer}/harness/.gitignore (100%) rename examples/{standalone/libfuzzer => 07_libfuzzer}/harness/Makefile (100%) rename examples/{standalone/libfuzzer => 07_libfuzzer}/harness/example.c (100%) create mode 100755 examples/07_libfuzzer/make_example.sh rename examples/{standalone/libfuzzer => 07_libfuzzer}/reset.sh (100%) rename examples/{standalone/libfuzzer => 07_libfuzzer}/run.sh (100%) rename examples/{standalone/libfuzzer => 07_libfuzzer}/src/fuzzer.rs (65%) rename examples/{standalone/libfuzzer => 07_libfuzzer}/src/main.rs (56%) create mode 100755 examples/07_libfuzzer/test.sh delete mode 100755 examples/standalone/libfuzzer/make_example.sh diff --git a/docker/coverage_scripts/angr_snapchange.py b/docker/coverage_scripts/angr_snapchange.py index 39c500e..e1bd4de 100644 --- a/docker/coverage_scripts/angr_snapchange.py +++ b/docker/coverage_scripts/angr_snapchange.py @@ -671,7 +671,7 @@ def add_memory(op, memlen=STR_LEN_THRESHOLD, null_term=False): auto_dict_files[fname] = data fname = "int_str_" + str(entry).replace("-", "neg") - auto_dict_files[fname] = str(entry) + auto_dict_files[fname] = str(entry).encode() elif isinstance(entry, float): # emit using struct.pack in various formats diff --git a/examples/standalone/libfuzzer/.dockerignore b/examples/07_libfuzzer/.dockerignore similarity index 100% rename from examples/standalone/libfuzzer/.dockerignore rename to examples/07_libfuzzer/.dockerignore diff --git a/examples/standalone/libfuzzer/.gitignore b/examples/07_libfuzzer/.gitignore similarity index 100% rename from examples/standalone/libfuzzer/.gitignore rename to examples/07_libfuzzer/.gitignore diff --git a/examples/standalone/libfuzzer/Cargo.lock b/examples/07_libfuzzer/Cargo.lock similarity index 77% rename from examples/standalone/libfuzzer/Cargo.lock rename to examples/07_libfuzzer/Cargo.lock index 7b09387..2bba572 100644 --- a/examples/standalone/libfuzzer/Cargo.lock +++ b/examples/07_libfuzzer/Cargo.lock @@ -13,7 +13,7 @@ dependencies = [ "gimli", "object", "rustc-demangle", - "smallvec 1.11.0", + "smallvec 1.11.1", ] [[package]] @@ -24,21 +24,22 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" dependencies = [ "cfg-if", "getrandom", "once_cell", "version_check", + "zerocopy", ] [[package]] name = "aho-corasick" -version = "1.0.2" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] @@ -60,30 +61,29 @@ dependencies = [ [[package]] name = "anstream" -version = "0.3.2" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is-terminal", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anstyle-parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" dependencies = [ "utf8parse", ] @@ -99,9 +99,9 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "1.0.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" dependencies = [ "anstyle", "windows-sys", @@ -109,9 +109,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.72" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "array-init" @@ -153,21 +153,21 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.3.3" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cassowary" @@ -177,9 +177,12 @@ checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" [[package]] name = "cc" -version = "1.0.79" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] [[package]] name = "cfg-if" @@ -189,35 +192,33 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", - "time", "wasm-bindgen", - "winapi 0.3.9", + "windows-targets", ] [[package]] name = "clap" -version = "4.3.17" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0827b011f6f8ab38590295339817b0d26f344aa4932c3ced71b45b0c54b4a9" +checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b" dependencies = [ "clap_builder", "clap_derive", - "once_cell", ] [[package]] name = "clap-verbosity-flag" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1eef05769009513df2eb1c3b4613e7fad873a14c600ff025b08f250f59fee7de" +checksum = "e5fdbb015d790cfb378aca82caf9cc52a38be96a7eecdb92f31b4366a8afc019" dependencies = [ "clap", "log", @@ -225,9 +226,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.3.17" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9441b403be87be858db6a23edb493e7f694761acdc3343d5a0fcaafd304cbc9e" +checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663" dependencies = [ "anstream", "anstyle", @@ -237,21 +238,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.3.12" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.26", + "syn 2.0.39", ] [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "colorchoice" @@ -320,7 +321,7 @@ dependencies = [ "bitflags 1.3.2", "crossterm_winapi", "libc", - "mio 0.8.8", + "mio 0.8.9", "parking_lot 0.12.1", "signal-hook", "signal-hook-mio", @@ -338,11 +339,11 @@ dependencies = [ [[package]] name = "ctrlc" -version = "3.4.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a011bbe2c35ce9c1f143b7af6f94f29a167beb4cd1d29e6740ce836f723120e" +checksum = "82e95fbd621905b854affdc67943b043a0fbb6ed7385fd5a25650d19a8a6cfdf" dependencies = [ - "nix 0.26.2", + "nix 0.27.1", "windows-sys", ] @@ -365,27 +366,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" -[[package]] -name = "errno" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - [[package]] name = "example_fuzzer" version = "0.1.0" @@ -397,6 +377,12 @@ dependencies = [ "snapchange", ] +[[package]] +name = "extended" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af9673d8203fcb076b19dfd17e38b3d4ae9f44959416ea532ce72415a6020365" + [[package]] name = "fallible-iterator" version = "0.2.0" @@ -405,9 +391,9 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" [[package]] name = "flate2" -version = "1.0.26" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", "miniz_oxide", @@ -430,7 +416,7 @@ checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", ] [[package]] @@ -445,9 +431,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" [[package]] name = "heck" @@ -466,9 +452,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "humantime" @@ -478,16 +464,16 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "iana-time-zone" -version = "0.1.57" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows", + "windows-core", ] [[package]] @@ -510,9 +496,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", "hashbrown", @@ -527,17 +513,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "is-terminal" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" -dependencies = [ - "hermit-abi 0.3.2", - "rustix", - "windows-sys", -] - [[package]] name = "itoa" version = "1.0.9" @@ -546,9 +521,9 @@ checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" dependencies = [ "wasm-bindgen", ] @@ -591,21 +566,15 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.147" +version = "0.2.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" - -[[package]] -name = "linux-raw-sys" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", @@ -613,9 +582,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "maybe-uninit" @@ -625,9 +594,9 @@ checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "memmap" @@ -672,13 +641,13 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" dependencies = [ "libc", "log", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "windows-sys", ] @@ -706,14 +675,13 @@ dependencies = [ [[package]] name = "nix" -version = "0.26.2" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", "cfg-if", "libc", - "static_assertions", ] [[package]] @@ -733,9 +701,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", ] @@ -746,7 +714,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.2", + "hermit-abi 0.3.3", "libc", ] @@ -805,7 +773,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.8", + "parking_lot_core 0.9.9", ] [[package]] @@ -818,20 +786,20 @@ dependencies = [ "instant", "libc", "redox_syscall 0.2.16", - "smallvec 1.11.0", + "smallvec 1.11.1", "winapi 0.3.9", ] [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.3.5", - "smallvec 1.11.0", + "redox_syscall 0.4.1", + "smallvec 1.11.1", "windows-targets", ] @@ -853,18 +821,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.31" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fe8a65d69dd0808184ebb5f836ab526bb259db23c657efa38711b1072ee47f0" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -910,18 +878,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "regex" -version = "1.9.1" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", @@ -931,9 +899,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.3" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39354c10dd07468c2e73926b23bb9c2caca74c5501e38a35da70406f1d923310" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", @@ -942,9 +910,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.4" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "rustc-demangle" @@ -953,17 +921,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] -name = "rustix" -version = "0.38.4" +name = "rustc-hash" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5" -dependencies = [ - "bitflags 2.3.3", - "errno", - "libc", - "linux-raw-sys", - "windows-sys", -] +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustversion" @@ -985,9 +946,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.173" +version = "1.0.190" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91f70896d6720bc714a4a57d22fc91f1db634680e65c8efe13323f1fa38d53f" +checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7" dependencies = [ "serde_derive", ] @@ -1005,20 +966,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.173" +version = "1.0.190" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6250dde8342e0232232be9ca3db7aa40aceb5a3e5dd9bddbc00d99a007cde49" +checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.26", + "syn 2.0.39", ] [[package]] name = "serde_json" -version = "1.0.103" +version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d03b412469450d4404fe8499a268edd7f8b79fecb074b0d812ad64ca21f4031b" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ "itoa", "ryu", @@ -1027,9 +988,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80" dependencies = [ "serde", ] @@ -1052,7 +1013,7 @@ checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" dependencies = [ "libc", "mio 0.7.14", - "mio 0.8.8", + "mio 0.8.9", "signal-hook", ] @@ -1082,9 +1043,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" [[package]] name = "snapchange" @@ -1100,6 +1061,7 @@ dependencies = [ "crossterm 0.22.1", "ctrlc", "env_logger", + "extended", "iced-x86", "kvm-bindings", "kvm-ioctls", @@ -1111,6 +1073,7 @@ dependencies = [ "num_enum", "rand", "rand_core", + "rustc-hash", "serde", "serde-hex", "serde_json", @@ -1128,12 +1091,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - [[package]] name = "strsim" version = "0.10.0" @@ -1153,9 +1110,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.26" +version = "2.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45c3457aacde3c65315de5031ec191ce46604304d2446e803d71ade03308d970" +checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" dependencies = [ "proc-macro2", "quote", @@ -1164,49 +1121,38 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" dependencies = [ "winapi-util", ] [[package]] name = "thiserror" -version = "1.0.43" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a35fc5b8971143ca348fa6df4f024d4d55264f3468c71ad1c2f365b0a4d58c42" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.43" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "463fe12d7993d3b327787537ce8dd4dfa058de32fc2b195ef3cde03dc4771e8f" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.26", -] - -[[package]] -name = "time" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi 0.3.9", + "syn 2.0.39", ] [[package]] name = "toml" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" +checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" dependencies = [ "serde", "serde_spanned", @@ -1216,18 +1162,18 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.19.14" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ "indexmap", "serde", @@ -1266,9 +1212,9 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-segmentation" @@ -1278,9 +1224,9 @@ checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "utf8parse" @@ -1296,9 +1242,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "vmm-sys-util" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd64fe09d8e880e600c324e7d664760a17f56e9672b7495a86381b49e4f72f46" +checksum = "48b7b084231214f7427041e4220d77dfe726897a6d41fddee450696e66ff2a29" dependencies = [ "bitflags 1.3.2", "libc", @@ -1310,12 +1256,6 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "442887c63f2c839b346c192d047a7c87e73d0689c9157b00b53dcc27dd5ea793" -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -1324,9 +1264,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -1334,24 +1274,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.26", + "syn 2.0.39", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1359,22 +1299,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" dependencies = [ "proc-macro2", "quote", - "syn 2.0.26", + "syn 2.0.39", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" [[package]] name = "winapi" @@ -1406,9 +1346,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi 0.3.9", ] @@ -1420,10 +1360,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows" -version = "0.48.0" +name = "windows-core" +version = "0.51.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" dependencies = [ "windows-targets", ] @@ -1439,9 +1379,9 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -1454,63 +1394,83 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" -version = "0.5.0" +version = "0.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fac9742fd1ad1bd9643b991319f72dd031016d44b77039a26977eb667141e7" +checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" dependencies = [ "memchr", ] [[package]] name = "x86_64" -version = "0.14.10" +version = "0.14.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "100555a863c0092238c2e0e814c1096c1e5cf066a309c696a87e907b5f8c5d69" +checksum = "3b835097a84e4457323331ec5d6eb23d096066cbfb215d54096dcb4b2e85f500" dependencies = [ "bit_field", - "bitflags 1.3.2", + "bitflags 2.4.1", "rustversion", "volatile", ] + +[[package]] +name = "zerocopy" +version = "0.7.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cd369a67c0edfef15010f980c3cbe45d7f651deac2cd67ce097cd801de16557" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2f140bda219a26ccc0cdb03dba58af72590c53b22642577d88a927bc5c87d6b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] diff --git a/examples/standalone/libfuzzer/Cargo.toml b/examples/07_libfuzzer/Cargo.toml similarity index 81% rename from examples/standalone/libfuzzer/Cargo.toml rename to examples/07_libfuzzer/Cargo.toml index 4122c84..245960f 100644 --- a/examples/standalone/libfuzzer/Cargo.toml +++ b/examples/07_libfuzzer/Cargo.toml @@ -8,8 +8,7 @@ exclude = ["snapshot", "docker"] [dependencies] anyhow = "1" -# snapchange = {path = "../../../", features = ["libnuma"]} -snapchange = {path = "../../../"} +snapchange = { version = "0.1.0", path = "../.." } rand = "0.8" # snmalloc-rs = "0.3" log = "0.4" diff --git a/examples/standalone/libfuzzer/Dockerfile b/examples/07_libfuzzer/Dockerfile similarity index 91% rename from examples/standalone/libfuzzer/Dockerfile rename to examples/07_libfuzzer/Dockerfile index 6372dc0..89a68fe 100644 --- a/examples/standalone/libfuzzer/Dockerfile +++ b/examples/07_libfuzzer/Dockerfile @@ -22,5 +22,6 @@ COPY --from=base / "$SNAPSHOT_INPUT" ENV SNAPSHOT_ENTRYPOINT=/root/example ENV SNAPSHOT_ENTRYPOINT_CWD="/tmp/" -ENV SNAPSHOT_IMGTYPE=disk +ENV SNAPSHOT_IMGTYPE=initramfs +ENV GENERATE_COVERAGE_BREAKPOINTS=0 ENV LIBFUZZER=1 diff --git a/examples/standalone/libfuzzer/build.rs b/examples/07_libfuzzer/build.rs similarity index 100% rename from examples/standalone/libfuzzer/build.rs rename to examples/07_libfuzzer/build.rs diff --git a/examples/07_libfuzzer/config.toml b/examples/07_libfuzzer/config.toml new file mode 100644 index 0000000..0bff481 --- /dev/null +++ b/examples/07_libfuzzer/config.toml @@ -0,0 +1,18 @@ +guest_memory_size = 5368709120 + +[stats] +maximum_new_corpus_size = 5000 +minimum_total_corpus_percentage_sync = 40 +maximum_total_corpus_percentage_sync = 80 + +[stats.merge_corpus_timer] +secs = 2 +nanos = 0 + +[stats.stats_sync_timer] +secs = 0 +nanos = 500000000 + +[stats.coverage_sync_timer] +secs = 2 +nanos = 0 diff --git a/examples/standalone/libfuzzer/harness/.dockerignore b/examples/07_libfuzzer/harness/.dockerignore similarity index 100% rename from examples/standalone/libfuzzer/harness/.dockerignore rename to examples/07_libfuzzer/harness/.dockerignore diff --git a/examples/standalone/libfuzzer/harness/.gitignore b/examples/07_libfuzzer/harness/.gitignore similarity index 100% rename from examples/standalone/libfuzzer/harness/.gitignore rename to examples/07_libfuzzer/harness/.gitignore diff --git a/examples/standalone/libfuzzer/harness/Makefile b/examples/07_libfuzzer/harness/Makefile similarity index 100% rename from examples/standalone/libfuzzer/harness/Makefile rename to examples/07_libfuzzer/harness/Makefile diff --git a/examples/standalone/libfuzzer/harness/example.c b/examples/07_libfuzzer/harness/example.c similarity index 100% rename from examples/standalone/libfuzzer/harness/example.c rename to examples/07_libfuzzer/harness/example.c diff --git a/examples/07_libfuzzer/make_example.sh b/examples/07_libfuzzer/make_example.sh new file mode 100755 index 0000000..d3a1c34 --- /dev/null +++ b/examples/07_libfuzzer/make_example.sh @@ -0,0 +1,26 @@ +#!/bin/bash +set -ex + +docker build -f ./Dockerfile -t libfuzzer_harness . + +docker run -i \ + -v $(realpath -m ./snapshot):/snapshot/ \ + libfuzzer_harness + +sha256sum ./snapshot/example.bin ./snapshot/vmlinux + +# Use angr to find constant comparisons to add to the dictionary +mkdir -p snapshot/dict +pip3 install --user angr +python3 ../../docker/coverage_scripts/angr_snapchange.py \ + --dict-path ./snapshot/dict \ + --auto-dict \ + --base-addr 0x555555554000 \ + ./snapshot/example.bin + +# Remove odd dictionary entries just to speed up the example +find ./snapshot/dict | grep -v cafe | grep -v dead | xargs rm + +# Remove the unneeded angr covbps since we are using the sancov bps +rm snapshot/*angr.covbps +cp config.toml snapshot diff --git a/examples/standalone/libfuzzer/reset.sh b/examples/07_libfuzzer/reset.sh similarity index 100% rename from examples/standalone/libfuzzer/reset.sh rename to examples/07_libfuzzer/reset.sh diff --git a/examples/standalone/libfuzzer/run.sh b/examples/07_libfuzzer/run.sh similarity index 100% rename from examples/standalone/libfuzzer/run.sh rename to examples/07_libfuzzer/run.sh diff --git a/examples/standalone/libfuzzer/src/fuzzer.rs b/examples/07_libfuzzer/src/fuzzer.rs similarity index 65% rename from examples/standalone/libfuzzer/src/fuzzer.rs rename to examples/07_libfuzzer/src/fuzzer.rs index e164cb0..2d4701d 100644 --- a/examples/standalone/libfuzzer/src/fuzzer.rs +++ b/examples/07_libfuzzer/src/fuzzer.rs @@ -6,20 +6,25 @@ use anyhow::Result; +use snapchange::fuzz_input::InputWithMetadata; use snapchange::fuzzer::Fuzzer; use snapchange::fuzzvm::FuzzVm; use crate::constants; #[derive(Default)] -pub struct Example1Fuzzer {} +pub struct Example7Fuzzer {} -impl Fuzzer for Example1Fuzzer { +impl Fuzzer for Example7Fuzzer { type Input = Vec; const START_ADDRESS: u64 = constants::RIP; - const MAX_INPUT_LENGTH: usize = 1024; + const MAX_INPUT_LENGTH: usize = 32; - fn set_input(&mut self, input: &Self::Input, fuzzvm: &mut FuzzVm) -> Result<()> { + fn set_input( + &mut self, + input: &InputWithMetadata, + fuzzvm: &mut FuzzVm, + ) -> Result<()> { snapchange::utils::libfuzzer::set_input(&input[..], fuzzvm) } diff --git a/examples/standalone/libfuzzer/src/main.rs b/examples/07_libfuzzer/src/main.rs similarity index 56% rename from examples/standalone/libfuzzer/src/main.rs rename to examples/07_libfuzzer/src/main.rs index 4b4dc72..c51298b 100644 --- a/examples/standalone/libfuzzer/src/main.rs +++ b/examples/07_libfuzzer/src/main.rs @@ -1,8 +1,8 @@ use snapchange::snapchange_main; -mod fuzzer; mod constants; +mod fuzzer; fn main() { - snapchange_main::().unwrap(); + snapchange_main::().unwrap(); } diff --git a/examples/07_libfuzzer/test.sh b/examples/07_libfuzzer/test.sh new file mode 100755 index 0000000..3e2f172 --- /dev/null +++ b/examples/07_libfuzzer/test.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# Reset the snapshot from a previous run +pushd snapshot > /dev/null +./reset.sh +popd > /dev/null + +# Rebuild the fuzzer +echo "Building Example 07" +cargo build -r >/dev/null 2>/dev/null + +# Seed the input with an easier input +echo "Begin fuzzing!" +cargo run -r -- fuzz -c 8 --ascii-stats --stop-after-first-crash --stop-after-time 5m + +ls snapshot/crashes/SIGSEGV* >/dev/null 2>/dev/null +STATUS=$? +if [ "$STATUS" -eq 0 ]; then + kill -9 $PID 2>/dev/null >/dev/null + ps -ef | rg Example07 | tr -s ' ' | cut -d' ' -f2 | xargs kill -9 2>/dev/null >/dev/null +fi + +# Check if the fuzzer found a crash +ls snapshot/crashes/SIGSEGV* >/dev/null +STATUS=$? +if [ "$STATUS" -gt 0 ]; then + echo "Example 7 did not find crash" + exit 1 +fi + +echo -e "\e[32mExample 07 fuzz SUCCESS!\e[0m" diff --git a/examples/standalone/libfuzzer/make_example.sh b/examples/standalone/libfuzzer/make_example.sh deleted file mode 100755 index 0b8a481..0000000 --- a/examples/standalone/libfuzzer/make_example.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -set -ex - -pushd ../../../docker -docker build -t snapchange . -popd - -docker build -f ./Dockerfile -t harness . - -docker run -i \ - -v $(realpath -m ./snapshot):/snapshot/ \ - harness - -sha256sum ./snapshot/example.bin ./snapshot/vmlinux - -# Use angr to find constant comparisons to add to the dictionary -mkdir -p snapshot/dict -pip3 install --user angr -python3 ../../../docker/coverage_scripts/angr_snapchange.py --dict-path ./snapshot/dict --auto-dict ./snapshot/example.bin diff --git a/examples/test.sh b/examples/test.sh index 7402180..8b7ddca 100755 --- a/examples/test.sh +++ b/examples/test.sh @@ -1,19 +1,30 @@ #!/bin/bash -DIRS="01_getpid 02_libtiff 03_ffmpeg_custom_mutator 04_syscall_fuzzer 05_redqueen 06_custom_feedback" +# DIRS="01_getpid 02_libtiff 03_ffmpeg_custom_mutator 04_syscall_fuzzer 05_redqueen 06_custom_feedback" +DIRS="01_getpid 02_libtiff 04_syscall_fuzzer 05_redqueen 06_custom_feedback 07_libfuzzer" # Make and test all included examples for dir in $DIRS; do echo Testing $dir pushd $dir >/dev/null + # Create the snapshot for this example or reset the snapshot for testing if ! [ -d ./snapshot ]; then - ./make_example.sh + ./make_snapshot.sh else pushd ./snapshot >/dev/null ./reset.sh popd >/dev/null fi + # Test this example ./test.sh + + # Check the result of this test + STATUS=$? popd >/dev/null + + if [ "$STATUS" -gt 0 ]; then + echo "Test $dir failed!" + exit 1 + fi done