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