diff options
Diffstat (limited to 'fuzz/fuzz_config.cpp')
-rw-r--r-- | fuzz/fuzz_config.cpp | 197 |
1 files changed, 156 insertions, 41 deletions
diff --git a/fuzz/fuzz_config.cpp b/fuzz/fuzz_config.cpp index 3ffc2440b..5ea5dafc6 100644 --- a/fuzz/fuzz_config.cpp +++ b/fuzz/fuzz_config.cpp @@ -15,7 +15,6 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { u_int8_t protocol_was_guessed, unused; u_int32_t i, ret; u_int16_t bool_value; - NDPI_PROTOCOL_BITMASK enabled_bitmask; struct ndpi_lru_cache_stats lru_stats; struct ndpi_patricia_tree_stats patricia_stats; struct ndpi_automa_stats automa_stats; @@ -38,8 +37,11 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { u_int16_t unused1, unused2; ndpi_master_app_protocol proto1, proto2; - /* To allow memory allocation failures */ - fuzz_set_alloc_callbacks_and_seed(size); + /* Make allocation failures more unlikely */ + if(fuzzed_data.ConsumeBool()) + fuzz_set_alloc_callbacks_and_seed(size); + else + fuzz_set_alloc_callbacks_and_seed(0); if(fuzzed_data.ConsumeBool()) g_ctx = ndpi_global_init(); @@ -50,19 +52,6 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { set_ndpi_debug_function(ndpi_info_mod, NULL); - NDPI_BITMASK_SET_ALL(enabled_bitmask); - if(fuzzed_data.ConsumeBool()) { - NDPI_BITMASK_RESET(enabled_bitmask); - for(i = 0; i < NDPI_MAX_SUPPORTED_PROTOCOLS; i++) { - if(fuzzed_data.ConsumeBool()) - NDPI_BITMASK_ADD(enabled_bitmask, i); - } - } - if(ndpi_set_protocol_detection_bitmask2(ndpi_info_mod, &enabled_bitmask) == -1) { - ndpi_exit_detection_module(ndpi_info_mod); - ndpi_info_mod = NULL; - } - ndpi_set_user_data(ndpi_info_mod, (void *)0xabcdabcd); /* Random pointer */ ndpi_set_user_data(ndpi_info_mod, (void *)0xabcdabcd); /* Twice to trigger overwriting */ ndpi_get_user_data(ndpi_info_mod); @@ -119,6 +108,31 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { } if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, "http", "metadata.request_content_type", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, "http", "metadata.referer", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, "http", "metadata.host", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, "http", "metadata.username", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, "http", "metadata.password", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { value = fuzzed_data.ConsumeIntegralInRange(0, 365 + 1); snprintf(cfg_value, sizeof(cfg_value), "%d", value); ndpi_set_config(ndpi_info_mod, "tls", "certificate_expiration_threshold", cfg_value); @@ -146,6 +160,46 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { if(fuzzed_data.ConsumeBool()) { value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, "tls", "metadata.versions_supported", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, "tls", "metadata.alpn_negotiated", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, "tls", "metadata.cipher", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, "tls", "metadata.cert_server_names", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, "tls", "metadata.cert_validity", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, "tls", "metadata.cert_issuer", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, "tls", "metadata.cert_subject", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, "tls", "metadata.browser", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); ndpi_set_config(ndpi_info_mod, "tls", "metadata.ja3s_fingerprint", cfg_value); } if(fuzzed_data.ConsumeBool()) { @@ -236,6 +290,16 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { if(fuzzed_data.ConsumeBool()) { value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, "bittorrent", "metadata.hash", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, "ssdp", "metadata", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); ndpi_set_config(ndpi_info_mod, "dns", "subclassification", cfg_value); } if(fuzzed_data.ConsumeBool()) { @@ -269,6 +333,11 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { ndpi_set_config(ndpi_info_mod, "rtp", "search_for_stun", cfg_value); } if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 255 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, "rtp", "max_packets_extra_dissection", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { value = fuzzed_data.ConsumeIntegralInRange(0, 0x01 + 1); snprintf(cfg_value, sizeof(cfg_value), "%d", value); ndpi_set_config(ndpi_info_mod, "openvpn", "dpi.heuristics", cfg_value); @@ -293,7 +362,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { ndpi_get_config(ndpi_info_mod, "any", "log", cfg_value, sizeof(cfg_value)); } if(fuzzed_data.ConsumeBool()) { - pid = fuzzed_data.ConsumeIntegralInRange<u_int16_t>(0, NDPI_MAX_SUPPORTED_PROTOCOLS + 1); /* + 1 to trigger invalid pid */ + pid = fuzzed_data.ConsumeIntegralInRange<u_int16_t>(0, ndpi_info_mod ? ndpi_info_mod->num_internal_protocols + 1 : 0); /* + 1 to trigger invalid pid */ value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); snprintf(cfg_value, sizeof(cfg_value), "%d", value); snprintf(cfg_proto, sizeof(cfg_proto), "%d", pid); @@ -308,7 +377,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { ndpi_get_config(ndpi_info_mod, "any", "ip_list.load", cfg_value, sizeof(cfg_value)); } if(fuzzed_data.ConsumeBool()) { - pid = fuzzed_data.ConsumeIntegralInRange<u_int16_t>(0, NDPI_MAX_SUPPORTED_PROTOCOLS + 1); /* + 1 to trigger invalid pid */ + pid = fuzzed_data.ConsumeIntegralInRange<u_int16_t>(0, ndpi_info_mod ? ndpi_info_mod->num_internal_protocols + 1 : 0); /* + 1 to trigger invalid pid */ value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); snprintf(cfg_value, sizeof(cfg_value), "%d", value); snprintf(cfg_proto, sizeof(cfg_proto), "%d", pid); @@ -316,13 +385,20 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { ndpi_get_config(ndpi_info_mod, cfg_proto, "ip_list.load", cfg_value, sizeof(cfg_value)); } if(fuzzed_data.ConsumeBool()) { - pid = fuzzed_data.ConsumeIntegralInRange<u_int16_t>(0, NDPI_MAX_SUPPORTED_PROTOCOLS + 1); /* + 1 to trigger invalid pid */ + pid = fuzzed_data.ConsumeIntegralInRange<u_int16_t>(0, ndpi_info_mod ? ndpi_info_mod->num_internal_protocols + 1 : 0); /* + 1 to trigger invalid pid */ value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); snprintf(cfg_value, sizeof(cfg_value), "%d", value); snprintf(cfg_proto, sizeof(cfg_proto), "%d", pid); ndpi_set_config(ndpi_info_mod, cfg_proto, "monitoring", cfg_value); } if(fuzzed_data.ConsumeBool()) { + pid = fuzzed_data.ConsumeIntegralInRange<u_int16_t>(0, ndpi_info_mod ? ndpi_info_mod->num_internal_protocols + 1 : 0); /* + 1 to trigger invalid pid */ + value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); + snprintf(cfg_proto, sizeof(cfg_proto), "%d", pid); + ndpi_set_config(ndpi_info_mod, cfg_proto, "enable", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { value = fuzzed_data.ConsumeIntegralInRange(0, 255 + 1); snprintf(cfg_value, sizeof(cfg_value), "%d", value); ndpi_set_config(ndpi_info_mod, NULL, "packets_limit_per_flow", cfg_value); @@ -393,6 +469,16 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { ndpi_set_config(ndpi_info_mod, NULL, "metadata.tcp_fingerprint", cfg_value); } if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, NULL, "metadata.tcp_fingerprint_raw", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, NULL, "metadata.tcp_fingerprint_format", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { pid = fuzzed_data.ConsumeIntegralInRange<u_int16_t>(0, NDPI_MAX_RISK + 1); /* + 1 to trigger invalid pid */ value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); snprintf(cfg_value, sizeof(cfg_value), "%d", value); @@ -402,6 +488,13 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { snprintf(cfg_param, sizeof(cfg_param), "flow_risk.%d", pid); ndpi_set_config(ndpi_info_mod, NULL, cfg_param, cfg_value); ndpi_get_config(ndpi_info_mod, NULL, cfg_param, cfg_value, sizeof(cfg_value)); + + if(fuzzed_data.ConsumeBool() && pid < NDPI_MAX_RISK) + snprintf(cfg_param, sizeof(cfg_param), "flow_risk.%s.info", ndpi_risk_shortnames[pid]); + else + snprintf(cfg_param, sizeof(cfg_param), "flow_risk.%d.info", pid); + ndpi_set_config(ndpi_info_mod, NULL, cfg_param, cfg_value); + ndpi_get_config(ndpi_info_mod, NULL, cfg_param, cfg_value, sizeof(cfg_value)); } if(fuzzed_data.ConsumeBool()) { value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); @@ -537,6 +630,21 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { snprintf(cfg_value, sizeof(cfg_value), "%d", value); ndpi_set_config(ndpi_info_mod, NULL, "lru.fpc_dns.scope", cfg_value); } + if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 / 2); /* max / 2 instead of max + 1 to avoid oom on oss-fuzzer */ + snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, NULL, "lru.signal.size", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 16777215 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, NULL, "lru.signal.ttl", cfg_value); + } + if(fuzzed_data.ConsumeBool()) { + value = fuzzed_data.ConsumeIntegralInRange(0, 1 + 1); + snprintf(cfg_value, sizeof(cfg_value), "%d", value); + ndpi_set_config(ndpi_info_mod, NULL, "lru.signal.scope", cfg_value); + } /* Configure one cache via index */ if(fuzzed_data.ConsumeBool()) { idx = fuzzed_data.ConsumeIntegralInRange(0, static_cast<int>(NDPI_LRUCACHE_MAX)); @@ -576,15 +684,19 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { (char *)fuzzed_data.ConsumeBytesAsString(32).c_str(), static_cast<ndpi_risk>(fuzzed_data.ConsumeIntegral<u_int64_t>())); - ndpi_finalize_initialization(ndpi_info_mod); + ret = ndpi_finalize_initialization(ndpi_info_mod); + if(ret != 0) { + ndpi_exit_detection_module(ndpi_info_mod); + ndpi_info_mod = NULL; + } /* Random protocol configuration */ - pid = fuzzed_data.ConsumeIntegralInRange<u_int16_t>(0, NDPI_MAX_SUPPORTED_PROTOCOLS + NDPI_MAX_NUM_CUSTOM_PROTOCOLS + 1); /* + 1 to trigger invalid pid */ + pid = fuzzed_data.ConsumeIntegralInRange<u_int16_t>(0, ndpi_get_num_protocols(ndpi_info_mod) + 1); /* + 1 to trigger invalid pid */ protoname = ndpi_get_proto_by_id(ndpi_info_mod, pid); if (protoname) { ndpi_get_proto_by_name(ndpi_info_mod, protoname); - pid2 = fuzzed_data.ConsumeIntegralInRange<u_int16_t>(0, NDPI_MAX_SUPPORTED_PROTOCOLS + NDPI_MAX_NUM_CUSTOM_PROTOCOLS + 1); /* + 1 to trigger invalid pid */ + pid2 = fuzzed_data.ConsumeIntegralInRange<u_int16_t>(0, ndpi_get_num_protocols(ndpi_info_mod) + 1); /* + 1 to trigger invalid pid */ protoname2 = ndpi_get_proto_by_id(ndpi_info_mod, pid2); if(protoname2) { snprintf(pids_name, sizeof(pids_name), "%s.%s", protoname, protoname2); @@ -596,17 +708,18 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { ndpi_map_ndpi_id_to_user_proto_id(ndpi_info_mod, pid); ndpi_set_proto_breed(ndpi_info_mod, pid, NDPI_PROTOCOL_SAFE); ndpi_set_proto_category(ndpi_info_mod, pid, NDPI_PROTOCOL_CATEGORY_MEDIA); - ndpi_is_subprotocol_informative(pid); + ndpi_is_subprotocol_informative(ndpi_info_mod, pid); ndpi_get_proto_breed(ndpi_info_mod, pid); - ndpi_port_range d_port[MAX_DEFAULT_PORTS] = {}; - ndpi_set_proto_defaults(ndpi_info_mod, 0, 0, NDPI_PROTOCOL_SAFE, pid, - protoname, NDPI_PROTOCOL_CATEGORY_UNSPECIFIED, - d_port, d_port); - ndpi_get_proto_by_name(ndpi_info_mod, NULL); /* Error */ ndpi_get_proto_by_name(ndpi_info_mod, "foo"); /* Invalid protocol */ ndpi_get_proto_name(ndpi_info_mod, pid); + ndpi_find_protocol_qoe(ndpi_info_mod, pid); + + ndpi_ips_match(fuzzed_data.ConsumeIntegral<u_int32_t>(), + fuzzed_data.ConsumeIntegral<u_int32_t>(), + fuzzed_data.ConsumeIntegral<u_int32_t>(), + fuzzed_data.ConsumeIntegralInRange(0,32)); struct in_addr pin; struct in6_addr pin6; @@ -617,6 +730,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { for(i = 0; i < 16; i++) pin6.s6_addr[i] = fuzzed_data.ConsumeIntegral<u_int8_t>(); ndpi_network_port_ptree6_match(ndpi_info_mod, &pin6, fuzzed_data.ConsumeIntegral<u_int16_t>()); + ndpi_network_ptree6_match(ndpi_info_mod, &pin6); ndpi_get_host_domain_suffix(ndpi_info_mod, fuzzed_data.ConsumeBool() ? NULL : "www.bbc.co.uk", &suffix_id); ndpi_get_host_domain(ndpi_info_mod, fuzzed_data.ConsumeBool() ? NULL : "www.bbc.co.uk"); @@ -632,15 +746,12 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { ndpi_tunnel2str(static_cast<ndpi_packet_tunnel>(fuzzed_data.ConsumeIntegralInRange(static_cast<int>(ndpi_no_tunnel), static_cast<int>(ndpi_gre_tunnel + 1)))); /* + 1 to trigger invalid value */ - ndpi_get_num_supported_protocols(ndpi_info_mod); + ndpi_get_num_protocols(ndpi_info_mod); ndpi_get_proto_defaults(ndpi_info_mod); - ndpi_get_ndpi_num_custom_protocols(ndpi_info_mod); - ndpi_get_ndpi_num_supported_protocols(ndpi_info_mod); - - ndpi_self_check_host_match(stdout); ndpi_dump_protocols(ndpi_info_mod, fuzzed_data.ConsumeBool() ? NULL : stdout); - ndpi_generate_options(fuzzed_data.ConsumeIntegralInRange(0, 4), fuzzed_data.ConsumeBool() ? NULL : stdout); + if(fuzzed_data.ConsumeBool()) + ndpi_generate_options(fuzzed_data.ConsumeIntegralInRange(0, 4), fuzzed_data.ConsumeBool() ? NULL : stdout); ndpi_dump_risks_score(fuzzed_data.ConsumeBool() ? NULL : stdout); ndpi_dump_config(ndpi_info_mod, fuzzed_data.ConsumeBool() ? NULL : stdout); @@ -659,12 +770,14 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { ndpi_risk2str(static_cast<ndpi_risk_enum>(fuzzed_data.ConsumeIntegral<u_int64_t>())); ndpi_risk2code(static_cast<ndpi_risk_enum>(fuzzed_data.ConsumeIntegral<u_int64_t>())); ndpi_code2risk(ndpi_risk2code(static_cast<ndpi_risk_enum>(fuzzed_data.ConsumeIntegralInRange(0, NDPI_MAX_RISK + 1)))); + u_int16_t client_score, server_score; + ndpi_risk2score(static_cast<ndpi_risk_enum>(fuzzed_data.ConsumeIntegralInRange(0, NDPI_MAX_RISK + 1)), &client_score, &server_score); ndpi_severity2str(static_cast<ndpi_risk_severity>(fuzzed_data.ConsumeIntegral<u_int8_t>())); ndpi_risk2score(static_cast<ndpi_risk_enum>(fuzzed_data.ConsumeIntegral<u_int64_t>()), &unused1, &unused2); ndpi_http_method2str(static_cast<ndpi_http_method>(fuzzed_data.ConsumeIntegral<u_int8_t>())); ndpi_confidence_get_name(static_cast<ndpi_confidence_t>(fuzzed_data.ConsumeIntegral<u_int8_t>())); ndpi_fpc_confidence_get_name(static_cast<ndpi_fpc_confidence_t>(fuzzed_data.ConsumeIntegral<u_int8_t>())); - ndpi_get_proto_breed_name(static_cast<ndpi_protocol_breed_t>(fuzzed_data.ConsumeIntegral<u_int8_t>())); + ndpi_get_breed_by_name(ndpi_get_proto_breed_name(static_cast<ndpi_protocol_breed_t>(fuzzed_data.ConsumeIntegral<u_int8_t>()))); ndpi_get_l4_proto_name(static_cast<ndpi_l4_proto_info>(fuzzed_data.ConsumeIntegral<u_int8_t>())); proto1.app_protocol = fuzzed_data.ConsumeIntegral<u_int16_t>(); proto1.master_protocol = fuzzed_data.ConsumeIntegral<u_int16_t>(); @@ -673,6 +786,9 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { proto2.master_protocol = fuzzed_data.ConsumeIntegral<u_int16_t>(); ndpi_is_proto_equals(proto1, proto2, fuzzed_data.ConsumeBool()); + ndpi_rtp_payload_type2str(fuzzed_data.ConsumeIntegral<u_int8_t>(), fuzzed_data.ConsumeIntegral<u_int32_t>()); + ndpi_rtp_payload_type2str(127, fuzzed_data.ConsumeIntegral<u_int32_t>()); + char buf2[16]; ndpi_entropy2str(fuzzed_data.ConsumeFloatingPoint<float>(), fuzzed_data.ConsumeBool() ? buf2 : NULL, sizeof(buf2)); @@ -695,6 +811,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { assert(p.proto.master_protocol == ndpi_get_flow_masterprotocol(&flow)); assert(p.proto.app_protocol == ndpi_get_flow_appprotocol(&flow)); assert(p.category == ndpi_get_flow_category(&flow)); + ndpi_is_master_only_protocol(ndpi_info_mod, p.proto.app_protocol); + ndpi_normalize_protocol(ndpi_info_mod, &p.proto); ndpi_get_lower_proto(p); ndpi_get_upper_proto(p); ndpi_get_flow_error_code(&flow); @@ -702,10 +820,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { ndpi_get_flow_ndpi_proto(&flow, &p2); ndpi_is_proto(p.proto, NDPI_PROTOCOL_TLS); ndpi_http_method2str(flow.http.method); - ndpi_is_subprotocol_informative(p.proto.app_protocol); - ndpi_get_http_method(bool_value ? &flow : NULL); - ndpi_get_http_url(&flow); - ndpi_get_http_content_type(&flow); + ndpi_is_subprotocol_informative(ndpi_info_mod, p.proto.app_protocol); ndpi_get_flow_name(bool_value ? &flow : NULL); /* ndpi_guess_undetected_protocol() is a "strange" function. Try fuzzing it, here */ if(!ndpi_is_protocol_detected(p)) { @@ -741,7 +856,9 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { } /* TODO: stub for geo stuff */ ndpi_get_geoip_asn(ndpi_info_mod, NULL, NULL); + ndpi_get_geoip_aso(ndpi_info_mod, NULL, NULL, 0); ndpi_get_geoip_country_continent(ndpi_info_mod, NULL, NULL, 0, NULL, 0); + ndpi_get_geoip_country_continent_city(ndpi_info_mod, NULL, NULL, 0, NULL, 0, NULL, 0); ndpi_free_flow_data(&flow); @@ -761,8 +878,6 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { ndpi_get_ndpi_detection_module_size(); ndpi_detection_get_sizeof_ndpi_flow_struct(); - ndpi_detection_get_sizeof_ndpi_flow_tcp_struct(); - ndpi_detection_get_sizeof_ndpi_flow_udp_struct(); ndpi_get_tot_allocated_memory(); ndpi_log_timestamp(log_ts, sizeof(log_ts)); |