[workspace] resolver = "2" members = [ "libafl", "libafl_bolts", "libafl_cc", "libafl_concolic/symcc_runtime", "libafl_concolic/symcc_libafl", "libafl_derive", "libafl_frida", "libafl_intelpt", "libafl_libfuzzer", "libafl_nyx", "libafl_unicorn", "libafl_targets", "libafl_tinyinst", "libafl_qemu", "libafl_qemu/libafl_qemu_build", "libafl_qemu/libafl_qemu_sys", "libafl_sugar", "libafl_concolic/test/dump_constraints", "libafl_concolic/test/runtime_test", "utils/build_and_test_fuzzers", "utils/deexit", "utils/drcov_utils", "utils/gramatron/construct_automata", "utils/libafl_benches", "utils/libafl_jumper", "utils/ci_runner", "utils/ci_splitter", ] default-members = [ "libafl", "libafl_bolts", "libafl_cc", "libafl_derive", "libafl_targets", ] exclude = [ "bindings/pylibafl", "docs", "fuzzers", "libafl_libfuzzer_runtime", "utils/noaslr", "utils/gdb_qemu", "utils/libafl_repo_tools", "utils/desyscall", "utils/multi_machine_generator", "scripts", # additional crates "libafl_concolic/test/symcc/util/symcc_fuzzing_helper", ] [workspace.package] version = "0.15.3" license = "MIT OR Apache-2.0" [workspace.dependencies] # Internal deps libafl = { path = "./libafl", version = "0.15.3", default-features = false } libafl_bolts = { path = "./libafl_bolts", version = "0.15.3", default-features = false } libafl_cc = { path = "./libafl_cc", version = "0.15.3", default-features = false } symcc_runtime = { path = "./libafl_concolic/symcc_runtime", version = "0.15.2", default-features = false } symcc_libafl = { path = "./libafl_concolic/symcc_libafl", version = "0.15.3", default-features = false } libafl_derive = { path = "./libafl_derive", version = "0.15.3", default-features = false } libafl_frida = { path = "./libafl_frida", version = "0.15.3", default-features = false } libafl_intelpt = { path = "./libafl_intelpt", version = "0.15.3", default-features = false } libafl_libfuzzer = { path = "./libafl_libfuzzer", version = "0.15.3", default-features = false } libafl_nyx = { path = "./libafl_nyx", version = "0.15.3", default-features = false } libafl_targets = { path = "./libafl_targets", version = "0.15.3", default-features = false } libafl_tinyinst = { path = "./libafl_tinyinst", version = "0.15.3", default-features = false } libafl_qemu = { path = "./libafl_qemu", version = "0.15.3", default-features = false } libafl_qemu_build = { path = "./libafl_qemu/libafl_qemu_build", version = "0.15.3", default-features = false } libafl_qemu_sys = { path = "./libafl_qemu/libafl_qemu_sys", version = "0.15.3", default-features = false } libafl_sugar = { path = "./libafl_sugar", version = "0.15.3", default-features = false } dump_constraints = { path = "./libafl_concolic/test/dump_constraints", version = "0.15.2", default-features = false } runtime_test = { path = "./libafl_concolic/test/runtime_test", version = "0.15.2", default-features = false } build_and_test_fuzzers = { path = "./utils/build_and_test_fuzzers", version = "0.15.2", default-features = false } deexit = { path = "./utils/deexit", version = "0.15.2", default-features = false } drcov_utils = { path = "./utils/drcov_utils", version = "0.15.2", default-features = false } construct_automata = { path = "./utils/gramatron/construct_automata", version = "0.15.2", default-features = false } libafl_benches = { path = "./utils/libafl_benches", version = "0.15.3", default-features = false } libafl_jumper = { path = "./utils/libafl_jumper", version = "0.15.3", default-features = false } # External deps ahash = { version = "0.8.12", default-features = false } # The hash function already used in hashbrown arbitrary-int = "1.2.7" # arbitrary sized integers, useful in combination with bitfields (bitbybit crate) backtrace = { version = "0.3.74", default-features = false } # Used to get the stacktrace in StacktraceObserver bindgen = "0.71.1" # 2024-12-16: bitbybit 1.3.3 is leading CI to fail due to missing docs. # fixme: Change this to 1.3.3 when the issue https://github.com/danlehmann/bitfield/issues/66 is resolved. bitbybit = "=1.3.2" # bitfields, use this for bit fields and bit enums capstone = "0.13.0" # Disassembler used in libafl_unicorn to provide disassembly on crash clap = "4.5.18" cc = "1.1.21" cmake = "0.1.51" document-features = "0.2.10" fastbloom = { version = "0.11.0", default-features = false } hashbrown = { version = "0.14.5", default-features = false } # A faster hashmap, nostd compatible just = "1.40.0" libc = "0.2.159" # For (*nix) libc libipt = "0.3.0" log = "0.4.22" meminterval = "0.4.1" mimalloc = { version = "0.1.43", default-features = false } nix = { version = "0.29.0", default-features = false } num_enum = { version = "0.7.3", default-features = false } num-traits = { version = "0.2.19", default-features = false } paste = "1.0.15" postcard = { version = "1.0.10", features = [ "alloc", ], default-features = false } # no_std compatible serde serialization format pyo3 = "0.24.1" pyo3-build-config = "0.25.0" rangemap = "1.5.1" regex = "1.10.6" rustversion = "1.0.17" serde = { version = "1.0.210", default-features = false } # serialization lib serial_test = { version = "3.1.1", default-features = false } serde_json = { version = "1.0.128", default-features = false } serde_yaml = { version = "0.9.34" } # For parsing the injections yaml file static_assertions = "1.1.0" strum = "0.27.0" strum_macros = "0.27.0" toml = "0.8.19" # For parsing the injections toml file typed-builder = "0.21.0" # Implement the builder pattern at compiletime typeid = "1.0.0" # Safe type_eq that doesn't rely on std specialization unicorn-engine = "2.0.1" # Used in libafl_unicorn uuid = { version = "1.10.0", features = ["serde", "v4"] } which = "7.0.2" windows = "0.59.0" z3 = "0.12.1" fs2 = "0.4.3" # Used by OnDisk Corpus for file locking [workspace.lints.rust] # Deny warnings = { level = "deny", priority = -1 } # Forbid unexpected_cfgs = "forbid" # Allow incomplete_features = "allow" # ambiguous_glob_reexports = "allow" [workspace.lints.clippy] # Deny all = { level = "deny", priority = -1 } pedantic = { level = "deny", priority = -1 } cargo_common_metadata = "deny" alloc_instead_of_core = "deny" std_instead_of_alloc = "deny" std_instead_of_core = "deny" # Warn cargo = { level = "warn", priority = -1 } # Allow negative_feature_names = "allow" # TODO: turn into 'warn' when working multiple_crate_versions = "allow" # TODO: turn into `warn` when working unreadable_literal = "allow" type_repetition_in_bounds = "allow" missing_errors_doc = "allow" cast_possible_truncation = "allow" used_underscore_binding = "allow" ptr_as_ptr = "allow" missing_panics_doc = "allow" module_name_repetitions = "allow" unsafe_derive_deserialize = "allow" similar_names = "allow" too_many_lines = "allow" comparison_chain = "allow" # This lint makes **ZERO** sense struct_field_names = "allow" # ???? [workspace.lints.rustdoc] # Deny broken_intra_doc_links = "deny" [profile.release] lto = true codegen-units = 1 opt-level = 3 debug = true