/src/ndpi/fuzz/fuzz_config.cpp
Line | Count | Source |
1 | | #include "ndpi_api.h" |
2 | | #include "ndpi_private.h" |
3 | | #include "ndpi_classify.h" |
4 | | #include "fuzz_common_code.h" |
5 | | |
6 | | #include <stdint.h> |
7 | | #include <stdio.h> |
8 | | #include <assert.h> |
9 | | #include "fuzzer/FuzzedDataProvider.h" |
10 | | |
11 | 7.75k | extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { |
12 | 7.75k | FuzzedDataProvider fuzzed_data(data, size); |
13 | 7.75k | struct ndpi_detection_module_struct *ndpi_info_mod; |
14 | 7.75k | struct ndpi_flow_struct flow; |
15 | 7.75k | u_int8_t protocol_was_guessed, unused; |
16 | 7.75k | u_int32_t i, ret; |
17 | 7.75k | u_int16_t bool_value; |
18 | 7.75k | struct ndpi_lru_cache_stats lru_stats; |
19 | 7.75k | struct ndpi_patricia_tree_stats patricia_stats; |
20 | 7.75k | struct ndpi_automa_stats automa_stats; |
21 | 7.75k | int cat, idx; |
22 | 7.75k | u_int16_t pid, pid2; |
23 | 7.75k | char *protoname, *protoname2; |
24 | 7.75k | char pids_name[32]; |
25 | 7.75k | const char *name; |
26 | 7.75k | char catname[] = "name"; |
27 | 7.75k | struct ndpi_flow_input_info input_info; |
28 | 7.75k | ndpi_proto p, p2; |
29 | 7.75k | char out[128]; |
30 | 7.75k | struct ndpi_global_context *g_ctx; |
31 | 7.75k | char log_ts[32]; |
32 | 7.75k | int value; |
33 | 7.75k | char cfg_value[32]; |
34 | 7.75k | char cfg_proto[32]; |
35 | 7.75k | char cfg_param[32]; |
36 | 7.75k | u_int64_t cat_userdata = 0; |
37 | 7.75k | u_int16_t unused1, unused2; |
38 | 7.75k | ndpi_master_app_protocol proto1, proto2; |
39 | | |
40 | | /* Make allocation failures more unlikely */ |
41 | 7.75k | if(fuzzed_data.ConsumeBool()) |
42 | 1.16k | fuzz_set_alloc_callbacks_and_seed(size); |
43 | 6.59k | else |
44 | 6.59k | fuzz_set_alloc_callbacks_and_seed(0); |
45 | | |
46 | 7.75k | if(fuzzed_data.ConsumeBool()) |
47 | 1.19k | g_ctx = ndpi_global_init(); |
48 | 6.55k | else |
49 | 6.55k | g_ctx = NULL; |
50 | | |
51 | 7.75k | ndpi_info_mod = ndpi_init_detection_module(g_ctx); |
52 | | |
53 | 7.75k | set_ndpi_debug_function(ndpi_info_mod, NULL); |
54 | | |
55 | 7.75k | ndpi_set_user_data(ndpi_info_mod, (void *)0xabcdabcd); /* Random pointer */ |
56 | 7.75k | ndpi_set_user_data(ndpi_info_mod, (void *)0xabcdabcd); /* Twice to trigger overwriting */ |
57 | 7.75k | ndpi_get_user_data(ndpi_info_mod); |
58 | | |
59 | | /* ndpi_set_config: try to keep the soame order of the definitions in ndpi_main.c. |
60 | | + 1 to trigger unvalid parameter error */ |
61 | | |
62 | 7.75k | if(fuzzed_data.ConsumeBool()) |
63 | 1.11k | ndpi_load_protocols_file(ndpi_info_mod, "protos.txt"); |
64 | 7.75k | if(fuzzed_data.ConsumeBool()) |
65 | 1.23k | ndpi_load_protocols_file(ndpi_info_mod, fuzzed_data.ConsumeBool() ? NULL : "invalid_filename"); /* Error */ |
66 | 7.75k | if(fuzzed_data.ConsumeBool()) |
67 | 1.72k | ndpi_load_categories_dir(ndpi_info_mod, fuzzed_data.ConsumeBool() ? NULL : (char *)"./"); |
68 | 7.75k | if(fuzzed_data.ConsumeBool()) |
69 | 1.38k | ndpi_load_categories_dir(ndpi_info_mod, fuzzed_data.ConsumeBool() ? NULL : (char *)"invalid_dir"); |
70 | 7.75k | if(fuzzed_data.ConsumeBool()) |
71 | 1.71k | ndpi_load_categories_file(ndpi_info_mod, "categories.txt", &cat_userdata); |
72 | 7.75k | if(fuzzed_data.ConsumeBool()) |
73 | 1.86k | ndpi_load_categories_file(ndpi_info_mod, fuzzed_data.ConsumeBool() ? NULL : "invalid_filename", &cat_userdata); /* Error */ |
74 | 7.75k | if(fuzzed_data.ConsumeBool()) |
75 | 1.53k | ndpi_load_risk_domain_file(ndpi_info_mod, "risky_domains.txt"); |
76 | 7.75k | if(fuzzed_data.ConsumeBool()) |
77 | 1.42k | ndpi_load_risk_domain_file(ndpi_info_mod, fuzzed_data.ConsumeBool() ? NULL : "invalid_filename"); /* Error */ |
78 | 7.75k | if(fuzzed_data.ConsumeBool()) |
79 | 1.60k | ndpi_load_malicious_ja4_file(ndpi_info_mod, "ja4_fingerprints.csv"); |
80 | 7.75k | if(fuzzed_data.ConsumeBool()) |
81 | 1.59k | ndpi_load_malicious_ja4_file(ndpi_info_mod, fuzzed_data.ConsumeBool() ? NULL : "invalid_filename"); /* Error */ |
82 | 7.75k | if(fuzzed_data.ConsumeBool()) |
83 | 1.63k | ndpi_load_malicious_sha1_file(ndpi_info_mod, "sha1_fingerprints.csv"); |
84 | 7.75k | if(fuzzed_data.ConsumeBool()) |
85 | 1.65k | ndpi_load_malicious_sha1_file(ndpi_info_mod, fuzzed_data.ConsumeBool() ? NULL : "invalid_filename"); /* Error */ |
86 | 7.75k | if(fuzzed_data.ConsumeBool()) |
87 | 1.43k | ndpi_load_domain_suffixes(ndpi_info_mod, (char *)"public_suffix_list.dat"); |
88 | 7.75k | if(fuzzed_data.ConsumeBool()) |
89 | 1.44k | ndpi_load_domain_suffixes(ndpi_info_mod, (char *)"public_suffix_list.dat"); /* To trigger reload */ |
90 | 7.75k | if(fuzzed_data.ConsumeBool()) |
91 | 1.49k | ndpi_load_domain_suffixes(ndpi_info_mod, fuzzed_data.ConsumeBool() ? NULL : (char *)"invalid_filename"); /* Error */ |
92 | | /* Note that this function is not used by ndpiReader */ |
93 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
94 | 1.49k | ndpi_load_ipv4_ptree(ndpi_info_mod, "invalid_filename", NDPI_PROTOCOL_TLS); |
95 | 1.49k | ndpi_load_ipv4_ptree(ndpi_info_mod, "ipv4_addresses.txt", NDPI_PROTOCOL_TLS); |
96 | 1.49k | } |
97 | | |
98 | | /* TODO: stub for geo stuff */ |
99 | 7.75k | ndpi_load_geoip(ndpi_info_mod, NULL, NULL); |
100 | | |
101 | | /* To trigger NDPI_CFG_CONTEXT_ALREADY_INITIALIZED */ |
102 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
103 | 1.28k | ret = ndpi_finalize_initialization(ndpi_info_mod); |
104 | 1.28k | if(ret != 0) { |
105 | 96 | ndpi_exit_detection_module(ndpi_info_mod); |
106 | 96 | ndpi_info_mod = NULL; |
107 | 96 | } |
108 | 1.28k | } |
109 | | |
110 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
111 | 1.61k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
112 | 1.61k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
113 | 1.61k | ndpi_set_config(ndpi_info_mod, "http", "metadata.request_content_type", cfg_value); |
114 | 1.61k | } |
115 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
116 | 1.52k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
117 | 1.52k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
118 | 1.52k | ndpi_set_config(ndpi_info_mod, "http", "metadata.referer", cfg_value); |
119 | 1.52k | } |
120 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
121 | 1.54k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
122 | 1.54k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
123 | 1.54k | ndpi_set_config(ndpi_info_mod, "http", "metadata.host", cfg_value); |
124 | 1.54k | } |
125 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
126 | 1.48k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
127 | 1.48k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
128 | 1.48k | ndpi_set_config(ndpi_info_mod, "http", "metadata.username", cfg_value); |
129 | 1.48k | } |
130 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
131 | 1.45k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
132 | 1.45k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
133 | 1.45k | ndpi_set_config(ndpi_info_mod, "http", "metadata.password", cfg_value); |
134 | 1.45k | } |
135 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
136 | 1.79k | value = fuzzed_data.ConsumeIntegralInRange(0, 365 + 1); |
137 | 1.79k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
138 | 1.79k | ndpi_set_config(ndpi_info_mod, "tls", "certificate_expiration_threshold", cfg_value); |
139 | 1.79k | ndpi_get_config(ndpi_info_mod, "tls", "certificate_expiration_threshold", cfg_value, sizeof(cfg_value)); |
140 | 1.79k | } |
141 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
142 | 1.30k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
143 | 1.30k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
144 | 1.30k | ndpi_set_config(ndpi_info_mod, "tls", "application_blocks_tracking", cfg_value); |
145 | 1.30k | ndpi_get_config(ndpi_info_mod, "tls", "application_blocks_tracking", cfg_value, sizeof(cfg_value)); |
146 | 1.30k | } |
147 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
148 | 1.32k | value = fuzzed_data.ConsumeIntegralInRange(0, 0x07 + 1); |
149 | 1.32k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
150 | 1.32k | ndpi_set_config(ndpi_info_mod, "tls", "dpi.heuristics", cfg_value); |
151 | 1.32k | value = fuzzed_data.ConsumeIntegralInRange(0, 255 + 1); |
152 | 1.32k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
153 | 1.32k | ndpi_set_config(ndpi_info_mod, "tls", "dpi.heuristics.max_packets_extra_dissection", cfg_value); |
154 | 1.32k | } |
155 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
156 | 1.14k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
157 | 1.14k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
158 | 1.14k | ndpi_set_config(ndpi_info_mod, "tls", "metadata.sha1_fingerprint", cfg_value); |
159 | 1.14k | } |
160 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
161 | 1.18k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
162 | 1.18k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
163 | 1.18k | ndpi_set_config(ndpi_info_mod, "tls", "metadata.versions_supported", cfg_value); |
164 | 1.18k | } |
165 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
166 | 1.24k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
167 | 1.24k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
168 | 1.24k | ndpi_set_config(ndpi_info_mod, "tls", "metadata.alpn_negotiated", cfg_value); |
169 | 1.24k | } |
170 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
171 | 1.21k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
172 | 1.21k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
173 | 1.21k | ndpi_set_config(ndpi_info_mod, "tls", "metadata.cipher", cfg_value); |
174 | 1.21k | } |
175 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
176 | 1.30k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
177 | 1.30k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
178 | 1.30k | ndpi_set_config(ndpi_info_mod, "tls", "metadata.cert_server_names", cfg_value); |
179 | 1.30k | } |
180 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
181 | 1.35k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
182 | 1.35k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
183 | 1.35k | ndpi_set_config(ndpi_info_mod, "tls", "metadata.cert_validity", cfg_value); |
184 | 1.35k | } |
185 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
186 | 1.38k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
187 | 1.38k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
188 | 1.38k | ndpi_set_config(ndpi_info_mod, "tls", "metadata.cert_issuer", cfg_value); |
189 | 1.38k | } |
190 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
191 | 1.30k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
192 | 1.30k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
193 | 1.30k | ndpi_set_config(ndpi_info_mod, "tls", "metadata.cert_subject", cfg_value); |
194 | 1.30k | } |
195 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
196 | 1.28k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
197 | 1.28k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
198 | 1.28k | ndpi_set_config(ndpi_info_mod, "tls", "metadata.browser", cfg_value); |
199 | 1.28k | } |
200 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
201 | 1.40k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
202 | 1.40k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
203 | 1.40k | ndpi_set_config(ndpi_info_mod, "tls", "metadata.ja3s_fingerprint", cfg_value); |
204 | 1.40k | } |
205 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
206 | 1.38k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
207 | 1.38k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
208 | 1.38k | ndpi_set_config(ndpi_info_mod, "tls", "metadata.ja4c_fingerprint", cfg_value); |
209 | 1.38k | } |
210 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
211 | 1.34k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
212 | 1.34k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
213 | 1.34k | ndpi_set_config(ndpi_info_mod, "tls", "metadata.ja4r_fingerprint", cfg_value); |
214 | 1.34k | } |
215 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
216 | 1.40k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
217 | 1.40k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
218 | 1.40k | ndpi_set_config(ndpi_info_mod, "tls", "subclassification", cfg_value); |
219 | 1.40k | } |
220 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
221 | 1.39k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
222 | 1.39k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
223 | 1.39k | ndpi_set_config(ndpi_info_mod, "quic", "subclassification", cfg_value); |
224 | 1.39k | } |
225 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
226 | 1.29k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
227 | 1.29k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
228 | 1.29k | ndpi_set_config(ndpi_info_mod, "smtp", "tls_dissection", cfg_value); |
229 | 1.29k | } |
230 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
231 | 1.39k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
232 | 1.39k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
233 | 1.39k | ndpi_set_config(ndpi_info_mod, "imap", "tls_dissection", cfg_value); |
234 | 1.39k | } |
235 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
236 | 1.43k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
237 | 1.43k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
238 | 1.43k | ndpi_set_config(ndpi_info_mod, "pop", "tls_dissection", cfg_value); |
239 | 1.43k | } |
240 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
241 | 1.27k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
242 | 1.27k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
243 | 1.27k | ndpi_set_config(ndpi_info_mod, "ftp", "tls_dissection", cfg_value); |
244 | 1.27k | } |
245 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
246 | 1.42k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
247 | 1.42k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
248 | 1.42k | ndpi_set_config(ndpi_info_mod, "sip", "metadata.attribute.from", cfg_value); |
249 | 1.42k | } |
250 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
251 | 1.29k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
252 | 1.29k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
253 | 1.29k | ndpi_set_config(ndpi_info_mod, "sip", "metadata.attribute.from_imsi", cfg_value); |
254 | 1.29k | } |
255 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
256 | 1.27k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
257 | 1.27k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
258 | 1.27k | ndpi_set_config(ndpi_info_mod, "sip", "metadata.attribute.to", cfg_value); |
259 | 1.27k | } |
260 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
261 | 1.26k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
262 | 1.26k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
263 | 1.26k | ndpi_set_config(ndpi_info_mod, "sip", "metadata.attribute.to_imsi", cfg_value); |
264 | 1.26k | } |
265 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
266 | 1.29k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
267 | 1.29k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
268 | 1.29k | ndpi_set_config(ndpi_info_mod, "stun", "tls_dissection", cfg_value); |
269 | 1.29k | } |
270 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
271 | 1.29k | value = fuzzed_data.ConsumeIntegralInRange(0, 255 + 1); |
272 | 1.29k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
273 | 1.29k | ndpi_set_config(ndpi_info_mod, "stun", "max_packets_extra_dissection", cfg_value); |
274 | 1.29k | } |
275 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
276 | 1.35k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
277 | 1.35k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
278 | 1.35k | ndpi_set_config(ndpi_info_mod, "stun", "metadata.attribute.response_origin", cfg_value); |
279 | 1.35k | } |
280 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
281 | 1.22k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
282 | 1.22k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
283 | 1.22k | ndpi_set_config(ndpi_info_mod, "stun", "metadata.attribute.other_address", cfg_value); |
284 | 1.22k | } |
285 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
286 | 1.44k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
287 | 1.44k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
288 | 1.44k | ndpi_set_config(ndpi_info_mod, "stun", "metadata.attribute.mapped_address", cfg_value); |
289 | 1.44k | } |
290 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
291 | 1.34k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
292 | 1.34k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
293 | 1.34k | ndpi_set_config(ndpi_info_mod, "bittorrent", "metadata.hash", cfg_value); |
294 | 1.34k | } |
295 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
296 | 1.37k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
297 | 1.37k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
298 | 1.37k | ndpi_set_config(ndpi_info_mod, "ssdp", "metadata", cfg_value); |
299 | 1.37k | } |
300 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
301 | 1.31k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
302 | 1.31k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
303 | 1.31k | ndpi_set_config(ndpi_info_mod, "dns", "subclassification", cfg_value); |
304 | 1.31k | } |
305 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
306 | 1.39k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
307 | 1.39k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
308 | 1.39k | ndpi_set_config(ndpi_info_mod, "dns", "process_response", cfg_value); |
309 | 1.39k | } |
310 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
311 | 1.35k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
312 | 1.35k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
313 | 1.35k | ndpi_set_config(ndpi_info_mod, "http", "process_response", cfg_value); |
314 | 1.35k | } |
315 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
316 | 1.34k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
317 | 1.34k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
318 | 1.34k | ndpi_set_config(ndpi_info_mod, "http", "subclassification", cfg_value); |
319 | 1.34k | } |
320 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
321 | 1.34k | value = fuzzed_data.ConsumeIntegralInRange(0, 0x01 + 1); |
322 | 1.34k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
323 | 1.34k | ndpi_set_config(ndpi_info_mod, "ookla", "dpi.aggressiveness", cfg_value); |
324 | 1.34k | } |
325 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
326 | 1.34k | value = fuzzed_data.ConsumeIntegralInRange(0, 255 + 1); |
327 | 1.34k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
328 | 1.34k | ndpi_set_config(ndpi_info_mod, "zoom", "max_packets_extra_dissection", cfg_value); |
329 | 1.34k | } |
330 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
331 | 1.31k | value = fuzzed_data.ConsumeIntegralInRange(0, 0x01 + 1); |
332 | 1.31k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
333 | 1.31k | ndpi_set_config(ndpi_info_mod, "rtp", "search_for_stun", cfg_value); |
334 | 1.31k | } |
335 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
336 | 1.26k | value = fuzzed_data.ConsumeIntegralInRange(0, 255 + 1); |
337 | 1.26k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
338 | 1.26k | ndpi_set_config(ndpi_info_mod, "rtp", "max_packets_extra_dissection", cfg_value); |
339 | 1.26k | } |
340 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
341 | 1.35k | value = fuzzed_data.ConsumeIntegralInRange(0, 0x01 + 1); |
342 | 1.35k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
343 | 1.35k | ndpi_set_config(ndpi_info_mod, "openvpn", "dpi.heuristics", cfg_value); |
344 | 1.35k | value = fuzzed_data.ConsumeIntegralInRange(0, 255 + 1); |
345 | 1.35k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
346 | 1.35k | ndpi_set_config(ndpi_info_mod, "openvpn", "dpi.heuristics.num_messages", cfg_value); |
347 | 1.35k | } |
348 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
349 | 1.40k | value = fuzzed_data.ConsumeIntegralInRange(0, 0x01 + 1); |
350 | 1.40k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
351 | 1.40k | ndpi_set_config(ndpi_info_mod, "openvpn", "subclassification_by_ip", cfg_value); |
352 | 1.40k | } |
353 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
354 | 1.32k | value = fuzzed_data.ConsumeIntegralInRange(0, 0x01 + 1); |
355 | 1.32k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
356 | 1.32k | ndpi_set_config(ndpi_info_mod, "wireguard", "subclassification_by_ip", cfg_value); |
357 | 1.32k | } |
358 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
359 | 1.46k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
360 | 1.46k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
361 | 1.46k | ndpi_set_config(ndpi_info_mod, "any", "log", cfg_value); |
362 | 1.46k | ndpi_get_config(ndpi_info_mod, "any", "log", cfg_value, sizeof(cfg_value)); |
363 | 1.46k | } |
364 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
365 | 1.54k | pid = fuzzed_data.ConsumeIntegralInRange<u_int16_t>(0, ndpi_info_mod ? ndpi_info_mod->num_internal_protocols + 1 : 0); /* + 1 to trigger invalid pid */ |
366 | 1.54k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
367 | 1.54k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
368 | 1.54k | snprintf(cfg_proto, sizeof(cfg_proto), "%d", pid); |
369 | | /* TODO: we should try to map integer into name */ |
370 | 1.54k | ndpi_set_config(ndpi_info_mod, cfg_proto, "log", cfg_value); |
371 | 1.54k | ndpi_get_config(ndpi_info_mod, cfg_proto, "log", cfg_value, sizeof(cfg_value)); |
372 | 1.54k | } |
373 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
374 | 1.44k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
375 | 1.44k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
376 | 1.44k | ndpi_set_config(ndpi_info_mod, "any", "ip_list.load", cfg_value); |
377 | 1.44k | ndpi_get_config(ndpi_info_mod, "any", "ip_list.load", cfg_value, sizeof(cfg_value)); |
378 | 1.44k | } |
379 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
380 | 1.49k | pid = fuzzed_data.ConsumeIntegralInRange<u_int16_t>(0, ndpi_info_mod ? ndpi_info_mod->num_internal_protocols + 1 : 0); /* + 1 to trigger invalid pid */ |
381 | 1.49k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
382 | 1.49k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
383 | 1.49k | snprintf(cfg_proto, sizeof(cfg_proto), "%d", pid); |
384 | 1.49k | ndpi_set_config(ndpi_info_mod, cfg_proto, "ip_list.load", cfg_value); |
385 | 1.49k | ndpi_get_config(ndpi_info_mod, cfg_proto, "ip_list.load", cfg_value, sizeof(cfg_value)); |
386 | 1.49k | } |
387 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
388 | 1.35k | pid = fuzzed_data.ConsumeIntegralInRange<u_int16_t>(0, ndpi_info_mod ? ndpi_info_mod->num_internal_protocols + 1 : 0); /* + 1 to trigger invalid pid */ |
389 | 1.35k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
390 | 1.35k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
391 | 1.35k | snprintf(cfg_proto, sizeof(cfg_proto), "%d", pid); |
392 | 1.35k | ndpi_set_config(ndpi_info_mod, cfg_proto, "monitoring", cfg_value); |
393 | 1.35k | } |
394 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
395 | 1.45k | pid = fuzzed_data.ConsumeIntegralInRange<u_int16_t>(0, ndpi_info_mod ? ndpi_info_mod->num_internal_protocols + 1 : 0); /* + 1 to trigger invalid pid */ |
396 | 1.45k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
397 | 1.45k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
398 | 1.45k | snprintf(cfg_proto, sizeof(cfg_proto), "%d", pid); |
399 | 1.45k | ndpi_set_config(ndpi_info_mod, cfg_proto, "enable", cfg_value); |
400 | 1.45k | } |
401 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
402 | 1.30k | value = fuzzed_data.ConsumeIntegralInRange(0, 255 + 1); |
403 | 1.30k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
404 | 1.30k | ndpi_set_config(ndpi_info_mod, NULL, "packets_limit_per_flow", cfg_value); |
405 | 1.30k | } |
406 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
407 | 1.42k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
408 | 1.42k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
409 | 1.42k | ndpi_set_config(ndpi_info_mod, NULL, "flow.direction_detection", cfg_value); |
410 | 1.42k | } |
411 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
412 | 1.59k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
413 | 1.59k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
414 | 1.59k | ndpi_set_config(ndpi_info_mod, NULL, "flow.track_payload", cfg_value); |
415 | 1.59k | } |
416 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
417 | 1.42k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
418 | 1.42k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
419 | 1.42k | ndpi_set_config(ndpi_info_mod, NULL, "flow.use_client_ip_in_guess", cfg_value); |
420 | 1.42k | } |
421 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
422 | 1.43k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
423 | 1.43k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
424 | 1.43k | ndpi_set_config(ndpi_info_mod, NULL, "flow.use_client_port_in_guess", cfg_value); |
425 | 1.43k | } |
426 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
427 | 1.48k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
428 | 1.48k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
429 | 1.48k | ndpi_set_config(ndpi_info_mod, NULL, "tcp_ack_payload_heuristic", cfg_value); |
430 | 1.48k | } |
431 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
432 | 1.50k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
433 | 1.50k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
434 | 1.50k | ndpi_set_config(ndpi_info_mod, NULL, "fully_encrypted_heuristic", cfg_value); |
435 | 1.50k | } |
436 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
437 | 1.41k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
438 | 1.41k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
439 | 1.41k | ndpi_set_config(ndpi_info_mod, NULL, "libgcrypt.init", cfg_value); |
440 | 1.41k | } |
441 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
442 | 1.41k | value = fuzzed_data.ConsumeIntegralInRange(0, 0x03 + 1); |
443 | 1.41k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
444 | 1.41k | ndpi_set_config(ndpi_info_mod, NULL, "dpi.guess_on_giveup", cfg_value); |
445 | 1.41k | } |
446 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
447 | 1.51k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
448 | 1.51k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
449 | 1.51k | ndpi_set_config(ndpi_info_mod, NULL, "dpi.guess_ip_before_port", cfg_value); |
450 | 1.51k | } |
451 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
452 | 1.42k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
453 | 1.42k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
454 | 1.42k | ndpi_set_config(ndpi_info_mod, NULL, "dpi.compute_entropy", cfg_value); |
455 | 1.42k | } |
456 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
457 | 1.41k | value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 + 1); |
458 | 1.41k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
459 | 1.41k | ndpi_set_config(ndpi_info_mod, NULL, "dpi.address_cache_size", cfg_value); |
460 | 1.41k | } |
461 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
462 | 1.48k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
463 | 1.48k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
464 | 1.48k | ndpi_set_config(ndpi_info_mod, NULL, "hostname_dns_check", cfg_value); |
465 | 1.48k | } |
466 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
467 | 1.43k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
468 | 1.43k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
469 | 1.43k | ndpi_set_config(ndpi_info_mod, NULL, "fpc", cfg_value); |
470 | 1.43k | } |
471 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
472 | 1.44k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
473 | 1.44k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
474 | 1.44k | ndpi_set_config(ndpi_info_mod, NULL, "metadata.tcp_fingerprint", cfg_value); |
475 | 1.44k | } |
476 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
477 | 1.48k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
478 | 1.48k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
479 | 1.48k | ndpi_set_config(ndpi_info_mod, NULL, "metadata.tcp_fingerprint_raw", cfg_value); |
480 | 1.48k | } |
481 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
482 | 1.55k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
483 | 1.55k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
484 | 1.55k | ndpi_set_config(ndpi_info_mod, NULL, "metadata.tcp_fingerprint_format", cfg_value); |
485 | 1.55k | } |
486 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
487 | 1.52k | pid = fuzzed_data.ConsumeIntegralInRange<u_int16_t>(0, NDPI_MAX_RISK + 1); /* + 1 to trigger invalid pid */ |
488 | 1.52k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
489 | 1.52k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
490 | 1.52k | if(fuzzed_data.ConsumeBool() && pid < NDPI_MAX_RISK) |
491 | 864 | snprintf(cfg_param, sizeof(cfg_param), "flow_risk.%s", ndpi_risk_shortnames[pid]); |
492 | 664 | else |
493 | 664 | snprintf(cfg_param, sizeof(cfg_param), "flow_risk.%d", pid); |
494 | 1.52k | ndpi_set_config(ndpi_info_mod, NULL, cfg_param, cfg_value); |
495 | 1.52k | ndpi_get_config(ndpi_info_mod, NULL, cfg_param, cfg_value, sizeof(cfg_value)); |
496 | | |
497 | 1.52k | if(fuzzed_data.ConsumeBool() && pid < NDPI_MAX_RISK) |
498 | 814 | snprintf(cfg_param, sizeof(cfg_param), "flow_risk.%s.info", ndpi_risk_shortnames[pid]); |
499 | 714 | else |
500 | 714 | snprintf(cfg_param, sizeof(cfg_param), "flow_risk.%d.info", pid); |
501 | 1.52k | ndpi_set_config(ndpi_info_mod, NULL, cfg_param, cfg_value); |
502 | 1.52k | ndpi_get_config(ndpi_info_mod, NULL, cfg_param, cfg_value, sizeof(cfg_value)); |
503 | 1.52k | } |
504 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
505 | 1.46k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
506 | 1.46k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
507 | 1.46k | ndpi_set_config(ndpi_info_mod, NULL, "flow_risk_lists.load", cfg_value); |
508 | 1.46k | } |
509 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
510 | 1.48k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
511 | 1.48k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
512 | 1.48k | ndpi_set_config(ndpi_info_mod, NULL, "flow_risk.anonymous_subscriber.list.icloudprivaterelay.load", cfg_value); |
513 | 1.48k | } |
514 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
515 | 1.47k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
516 | 1.47k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
517 | 1.47k | ndpi_set_config(ndpi_info_mod, NULL, "flow_risk.anonymous_subscriber.list.protonvpn.load", cfg_value); |
518 | 1.47k | } |
519 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
520 | 1.46k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
521 | 1.46k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
522 | 1.46k | ndpi_set_config(ndpi_info_mod, NULL, "flow_risk.crawler_bot.list.load", cfg_value); |
523 | 1.46k | } |
524 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
525 | 1.48k | ndpi_set_config(ndpi_info_mod, NULL, "filename.config", fuzzed_data.ConsumeBool() ? NULL : (char *)"config.txt"); |
526 | 1.48k | ndpi_get_config(ndpi_info_mod, NULL, "filename.config", cfg_value, sizeof(cfg_value)); |
527 | 1.48k | } |
528 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
529 | 1.44k | value = fuzzed_data.ConsumeIntegralInRange(0, 3 + 1); |
530 | 1.44k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
531 | 1.44k | ndpi_set_config(ndpi_info_mod, NULL, "log.level", cfg_value); |
532 | 1.44k | } |
533 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
534 | 1.39k | value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 / 2); /* max / 2 instead of max + 1 to avoid oom on oss-fuzzer */ |
535 | 1.39k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
536 | 1.39k | ndpi_set_config(ndpi_info_mod, NULL, "lru.ookla.size", cfg_value); |
537 | 1.39k | } |
538 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
539 | 1.29k | value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 + 1); |
540 | 1.29k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
541 | 1.29k | ndpi_set_config(ndpi_info_mod, NULL, "lru.ookla.ttl", cfg_value); |
542 | 1.29k | } |
543 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
544 | 1.29k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
545 | 1.29k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
546 | 1.29k | ndpi_set_config(ndpi_info_mod, NULL, "lru.ookla.scope", cfg_value); |
547 | 1.29k | } |
548 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
549 | 1.41k | value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 / 2); /* max / 2 instead of max + 1 to avoid oom on oss-fuzzer */ |
550 | 1.41k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
551 | 1.41k | ndpi_set_config(ndpi_info_mod, NULL, "lru.bittorrent.size", cfg_value); |
552 | 1.41k | } |
553 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
554 | 1.25k | value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 + 1); |
555 | 1.25k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
556 | 1.25k | ndpi_set_config(ndpi_info_mod, NULL, "lru.bittorrent.ttl", cfg_value); |
557 | 1.25k | } |
558 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
559 | 1.17k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
560 | 1.17k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
561 | 1.17k | ndpi_set_config(ndpi_info_mod, NULL, "lru.bittorrent.scope", cfg_value); |
562 | 1.17k | } |
563 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
564 | 1.24k | value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 / 2); /* max / 2 instead of max + 1 to avoid oom on oss-fuzzer */ |
565 | 1.24k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
566 | 1.24k | ndpi_set_config(ndpi_info_mod, NULL, "lru.stun.size", cfg_value); |
567 | 1.24k | } |
568 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
569 | 1.13k | value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 + 1); |
570 | 1.13k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
571 | 1.13k | ndpi_set_config(ndpi_info_mod, NULL, "lru.stun.ttl", cfg_value); |
572 | 1.13k | } |
573 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
574 | 1.18k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
575 | 1.18k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
576 | 1.18k | ndpi_set_config(ndpi_info_mod, NULL, "lru.stun.scope", cfg_value); |
577 | 1.18k | } |
578 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
579 | 1.15k | value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 / 2); /* max / 2 instead of max + 1 to avoid oom on oss-fuzzer */ |
580 | 1.15k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
581 | 1.15k | ndpi_set_config(ndpi_info_mod, NULL, "lru.tls_cert.size", cfg_value); |
582 | 1.15k | } |
583 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
584 | 1.14k | value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 + 1); |
585 | 1.14k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
586 | 1.14k | ndpi_set_config(ndpi_info_mod, NULL, "lru.tls_cert.ttl", cfg_value); |
587 | 1.14k | } |
588 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
589 | 1.22k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
590 | 1.22k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
591 | 1.22k | ndpi_set_config(ndpi_info_mod, NULL, "lru.tls_cert.scope", cfg_value); |
592 | 1.22k | } |
593 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
594 | 1.22k | value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 / 2); /* max / 2 instead of max + 1 to avoid oom on oss-fuzzer */ |
595 | 1.22k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
596 | 1.22k | ndpi_set_config(ndpi_info_mod, NULL, "lru.mining.size", cfg_value); |
597 | 1.22k | } |
598 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
599 | 1.18k | value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 + 1); |
600 | 1.18k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
601 | 1.18k | ndpi_set_config(ndpi_info_mod, NULL, "lru.mining.ttl", cfg_value); |
602 | 1.18k | } |
603 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
604 | 1.29k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
605 | 1.29k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
606 | 1.29k | ndpi_set_config(ndpi_info_mod, NULL, "lru.mining.scope", cfg_value); |
607 | 1.29k | } |
608 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
609 | 1.30k | value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 / 2); /* max / 2 instead of max + 1 to avoid oom on oss-fuzzer */ |
610 | 1.30k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
611 | 1.30k | ndpi_set_config(ndpi_info_mod, NULL, "lru.msteams.size", cfg_value); |
612 | 1.30k | } |
613 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
614 | 1.28k | value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 + 1); |
615 | 1.28k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
616 | 1.28k | ndpi_set_config(ndpi_info_mod, NULL, "lru.msteams.ttl", cfg_value); |
617 | 1.28k | } |
618 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
619 | 1.18k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
620 | 1.18k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
621 | 1.18k | ndpi_set_config(ndpi_info_mod, NULL, "lru.msteams.scope", cfg_value); |
622 | 1.18k | } |
623 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
624 | 1.29k | value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 / 2); /* max / 2 instead of max + 1 to avoid oom on oss-fuzzer */ |
625 | 1.29k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
626 | 1.29k | ndpi_set_config(ndpi_info_mod, NULL, "lru.fpc_dns.size", cfg_value); |
627 | 1.29k | } |
628 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
629 | 1.22k | value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 + 1); |
630 | 1.22k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
631 | 1.22k | ndpi_set_config(ndpi_info_mod, NULL, "lru.fpc_dns.ttl", cfg_value); |
632 | 1.22k | } |
633 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
634 | 1.31k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
635 | 1.31k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
636 | 1.31k | ndpi_set_config(ndpi_info_mod, NULL, "lru.fpc_dns.scope", cfg_value); |
637 | 1.31k | } |
638 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
639 | 1.24k | value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 / 2); /* max / 2 instead of max + 1 to avoid oom on oss-fuzzer */ |
640 | 1.24k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
641 | 1.24k | ndpi_set_config(ndpi_info_mod, NULL, "lru.signal.size", cfg_value); |
642 | 1.24k | } |
643 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
644 | 1.27k | value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 + 1); |
645 | 1.27k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
646 | 1.27k | ndpi_set_config(ndpi_info_mod, NULL, "lru.signal.ttl", cfg_value); |
647 | 1.27k | } |
648 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
649 | 1.27k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
650 | 1.27k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
651 | 1.27k | ndpi_set_config(ndpi_info_mod, NULL, "lru.signal.scope", cfg_value); |
652 | 1.27k | } |
653 | | /* Configure one cache via index */ |
654 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
655 | 1.24k | idx = fuzzed_data.ConsumeIntegralInRange(0, static_cast<int>(NDPI_LRUCACHE_MAX)); |
656 | 1.24k | name = ndpi_lru_cache_idx_to_name(static_cast<lru_cache_type>(idx)); |
657 | 1.24k | if(name) { |
658 | 1.24k | value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 / 2); /* max / 2 instead of max + 1 to avoid oom on oss-fuzzer */ |
659 | 1.24k | snprintf(cfg_param, sizeof(cfg_param), "lru.%s.size", name); |
660 | 1.24k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
661 | 1.24k | ndpi_set_config(ndpi_info_mod, NULL, cfg_param, cfg_value); |
662 | 1.24k | ndpi_get_config(ndpi_info_mod, NULL, cfg_param, cfg_value, sizeof(cfg_value)); |
663 | 1.24k | value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 + 1); |
664 | 1.24k | snprintf(cfg_param, sizeof(cfg_param), "lru.%s.ttl", name); |
665 | 1.24k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
666 | 1.24k | ndpi_set_config(ndpi_info_mod, NULL, cfg_param, cfg_value); |
667 | 1.24k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
668 | 1.24k | snprintf(cfg_param, sizeof(cfg_param), "lru.%s.scope", name); |
669 | 1.24k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
670 | 1.24k | ndpi_set_config(ndpi_info_mod, NULL, cfg_param, cfg_value); |
671 | 1.24k | ndpi_get_config(ndpi_info_mod, NULL, cfg_param, cfg_value, sizeof(cfg_value)); |
672 | 1.24k | } |
673 | 1.24k | } |
674 | | /* Invalid parameter */ |
675 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
676 | 1.29k | value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); |
677 | 1.29k | snprintf(cfg_value, sizeof(cfg_value), "%d", value); |
678 | 1.29k | ndpi_set_config(ndpi_info_mod, NULL, "foo", cfg_value); |
679 | 1.29k | ndpi_get_config(ndpi_info_mod, NULL, "foo", cfg_value, sizeof(cfg_value)); |
680 | 1.29k | } |
681 | | /* Invalid value */ |
682 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
683 | 1.42k | snprintf(cfg_value, sizeof(cfg_value), "%s", "jjj"); |
684 | 1.42k | ndpi_set_config(ndpi_info_mod, NULL, "lru.stun.ttl", cfg_value); |
685 | 1.42k | ndpi_get_config(ndpi_info_mod, NULL, "lru.stun.ttl", cfg_value, sizeof(cfg_value)); |
686 | 1.42k | } |
687 | | |
688 | 7.75k | ndpi_add_host_risk_mask(ndpi_info_mod, |
689 | 7.75k | (char *)fuzzed_data.ConsumeBytesAsString(32).c_str(), |
690 | 7.75k | static_cast<ndpi_risk>(fuzzed_data.ConsumeIntegral<u_int64_t>())); |
691 | | |
692 | 7.75k | ret = ndpi_finalize_initialization(ndpi_info_mod); |
693 | 7.75k | if(ret != 0) { |
694 | 524 | ndpi_exit_detection_module(ndpi_info_mod); |
695 | 524 | ndpi_info_mod = NULL; |
696 | 524 | } |
697 | | |
698 | | /* Random protocol configuration */ |
699 | 7.75k | pid = fuzzed_data.ConsumeIntegralInRange<u_int16_t>(0, ndpi_get_num_protocols(ndpi_info_mod) + 1); /* + 1 to trigger invalid pid */ |
700 | 7.75k | protoname = ndpi_get_proto_by_id(ndpi_info_mod, pid); |
701 | 7.75k | if (protoname) { |
702 | 7.18k | ndpi_get_proto_by_name(ndpi_info_mod, protoname); |
703 | | |
704 | 7.18k | pid2 = fuzzed_data.ConsumeIntegralInRange<u_int16_t>(0, ndpi_get_num_protocols(ndpi_info_mod) + 1); /* + 1 to trigger invalid pid */ |
705 | 7.18k | protoname2 = ndpi_get_proto_by_id(ndpi_info_mod, pid2); |
706 | 7.18k | if(protoname2) { |
707 | 7.15k | snprintf(pids_name, sizeof(pids_name), "%s.%s", protoname, protoname2); |
708 | 7.15k | pids_name[sizeof(pids_name) - 1] = '\0'; |
709 | 7.15k | ndpi_get_protocol_by_name(ndpi_info_mod, pids_name); |
710 | 7.15k | } |
711 | 7.18k | } |
712 | 7.75k | ndpi_map_user_proto_id_to_ndpi_id(ndpi_info_mod, pid); |
713 | 7.75k | ndpi_map_ndpi_id_to_user_proto_id(ndpi_info_mod, pid); |
714 | 7.75k | ndpi_set_proto_breed(ndpi_info_mod, pid, NDPI_PROTOCOL_SAFE); |
715 | 7.75k | ndpi_set_proto_category(ndpi_info_mod, pid, NDPI_PROTOCOL_CATEGORY_MEDIA); |
716 | 7.75k | ndpi_is_subprotocol_informative(ndpi_info_mod, pid); |
717 | 7.75k | ndpi_get_proto_breed(ndpi_info_mod, pid); |
718 | | |
719 | 7.75k | ndpi_get_proto_by_name(ndpi_info_mod, NULL); /* Error */ |
720 | 7.75k | ndpi_get_proto_by_name(ndpi_info_mod, "foo"); /* Invalid protocol */ |
721 | 7.75k | ndpi_get_proto_name(ndpi_info_mod, pid); |
722 | 7.75k | ndpi_find_protocol_qoe(ndpi_info_mod, pid); |
723 | | |
724 | 7.75k | ndpi_ips_match(fuzzed_data.ConsumeIntegral<u_int32_t>(), |
725 | 7.75k | fuzzed_data.ConsumeIntegral<u_int32_t>(), |
726 | 7.75k | fuzzed_data.ConsumeIntegral<u_int32_t>(), |
727 | 7.75k | fuzzed_data.ConsumeIntegralInRange(0,32)); |
728 | | |
729 | 7.75k | struct in_addr pin; |
730 | 7.75k | struct in6_addr pin6; |
731 | 7.75k | u_int16_t suffix_id; |
732 | | |
733 | 7.75k | pin.s_addr = fuzzed_data.ConsumeIntegral<u_int32_t>(); |
734 | 7.75k | ndpi_network_port_ptree_match(ndpi_info_mod, &pin, fuzzed_data.ConsumeIntegral<u_int16_t>()); |
735 | 131k | for(i = 0; i < 16; i++) |
736 | 124k | pin6.s6_addr[i] = fuzzed_data.ConsumeIntegral<u_int8_t>(); |
737 | 7.75k | ndpi_network_port_ptree6_match(ndpi_info_mod, &pin6, fuzzed_data.ConsumeIntegral<u_int16_t>()); |
738 | 7.75k | ndpi_network_ptree6_match(ndpi_info_mod, &pin6); |
739 | | |
740 | 7.75k | ndpi_get_host_domain_suffix(ndpi_info_mod, fuzzed_data.ConsumeBool() ? NULL : "www.bbc.co.uk", &suffix_id); |
741 | 7.75k | ndpi_get_host_domain(ndpi_info_mod, fuzzed_data.ConsumeBool() ? NULL : "www.bbc.co.uk"); |
742 | | |
743 | | /* Custom category configuration */ |
744 | 7.75k | cat = fuzzed_data.ConsumeIntegralInRange(static_cast<int>(NDPI_PROTOCOL_CATEGORY_CUSTOM_1), |
745 | 7.75k | static_cast<int>(NDPI_PROTOCOL_NUM_CATEGORIES + 1)); /* + 1 to trigger invalid cat */ |
746 | 7.75k | ndpi_category_set_name(ndpi_info_mod, static_cast<ndpi_protocol_category_t>(cat), catname); |
747 | 7.75k | ndpi_is_custom_category(static_cast<ndpi_protocol_category_t>(cat)); |
748 | 7.75k | ndpi_category_get_name(ndpi_info_mod, static_cast<ndpi_protocol_category_t>(cat)); |
749 | 7.75k | ndpi_get_category_id(ndpi_info_mod, catname); |
750 | | |
751 | 7.75k | ndpi_tunnel2str(static_cast<ndpi_packet_tunnel>(fuzzed_data.ConsumeIntegralInRange(static_cast<int>(ndpi_no_tunnel), |
752 | 7.75k | static_cast<int>(ndpi_gre_tunnel + 1)))); /* + 1 to trigger invalid value */ |
753 | | |
754 | 7.75k | ndpi_get_num_protocols(ndpi_info_mod); |
755 | 7.75k | ndpi_get_proto_defaults(ndpi_info_mod); |
756 | | |
757 | 7.75k | ndpi_dump_protocols(ndpi_info_mod, fuzzed_data.ConsumeBool() ? NULL : stdout); |
758 | 7.75k | if(fuzzed_data.ConsumeBool()) |
759 | 2.47k | ndpi_generate_options(fuzzed_data.ConsumeIntegralInRange(0, 4), fuzzed_data.ConsumeBool() ? NULL : stdout); |
760 | 7.75k | ndpi_dump_risks_score(fuzzed_data.ConsumeBool() ? NULL : stdout); |
761 | 7.75k | ndpi_dump_config(ndpi_info_mod, fuzzed_data.ConsumeBool() ? NULL : stdout); |
762 | | |
763 | 7.75k | char buf[8]; /* Too short in same cases... */ |
764 | 7.75k | if(fuzzed_data.ConsumeBool()) { |
765 | 2.26k | ndpi_ssl_version2str(buf, sizeof(buf), fuzzed_data.ConsumeIntegral<u_int16_t>(), &unused); |
766 | 2.26k | if(fuzzed_data.ConsumeBool()) |
767 | 1.44k | ndpi_multimedia_flowtype2str(buf, sizeof(buf), static_cast<ndpi_multimedia_flow_type>(fuzzed_data.ConsumeIntegral<u_int8_t>())); |
768 | 814 | else |
769 | 814 | ndpi_multimedia_flowtype2str(NULL, 0, static_cast<ndpi_multimedia_flow_type>(fuzzed_data.ConsumeIntegral<u_int8_t>())); |
770 | 2.26k | ndpi_get_ip_proto_name(fuzzed_data.ConsumeIntegral<u_int8_t>(), buf, sizeof(buf)); |
771 | 5.49k | } else { |
772 | 5.49k | ndpi_ssl_version2str(NULL, 0, fuzzed_data.ConsumeIntegral<u_int16_t>(), &unused); |
773 | 5.49k | ndpi_get_ip_proto_name(fuzzed_data.ConsumeIntegral<u_int8_t>(), NULL, 0); |
774 | 5.49k | } |
775 | 7.75k | ndpi_risk2str(static_cast<ndpi_risk_enum>(fuzzed_data.ConsumeIntegral<u_int64_t>())); |
776 | 7.75k | ndpi_risk2code(static_cast<ndpi_risk_enum>(fuzzed_data.ConsumeIntegral<u_int64_t>())); |
777 | 7.75k | ndpi_code2risk(ndpi_risk2code(static_cast<ndpi_risk_enum>(fuzzed_data.ConsumeIntegralInRange(0, NDPI_MAX_RISK + 1)))); |
778 | 7.75k | u_int16_t client_score, server_score; |
779 | 7.75k | ndpi_risk2score(static_cast<ndpi_risk_enum>(fuzzed_data.ConsumeIntegralInRange(0, NDPI_MAX_RISK + 1)), &client_score, &server_score); |
780 | 7.75k | ndpi_severity2str(static_cast<ndpi_risk_severity>(fuzzed_data.ConsumeIntegral<u_int8_t>())); |
781 | 7.75k | ndpi_risk2score(static_cast<ndpi_risk_enum>(fuzzed_data.ConsumeIntegral<u_int64_t>()), &unused1, &unused2); |
782 | 7.75k | ndpi_http_method2str(static_cast<ndpi_http_method>(fuzzed_data.ConsumeIntegral<u_int8_t>())); |
783 | 7.75k | ndpi_confidence_get_name(static_cast<ndpi_confidence_t>(fuzzed_data.ConsumeIntegral<u_int8_t>())); |
784 | 7.75k | ndpi_fpc_confidence_get_name(static_cast<ndpi_fpc_confidence_t>(fuzzed_data.ConsumeIntegral<u_int8_t>())); |
785 | 7.75k | ndpi_get_breed_by_name(ndpi_get_proto_breed_name(static_cast<ndpi_protocol_breed_t>(fuzzed_data.ConsumeIntegral<u_int8_t>()))); |
786 | 7.75k | ndpi_get_l4_proto_name(static_cast<ndpi_l4_proto_info>(fuzzed_data.ConsumeIntegral<u_int8_t>())); |
787 | 7.75k | proto1.app_protocol = fuzzed_data.ConsumeIntegral<u_int16_t>(); |
788 | 7.75k | proto1.master_protocol = fuzzed_data.ConsumeIntegral<u_int16_t>(); |
789 | 7.75k | ndpi_is_proto_unknown(proto1); |
790 | 7.75k | proto2.app_protocol = fuzzed_data.ConsumeIntegral<u_int16_t>(); |
791 | 7.75k | proto2.master_protocol = fuzzed_data.ConsumeIntegral<u_int16_t>(); |
792 | 7.75k | ndpi_is_proto_equals(proto1, proto2, fuzzed_data.ConsumeBool()); |
793 | | |
794 | 7.75k | ndpi_rtp_payload_type2str(fuzzed_data.ConsumeIntegral<u_int8_t>(), fuzzed_data.ConsumeIntegral<u_int32_t>()); |
795 | 7.75k | ndpi_rtp_payload_type2str(127, fuzzed_data.ConsumeIntegral<u_int32_t>()); |
796 | | |
797 | 7.75k | char buf2[16]; |
798 | 7.75k | ndpi_entropy2str(fuzzed_data.ConsumeFloatingPoint<float>(), fuzzed_data.ConsumeBool() ? buf2 : NULL, sizeof(buf2)); |
799 | | |
800 | | /* Basic code to try testing this "config" */ |
801 | 7.75k | bool_value = fuzzed_data.ConsumeBool(); |
802 | 7.75k | input_info.in_pkt_dir = fuzzed_data.ConsumeIntegralInRange(0,2); |
803 | 7.75k | input_info.seen_flow_beginning = !!fuzzed_data.ConsumeBool(); |
804 | 7.75k | memset(&flow, 0, sizeof(flow)); |
805 | 7.75k | std::vector<uint8_t>pkt = fuzzed_data.ConsumeRemainingBytes<uint8_t>(); |
806 | | |
807 | 7.75k | const u_int8_t *l4_return; |
808 | 7.75k | u_int16_t l4_len_return; |
809 | 7.75k | u_int8_t l4_protocol_return; |
810 | 7.75k | ndpi_detection_get_l4(pkt.data(), pkt.size(), &l4_return, &l4_len_return, &l4_protocol_return, NDPI_DETECTION_ONLY_IPV6); |
811 | 7.75k | ndpi_detection_get_l4(pkt.data(), pkt.size(), &l4_return, &l4_len_return, &l4_protocol_return, NDPI_DETECTION_ONLY_IPV4); |
812 | | |
813 | 7.75k | ndpi_detection_process_packet(ndpi_info_mod, &flow, pkt.data(), pkt.size(), 0, &input_info); |
814 | 7.75k | p = ndpi_detection_giveup(ndpi_info_mod, &flow, &protocol_was_guessed); |
815 | | |
816 | 7.75k | assert(p.proto.master_protocol == ndpi_get_flow_masterprotocol(&flow)); |
817 | 7.75k | assert(p.proto.app_protocol == ndpi_get_flow_appprotocol(&flow)); |
818 | 7.75k | assert(p.category == ndpi_get_flow_category(&flow)); |
819 | 7.75k | ndpi_is_master_only_protocol(ndpi_info_mod, p.proto.app_protocol); |
820 | 7.75k | ndpi_normalize_protocol(ndpi_info_mod, &p.proto); |
821 | 7.75k | assert(ndpi_stack_get_upper_proto(&p.protocol_stack) == ndpi_get_upper_proto(p)); |
822 | 7.75k | assert(ndpi_stack_get_lower_proto(&p.protocol_stack) == ndpi_get_lower_proto(p)); |
823 | 7.75k | ndpi_get_flow_error_code(&flow); |
824 | 7.75k | ndpi_get_flow_risk_info(&flow, out, sizeof(out), 1); |
825 | 7.75k | ndpi_get_flow_ndpi_proto(&flow, &p2); |
826 | 7.75k | ndpi_is_proto(p.proto, NDPI_PROTOCOL_TLS); |
827 | 7.75k | ndpi_http_method2str(flow.http.method); |
828 | 7.75k | ndpi_is_subprotocol_informative(ndpi_info_mod, p.proto.app_protocol); |
829 | 7.75k | ndpi_get_flow_name(bool_value ? &flow : NULL); |
830 | | /* ndpi_guess_undetected_protocol() is a "strange" function. Try fuzzing it, here */ |
831 | 7.75k | if(!ndpi_is_protocol_detected(p)) { |
832 | 4.79k | ndpi_guess_undetected_protocol(ndpi_info_mod, bool_value ? &flow : NULL, |
833 | 4.79k | flow.l4_proto); |
834 | 4.79k | if(!flow.is_ipv6) { |
835 | | /* Another "strange" function (ipv4 only): fuzz it here, for lack of a better alternative */ |
836 | 4.55k | ndpi_find_ipv4_category_userdata(ndpi_info_mod, flow.c_address.v4); |
837 | | |
838 | 4.55k | ndpi_search_tcp_or_udp_raw(ndpi_info_mod, NULL, ntohl(flow.c_address.v4), ntohl(flow.s_address.v4)); |
839 | | |
840 | 4.55k | ndpi_guess_undetected_protocol_v4(ndpi_info_mod, bool_value ? &flow : NULL, |
841 | 4.55k | flow.l4_proto, |
842 | 4.55k | flow.c_address.v4, flow.c_port, |
843 | 4.55k | flow.s_address.v4, flow.s_port); |
844 | 4.55k | } else { |
845 | 231 | ndpi_find_ipv6_category_userdata(ndpi_info_mod, bool_value ? NULL : (struct in6_addr *)flow.c_address.v6); |
846 | 231 | } |
847 | | /* Another "strange" function: fuzz it here, for lack of a better alternative */ |
848 | 4.79k | ndpi_search_tcp_or_udp(ndpi_info_mod, &flow); |
849 | 4.79k | } |
850 | 7.75k | if(!flow.is_ipv6) { |
851 | 7.50k | if(bool_value) |
852 | 2.23k | ndpi_network_risk_ptree_match(ndpi_info_mod, (struct in_addr *)&flow.c_address.v4); |
853 | | |
854 | 7.50k | ndpi_risk_params params[] = { { NDPI_PARAM_HOSTNAME, flow.host_server_name}, |
855 | 7.50k | { NDPI_PARAM_ISSUER_DN, (void *)("CN=813845657003339838, O=Code42, OU=TEST, ST=MN, C=US") /* from example/protos.txt */}, |
856 | 7.50k | { NDPI_PARAM_HOST_IPV4, &flow.c_address.v4} }; |
857 | 7.50k | ndpi_check_flow_risk_exceptions(ndpi_info_mod, 3, params); |
858 | | |
859 | 7.50k | ndpi_risk_params params2[] = { { NDPI_MAX_RISK_PARAM_ID, &flow.c_address.v4} }; /* Invalid */ |
860 | 7.50k | ndpi_check_flow_risk_exceptions(ndpi_info_mod, 1, params2); |
861 | 7.50k | } |
862 | | /* TODO: stub for geo stuff */ |
863 | 7.75k | ndpi_get_geoip_asn(ndpi_info_mod, NULL, NULL); |
864 | 7.75k | ndpi_get_geoip_aso(ndpi_info_mod, NULL, NULL, 0); |
865 | 7.75k | ndpi_get_geoip_country_continent(ndpi_info_mod, NULL, NULL, 0, NULL, 0); |
866 | 7.75k | ndpi_get_geoip_country_continent_city(ndpi_info_mod, NULL, NULL, 0, NULL, 0, NULL, 0); |
867 | | |
868 | 7.75k | ndpi_free_flow_data(&flow); |
869 | | |
870 | | /* Get some final stats */ |
871 | 77.5k | for(i = 0; i < NDPI_LRUCACHE_MAX + 1; i++) /* + 1 to test invalid type */ |
872 | 69.7k | ndpi_get_lru_cache_stats(g_ctx, ndpi_info_mod, static_cast<lru_cache_type>(i), &lru_stats); |
873 | 62.0k | for(i = 0; i < NDPI_PTREE_MAX + 1; i++) /* + 1 to test invalid type */ |
874 | 54.2k | ndpi_get_patricia_stats(ndpi_info_mod, static_cast<ptree_type>(i), &patricia_stats); |
875 | 7.75k | ndpi_patricia_get_stats(NULL, &patricia_stats); |
876 | 54.2k | for(i = 0; i < NDPI_AUTOMA_MAX + 1; i++) /* + 1 to test invalid type */ |
877 | 46.5k | ndpi_get_automa_stats(ndpi_info_mod, static_cast<automa_type>(i), &automa_stats); |
878 | | |
879 | | |
880 | 7.75k | ndpi_revision(); |
881 | 7.75k | ndpi_get_api_version(); |
882 | 7.75k | ndpi_get_gcrypt_version(); |
883 | | |
884 | 7.75k | ndpi_get_ndpi_detection_module_size(); |
885 | 7.75k | ndpi_detection_get_sizeof_ndpi_flow_struct(); |
886 | | |
887 | 7.75k | ndpi_get_tot_allocated_memory(); |
888 | 7.75k | ndpi_log_timestamp(log_ts, sizeof(log_ts)); |
889 | | |
890 | 7.75k | ndpi_free_geoip(ndpi_info_mod); |
891 | | |
892 | 7.75k | ndpi_exit_detection_module(ndpi_info_mod); |
893 | | |
894 | 7.75k | ndpi_global_deinit(g_ctx); |
895 | | |
896 | 7.75k | return 0; |
897 | 7.75k | } |