Coverage Report

Created: 2025-09-17 07:06

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