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