@@ -7,6 +7,7 @@ const gossip_service_fuzz = sig.gossip.fuzz_service;
77const gossip_table_fuzz = sig .gossip .fuzz_table ;
88const snapshot_fuzz = sig .accounts_db .fuzz_snapshot ;
99const ledger_fuzz = sig .ledger .fuzz_ledger ;
10+ const allocators_fuzz = sig .utils .allocators .fuzzer ;
1011
1112// Supported fuzz filters.
1213// NOTE: changing these enum variants will require a change to the fuzz/kcov in `scripts/`
@@ -24,34 +25,13 @@ const Cmd = struct {
2425 seed : ? u64 ,
2526 fuzzer : ? union (FuzzFilter ) {
2627 accountsdb : accountsdb_fuzz.RunCmd ,
27- snapshot : FuzzerTodo ,
28- gossip_service : FuzzerTodo ,
29- gossip_table : FuzzerTodo ,
30- ledger : FuzzerTodo ,
31- allocators : FuzzerTodo ,
28+ snapshot : snapshot_fuzz.RunCmd ,
29+ gossip_service : gossip_service_fuzz.RunCmd ,
30+ gossip_table : gossip_table_fuzz.RunCmd ,
31+ ledger : ledger_fuzz.RunCmd ,
32+ allocators : allocators_fuzz.RunCmd ,
3233 },
3334
34- const FuzzerTodo = struct {
35- args : []const []const u8 ,
36-
37- pub const cmd_info : cli .CommandInfo (FuzzerTodo ) = .{
38- .help = .{
39- .short = "TODO: implement bespoke CLI integration for this fuzzer." ,
40- .long = null ,
41- },
42- .sub = .{
43- .args = .{
44- .kind = .positional ,
45- .name_override = null ,
46- .alias = .none ,
47- .default_value = &.{},
48- .config = .string ,
49- .help = "Args to pass to the specified fuzzer." ,
50- },
51- },
52- };
53- };
54-
5535 const parser = cli .Parser (Cmd , .{
5636 .help = .{
5737 .short = "Fuzz a component of the validator." ,
@@ -61,33 +41,33 @@ const Cmd = struct {
6141 .data_dir = .{
6242 .kind = .named ,
6343 .name_override = null ,
64- .alias = .none ,
44+ .alias = .d ,
6545 .default_value = null ,
6646 .config = .string ,
6747 .help = "Directory for all fuzzers to store their on-disk data relative to." ,
6848 },
6949 .seed = .{
7050 .kind = .named ,
7151 .name_override = null ,
72- .alias = .none ,
52+ .alias = .s ,
7353 .default_value = null ,
7454 .config = {},
7555 .help = "Seed for the PRNG for all random actions taken during fuzzing." ,
7656 },
7757 .fuzzer = .{
7858 .accountsdb = accountsdb_fuzz .RunCmd .cmd_info ,
79- .snapshot = FuzzerTodo .cmd_info ,
80- .gossip_service = FuzzerTodo .cmd_info ,
81- .gossip_table = FuzzerTodo .cmd_info ,
82- .ledger = FuzzerTodo .cmd_info ,
83- .allocators = FuzzerTodo .cmd_info ,
59+ .snapshot = snapshot_fuzz . RunCmd .cmd_info ,
60+ .gossip_service = gossip_service_fuzz . RunCmd .cmd_info ,
61+ .gossip_table = gossip_table_fuzz . RunCmd .cmd_info ,
62+ .ledger = ledger_fuzz . RunCmd .cmd_info ,
63+ .allocators = allocators_fuzz . RunCmd .cmd_info ,
8464 },
8565 },
8666 });
8767};
8868
8969pub fn main () ! void {
90- var gpa_state : std .heap .DebugAllocator (.{}) = .init ;
70+ var gpa_state : std .heap .DebugAllocator (.{ . safety = true }) = .init ;
9171 defer _ = gpa_state .deinit ();
9272 const gpa = gpa_state .allocator ();
9373
@@ -165,10 +145,19 @@ pub fn main() !void {
165145 run_cmd ,
166146 ),
167147
168- .snapshot = > try snapshot_fuzz .run (),
169- .gossip_service = > | run_cmd | try gossip_service_fuzz .run (seed , run_cmd .args ),
170- .gossip_table = > | run_cmd | try gossip_table_fuzz .run (seed , run_cmd .args ),
171- .ledger = > | run_cmd | try ledger_fuzz .run (seed , run_cmd .args ),
172- .allocators = > | run_cmd | try sig .utils .allocators .runFuzzer (seed , run_cmd .args ),
148+ .snapshot ,
149+ = > | run_cmd | try snapshot_fuzz .run (gpa , seed , run_cmd ),
150+
151+ .gossip_service ,
152+ = > | run_cmd | try gossip_service_fuzz .run (gpa , seed , run_cmd ),
153+
154+ .gossip_table ,
155+ = > | run_cmd | try gossip_table_fuzz .run (gpa , .from (logger ), seed , run_cmd ),
156+
157+ .allocators ,
158+ = > | run_cmd | try allocators_fuzz .run (gpa , seed , run_cmd ),
159+
160+ .ledger ,
161+ = > | run_cmd | try ledger_fuzz .run (seed , run_cmd ),
173162 }
174163}
0 commit comments