@@ -7,6 +7,7 @@ const gossip_service_fuzz = sig.gossip.fuzz_service;
7
7
const gossip_table_fuzz = sig .gossip .fuzz_table ;
8
8
const snapshot_fuzz = sig .accounts_db .fuzz_snapshot ;
9
9
const ledger_fuzz = sig .ledger .fuzz_ledger ;
10
+ const allocators_fuzz = sig .utils .allocators .fuzzer ;
10
11
11
12
// Supported fuzz filters.
12
13
// NOTE: changing these enum variants will require a change to the fuzz/kcov in `scripts/`
@@ -24,34 +25,13 @@ const Cmd = struct {
24
25
seed : ? u64 ,
25
26
fuzzer : ? union (FuzzFilter ) {
26
27
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 ,
32
33
},
33
34
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
-
55
35
const parser = cli .Parser (Cmd , .{
56
36
.help = .{
57
37
.short = "Fuzz a component of the validator." ,
@@ -61,33 +41,33 @@ const Cmd = struct {
61
41
.data_dir = .{
62
42
.kind = .named ,
63
43
.name_override = null ,
64
- .alias = .none ,
44
+ .alias = .d ,
65
45
.default_value = null ,
66
46
.config = .string ,
67
47
.help = "Directory for all fuzzers to store their on-disk data relative to." ,
68
48
},
69
49
.seed = .{
70
50
.kind = .named ,
71
51
.name_override = null ,
72
- .alias = .none ,
52
+ .alias = .s ,
73
53
.default_value = null ,
74
54
.config = {},
75
55
.help = "Seed for the PRNG for all random actions taken during fuzzing." ,
76
56
},
77
57
.fuzzer = .{
78
58
.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 ,
84
64
},
85
65
},
86
66
});
87
67
};
88
68
89
69
pub fn main () ! void {
90
- var gpa_state : std .heap .DebugAllocator (.{}) = .init ;
70
+ var gpa_state : std .heap .DebugAllocator (.{ . safety = true }) = .init ;
91
71
defer _ = gpa_state .deinit ();
92
72
const gpa = gpa_state .allocator ();
93
73
@@ -165,10 +145,19 @@ pub fn main() !void {
165
145
run_cmd ,
166
146
),
167
147
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 ),
173
162
}
174
163
}
0 commit comments