@@ -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