mirror of
https://github.com/vel21ripn/nDPI.git
synced 2026-04-28 15:09:47 +00:00
Five fuzzers (fuzz_process_packet, fuzz_ndpi_reader, fuzz_ndpi_reader_alloc_fail, fuzz_ndpi_reader_payload_analyzer, and fuzz_tls_certificate) were not rebuilding when libndpi.a changed because their explicit DEPENDENCIES declarations only included dictionary files. In Automake, when prog_DEPENDENCIES is explicitly set, it overrides the automatic dependency generation from LDADD. This caused these fuzzers to miss the library dependency that the other 55 fuzzers correctly inherited. This commit adds $(top_builddir)/src/lib/libndpi.a to the DEPENDENCIES for all 5 affected fuzzers, ensuring they rebuild whenever the library changes. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
407 lines
21 KiB
Makefile
407 lines
21 KiB
Makefile
bin_PROGRAMS = fuzz_process_packet fuzz_ndpi_reader fuzz_ndpi_reader_alloc_fail fuzz_ndpi_reader_payload_analyzer fuzz_quic_get_crypto_data fuzz_config fuzz_community_id fuzz_serialization fuzz_tls_certificate fuzz_dga fuzz_is_stun_udp fuzz_is_stun_tcp
|
|
#Alghoritms
|
|
bin_PROGRAMS += fuzz_alg_ranking fuzz_alg_bins fuzz_alg_hll fuzz_alg_hw_rsi_outliers_da fuzz_alg_jitter fuzz_alg_ses_des fuzz_alg_crc32_md5 fuzz_alg_bytestream fuzz_alg_shoco fuzz_alg_memmem fuzz_alg_strnstr fuzz_alg_quick_encryption
|
|
#Data structures
|
|
bin_PROGRAMS += fuzz_ds_patricia fuzz_ds_ahocorasick fuzz_ds_libcache fuzz_ds_tree fuzz_ds_ptree fuzz_ds_hash fuzz_ds_cmsketch fuzz_ds_bitmap64_fuse fuzz_ds_domain_classify fuzz_ds_kdtree fuzz_ds_btree fuzz_ds_address_cache fuzz_ds_bitmap fuzz_ds_filter
|
|
#Third party
|
|
bin_PROGRAMS += fuzz_libinjection fuzz_binaryfusefilter
|
|
#Internal crypto
|
|
bin_PROGRAMS += fuzz_gcrypt_light fuzz_gcrypt_aes fuzz_gcrypt_gcm fuzz_gcrypt_cipher
|
|
#Configuration files
|
|
bin_PROGRAMS += fuzz_filecfg_protocols fuzz_filecfg_categories fuzz_filecfg_malicious_sha1 fuzz_filecfg_malicious_ja4 fuzz_filecfg_risk_domains fuzz_filecfg_config fuzz_filecfg_category
|
|
#Reader utils
|
|
bin_PROGRAMS += fuzz_readerutils_workflow
|
|
#Mutators
|
|
bin_PROGRAMS += fuzz_ndpi_reader_pl7m fuzz_ndpi_reader_pl7m_64k fuzz_ndpi_reader_pl7m_simplest fuzz_ndpi_reader_pl7m_internal fuzz_ndpi_reader_pl7m_simplest_internal fuzz_ndpi_reader_pl7m_only_subclassification fuzz_ndpi_reader_pl7m_randomize_ports
|
|
|
|
#Common flags
|
|
AM_CPPFLAGS = -I $(top_srcdir)/src/include -I $(top_srcdir)/src/lib/third_party/include/ @NDPI_CFLAGS@
|
|
AM_LDFLAGS = $(LIBS)
|
|
# Use AM_CFLAGS for package flags, never modify or embed user's CFLAGS
|
|
AM_CFLAGS = @NDPI_CFLAGS@
|
|
AM_CXXFLAGS = @NDPI_CFLAGS@
|
|
LDADD = $(top_builddir)/src/lib/libndpi.a $(PCAP_LIB) $(ADDITIONAL_LIBS)
|
|
if HAS_FUZZLDFLAGS
|
|
AM_CFLAGS += $(LIB_FUZZING_ENGINE)
|
|
AM_LDFLAGS += $(LIB_FUZZING_ENGINE)
|
|
AM_CXXFLAGS += $(LIB_FUZZING_ENGINE)
|
|
endif
|
|
|
|
# Common linker command template for all fuzz targets
|
|
# All fuzz targets need to use CXX as linker (required by libFuzzer)
|
|
FUZZ_LINK_COMMAND = $(AM_V_CCLD)$(LIBTOOL) $(AM_V_lt) --silent --tag=CC $(AM_LIBTOOLFLAGS) \
|
|
$(LIBTOOLFLAGS) --mode=link $(CXX) $(AM_CXXFLAGS) $(CXXFLAGS) \
|
|
$($@_LDFLAGS) @NDPI_LDFLAGS@ $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
|
|
|
# Define sources and flags for each fuzz target
|
|
# Note: Fuzz targets with dictionaries should depend on them for proper rebuilds
|
|
fuzz_process_packet_SOURCES = fuzz_process_packet.c fuzz_common_code.c
|
|
fuzz_process_packet_LINK = $(FUZZ_LINK_COMMAND)
|
|
fuzz_process_packet_DEPENDENCIES = $(top_builddir)/src/lib/libndpi.a $(srcdir)/dictionary.dict
|
|
|
|
fuzz_ndpi_reader_SOURCES = fuzz_ndpi_reader.c fuzz_common_code.c $(top_srcdir)/example/reader_util.c
|
|
fuzz_ndpi_reader_CFLAGS = $(AM_CFLAGS) -I$(top_srcdir)/example/
|
|
fuzz_ndpi_reader_LINK = $(FUZZ_LINK_COMMAND)
|
|
fuzz_ndpi_reader_DEPENDENCIES = $(top_builddir)/src/lib/libndpi.a $(srcdir)/dictionary.dict
|
|
|
|
fuzz_ndpi_reader_alloc_fail_SOURCES = fuzz_ndpi_reader_alloc_fail.c fuzz_common_code.c $(top_srcdir)/example/reader_util.c
|
|
fuzz_ndpi_reader_alloc_fail_CFLAGS = $(AM_CFLAGS) -I$(top_srcdir)/example/ -DENABLE_MEM_ALLOC_FAILURES -DCRYPT_FORCE_NO_AESNI -DENABLE_FINGERPRINT_FP
|
|
fuzz_ndpi_reader_alloc_fail_LINK = $(FUZZ_LINK_COMMAND)
|
|
fuzz_ndpi_reader_alloc_fail_DEPENDENCIES = $(top_builddir)/src/lib/libndpi.a $(srcdir)/dictionary.dict
|
|
|
|
fuzz_ndpi_reader_payload_analyzer_SOURCES = fuzz_ndpi_reader_payload_analyzer.c fuzz_common_code.c $(top_srcdir)/example/reader_util.c
|
|
fuzz_ndpi_reader_payload_analyzer_CFLAGS = $(AM_CFLAGS) -I$(top_srcdir)/example/ -DENABLE_MEM_ALLOC_FAILURES -DENABLE_PAYLOAD_ANALYZER
|
|
fuzz_ndpi_reader_payload_analyzer_LINK = $(FUZZ_LINK_COMMAND)
|
|
fuzz_ndpi_reader_payload_analyzer_DEPENDENCIES = $(top_builddir)/src/lib/libndpi.a $(srcdir)/dictionary.dict
|
|
|
|
fuzz_quic_get_crypto_data_SOURCES = fuzz_quic_get_crypto_data.c fuzz_common_code.c
|
|
fuzz_quic_get_crypto_data_CFLAGS = $(AM_CFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_quic_get_crypto_data_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_config_SOURCES = fuzz_config.cpp fuzz_common_code.c
|
|
fuzz_config_CXXFLAGS = $(AM_CXXFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_config_CFLAGS = $(AM_CFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_config_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_community_id_SOURCES = fuzz_community_id.cpp fuzz_common_code.c
|
|
fuzz_community_id_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_serialization_SOURCES = fuzz_serialization.cpp fuzz_common_code.c
|
|
fuzz_serialization_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_alg_ranking_SOURCES = fuzz_alg_ranking.cpp fuzz_common_code.c
|
|
fuzz_alg_ranking_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_alg_bins_SOURCES = fuzz_alg_bins.cpp fuzz_common_code.c
|
|
fuzz_alg_bins_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_alg_hll_SOURCES = fuzz_alg_hll.cpp fuzz_common_code.c
|
|
fuzz_alg_hll_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_alg_hw_rsi_outliers_da_SOURCES = fuzz_alg_hw_rsi_outliers_da.cpp fuzz_common_code.c
|
|
fuzz_alg_hw_rsi_outliers_da_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_alg_jitter_SOURCES = fuzz_alg_jitter.cpp fuzz_common_code.c
|
|
fuzz_alg_jitter_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_alg_crc32_md5_SOURCES = fuzz_alg_crc32_md5.c
|
|
fuzz_alg_crc32_md5_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_alg_bytestream_SOURCES = fuzz_alg_bytestream.c
|
|
fuzz_alg_bytestream_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_alg_shoco_SOURCES = fuzz_alg_shoco.cpp
|
|
fuzz_alg_shoco_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_alg_memmem_SOURCES = fuzz_alg_memmem.cpp
|
|
fuzz_alg_memmem_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_alg_strnstr_SOURCES = fuzz_alg_strnstr.cpp
|
|
fuzz_alg_strnstr_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_alg_quick_encryption_SOURCES = fuzz_alg_quick_encryption.cpp fuzz_common_code.c
|
|
fuzz_alg_quick_encryption_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_alg_ses_des_SOURCES = fuzz_alg_ses_des.cpp fuzz_common_code.c
|
|
fuzz_alg_ses_des_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ds_patricia_SOURCES = fuzz_ds_patricia.cpp fuzz_common_code.c
|
|
fuzz_ds_patricia_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ds_ahocorasick_SOURCES = fuzz_ds_ahocorasick.cpp fuzz_common_code.c
|
|
fuzz_ds_ahocorasick_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ds_libcache_SOURCES = fuzz_ds_libcache.cpp fuzz_common_code.c
|
|
fuzz_ds_libcache_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ds_tree_SOURCES = fuzz_ds_tree.cpp fuzz_common_code.c
|
|
fuzz_ds_tree_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ds_ptree_SOURCES = fuzz_ds_ptree.cpp fuzz_common_code.c
|
|
fuzz_ds_ptree_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ds_hash_SOURCES = fuzz_ds_hash.cpp fuzz_common_code.c
|
|
fuzz_ds_hash_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ds_cmsketch_SOURCES = fuzz_ds_cmsketch.cpp fuzz_common_code.c
|
|
fuzz_ds_cmsketch_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ds_bitmap64_fuse_SOURCES = fuzz_ds_bitmap64_fuse.cpp fuzz_common_code.c
|
|
fuzz_ds_bitmap64_fuse_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ds_domain_classify_SOURCES = fuzz_ds_domain_classify.cpp fuzz_common_code.c
|
|
fuzz_ds_domain_classify_CXXFLAGS = $(AM_CXXFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_ds_domain_classify_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ds_kdtree_SOURCES = fuzz_ds_kdtree.cpp fuzz_common_code.c
|
|
fuzz_ds_kdtree_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ds_btree_SOURCES = fuzz_ds_btree.cpp fuzz_common_code.c
|
|
fuzz_ds_btree_CXXFLAGS = $(AM_CXXFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_ds_btree_CFLAGS = $(AM_CFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_ds_btree_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ds_address_cache_SOURCES = fuzz_ds_address_cache.cpp fuzz_common_code.c
|
|
fuzz_ds_address_cache_CXXFLAGS = $(AM_CXXFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_ds_address_cache_CFLAGS = $(AM_CFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_ds_address_cache_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ds_bitmap_SOURCES = fuzz_ds_bitmap.cpp fuzz_common_code.c
|
|
fuzz_ds_bitmap_CXXFLAGS = $(AM_CXXFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_ds_bitmap_CFLAGS = $(AM_CFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_ds_bitmap_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ds_filter_SOURCES = fuzz_ds_filter.cpp fuzz_common_code.c
|
|
fuzz_ds_filter_CXXFLAGS = $(AM_CXXFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_ds_filter_CFLAGS = $(AM_CFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_ds_filter_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_libinjection_SOURCES = fuzz_libinjection.c
|
|
fuzz_libinjection_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_binaryfusefilter_SOURCES = fuzz_binaryfusefilter.cpp fuzz_common_code.c
|
|
fuzz_binaryfusefilter_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_tls_certificate_SOURCES = fuzz_tls_certificate.c fuzz_common_code.c
|
|
fuzz_tls_certificate_CFLAGS = $(AM_CFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_tls_certificate_LINK = $(FUZZ_LINK_COMMAND)
|
|
fuzz_tls_certificate_DEPENDENCIES = $(top_builddir)/src/lib/libndpi.a $(srcdir)/dictionary_tls_certificate.dict
|
|
|
|
fuzz_dga_SOURCES = fuzz_dga.c fuzz_common_code.c
|
|
fuzz_dga_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_is_stun_udp_SOURCES = fuzz_is_stun.c fuzz_common_code.c
|
|
fuzz_is_stun_udp_CFLAGS = $(AM_CFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_is_stun_udp_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_is_stun_tcp_SOURCES = fuzz_is_stun_tcp.c fuzz_common_code.c
|
|
fuzz_is_stun_tcp_CFLAGS = $(AM_CFLAGS) -DNDPI_LIB_COMPILATION -DSTUN_TCP
|
|
fuzz_is_stun_tcp_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_gcrypt_light_SOURCES = fuzz_gcrypt_light.cpp fuzz_common_code.c
|
|
fuzz_gcrypt_light_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_gcrypt_aes_SOURCES = fuzz_gcrypt_aes.cpp
|
|
fuzz_gcrypt_aes_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_gcrypt_gcm_SOURCES = fuzz_gcrypt_gcm.cpp
|
|
fuzz_gcrypt_gcm_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_gcrypt_cipher_SOURCES = fuzz_gcrypt_cipher.cpp
|
|
fuzz_gcrypt_cipher_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_filecfg_protocols_SOURCES = fuzz_filecfg_protocols.c fuzz_common_code.c
|
|
fuzz_filecfg_protocols_CFLAGS = $(AM_CFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_filecfg_protocols_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_filecfg_categories_SOURCES = fuzz_filecfg_categories.c fuzz_common_code.c
|
|
fuzz_filecfg_categories_CFLAGS = $(AM_CFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_filecfg_categories_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_filecfg_malicious_sha1_SOURCES = fuzz_filecfg_malicious_sha1.c fuzz_common_code.c
|
|
fuzz_filecfg_malicious_sha1_CFLAGS = $(AM_CFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_filecfg_malicious_sha1_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_filecfg_malicious_ja4_SOURCES = fuzz_filecfg_malicious_ja4.c fuzz_common_code.c
|
|
fuzz_filecfg_malicious_ja4_CFLAGS = $(AM_CFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_filecfg_malicious_ja4_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_filecfg_risk_domains_SOURCES = fuzz_filecfg_risk_domains.c fuzz_common_code.c
|
|
fuzz_filecfg_risk_domains_CFLAGS = $(AM_CFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_filecfg_risk_domains_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_filecfg_config_SOURCES = fuzz_filecfg_config.c fuzz_common_code.c
|
|
fuzz_filecfg_config_CFLAGS = $(AM_CFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_filecfg_config_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_filecfg_category_SOURCES = fuzz_filecfg_category.c fuzz_common_code.c
|
|
fuzz_filecfg_category_CFLAGS = $(AM_CFLAGS) -DNDPI_LIB_COMPILATION
|
|
fuzz_filecfg_category_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_readerutils_workflow_SOURCES = fuzz_readerutils_workflow.cpp fuzz_common_code.c $(top_srcdir)/example/reader_util.c
|
|
fuzz_readerutils_workflow_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/example/
|
|
fuzz_readerutils_workflow_CFLAGS = $(AM_CFLAGS) -I$(top_srcdir)/example/
|
|
fuzz_readerutils_workflow_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ndpi_reader_pl7m_simplest_SOURCES = fuzz_ndpi_reader_pl7m_simplest.c fuzz_common_code.c $(top_srcdir)/example/reader_util.c $(top_srcdir)/src/lib/third_party/src/fuzz/pl7m.c
|
|
fuzz_ndpi_reader_pl7m_simplest_CFLAGS = $(AM_CFLAGS) -I$(top_srcdir)/example/ -DENABLE_PCAP_L7_MUTATOR -DPL7M_USE_SIMPLEST_MUTATOR
|
|
fuzz_ndpi_reader_pl7m_simplest_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ndpi_reader_pl7m_simplest_internal_SOURCES = fuzz_ndpi_reader_pl7m_simplest_internal.c fuzz_common_code.c $(top_srcdir)/example/reader_util.c $(top_srcdir)/src/lib/third_party/src/fuzz/pl7m.c
|
|
fuzz_ndpi_reader_pl7m_simplest_internal_CFLAGS = $(AM_CFLAGS) -I$(top_srcdir)/example/ -DENABLE_PCAP_L7_MUTATOR -DPL7M_USE_SIMPLEST_MUTATOR -DPL7M_USE_INTERNAL_FUZZER_MUTATE
|
|
fuzz_ndpi_reader_pl7m_simplest_internal_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ndpi_reader_pl7m_SOURCES = fuzz_ndpi_reader_pl7m.c fuzz_common_code.c $(top_srcdir)/example/reader_util.c $(top_srcdir)/src/lib/third_party/src/fuzz/pl7m.c
|
|
fuzz_ndpi_reader_pl7m_CFLAGS = $(AM_CFLAGS) -I$(top_srcdir)/example/ -DENABLE_PCAP_L7_MUTATOR -DENABLE_CONFIG2
|
|
fuzz_ndpi_reader_pl7m_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ndpi_reader_pl7m_64k_SOURCES = fuzz_ndpi_reader_pl7m_64k.c fuzz_common_code.c $(top_srcdir)/example/reader_util.c $(top_srcdir)/src/lib/third_party/src/fuzz/pl7m.c
|
|
fuzz_ndpi_reader_pl7m_64k_CFLAGS = $(AM_CFLAGS) -I$(top_srcdir)/example/ -DENABLE_PCAP_L7_MUTATOR -DPL7M_USE_64K_PACKETS
|
|
fuzz_ndpi_reader_pl7m_64k_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ndpi_reader_pl7m_internal_SOURCES = fuzz_ndpi_reader_pl7m_internal.c fuzz_common_code.c $(top_srcdir)/example/reader_util.c $(top_srcdir)/src/lib/third_party/src/fuzz/pl7m.c
|
|
fuzz_ndpi_reader_pl7m_internal_CFLAGS = $(AM_CFLAGS) -I$(top_srcdir)/example/ -DENABLE_PCAP_L7_MUTATOR -DPL7M_USE_INTERNAL_FUZZER_MUTATE
|
|
fuzz_ndpi_reader_pl7m_internal_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ndpi_reader_pl7m_only_subclassification_SOURCES = fuzz_ndpi_reader_pl7m_only_subclassification.c fuzz_common_code.c $(top_srcdir)/example/reader_util.c $(top_srcdir)/src/lib/third_party/src/fuzz/pl7m.c
|
|
fuzz_ndpi_reader_pl7m_only_subclassification_CFLAGS = $(AM_CFLAGS) -I$(top_srcdir)/example/ -DENABLE_PCAP_L7_MUTATOR -DENABLE_ONLY_SUBCLASSIFICATION
|
|
fuzz_ndpi_reader_pl7m_only_subclassification_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
fuzz_ndpi_reader_pl7m_randomize_ports_SOURCES = fuzz_ndpi_reader_pl7m_randomize_ports.c fuzz_common_code.c $(top_srcdir)/example/reader_util.c $(top_srcdir)/src/lib/third_party/src/fuzz/pl7m.c
|
|
fuzz_ndpi_reader_pl7m_randomize_ports_CFLAGS = $(AM_CFLAGS) -I$(top_srcdir)/example/ -DENABLE_PCAP_L7_MUTATOR -DPL7M_ENABLE_RANDOMIZE_PORTS
|
|
fuzz_ndpi_reader_pl7m_randomize_ports_LINK = $(FUZZ_LINK_COMMAND)
|
|
|
|
|
|
# required for Google oss-fuzz
|
|
# see https://github.com/google/oss-fuzz/tree/master/projects/ndpi
|
|
testpcaps := $(wildcard $(top_srcdir)/tests/cfgs/default/pcap/*.pcap*)
|
|
|
|
# Incremental corpus building: only rebuild zip if pcap files changed
|
|
testpcaps.zip: $(testpcaps)
|
|
@echo "Building testpcaps.zip from $(words $(testpcaps)) pcap files..."
|
|
@zip -q -j testpcaps.zip $(testpcaps)
|
|
|
|
# Pattern rule for PCAP-based corpus zips (incremental: only copy if testpcaps.zip is newer)
|
|
%_seed_corpus.zip: testpcaps.zip
|
|
@if [ ! -f $@ ] || [ $< -nt $@ ]; then \
|
|
cp testpcaps.zip $@; \
|
|
else \
|
|
echo "$@ is up to date"; \
|
|
fi
|
|
|
|
# Explicit targets for PCAP-based corpora (uses pattern rule above)
|
|
fuzz_ndpi_reader_seed_corpus.zip: testpcaps.zip
|
|
fuzz_ndpi_reader_alloc_fail_seed_corpus.zip: testpcaps.zip
|
|
fuzz_ndpi_reader_payload_analyzer_seed_corpus.zip: testpcaps.zip
|
|
fuzz_ndpi_reader_pl7m_simplest_seed_corpus.zip: testpcaps.zip
|
|
fuzz_ndpi_reader_pl7m_simplest_internal_seed_corpus.zip: testpcaps.zip
|
|
fuzz_ndpi_reader_pl7m_seed_corpus.zip: testpcaps.zip
|
|
fuzz_ndpi_reader_pl7m_64k_seed_corpus.zip: testpcaps.zip
|
|
fuzz_ndpi_reader_pl7m_internal_seed_corpus.zip: testpcaps.zip
|
|
fuzz_ndpi_reader_pl7m_only_subclassification_seed_corpus.zip: testpcaps.zip
|
|
fuzz_ndpi_reader_pl7m_randomize_ports_seed_corpus.zip: testpcaps.zip
|
|
|
|
# Corpus files from directories (incremental: only rebuild if source files changed)
|
|
files_corpus_fuzz_quic_get_crypto_data := $(wildcard $(srcdir)/corpus/fuzz_quic_get_crypto_data/*)
|
|
fuzz_quic_get_crypto_data_seed_corpus.zip: $(files_corpus_fuzz_quic_get_crypto_data)
|
|
@zip -q -j $@ $(files_corpus_fuzz_quic_get_crypto_data)
|
|
|
|
files_corpus_fuzz_is_stun_udp := $(wildcard $(srcdir)/corpus/fuzz_is_stun_udp/*)
|
|
fuzz_is_stun_udp_seed_corpus.zip: $(files_corpus_fuzz_is_stun_udp)
|
|
@zip -q -j $@ $(files_corpus_fuzz_is_stun_udp)
|
|
|
|
files_corpus_fuzz_is_stun_tcp := $(wildcard $(srcdir)/corpus/fuzz_is_stun_tcp/*)
|
|
fuzz_is_stun_tcp_seed_corpus.zip: $(files_corpus_fuzz_is_stun_tcp)
|
|
@zip -q -j $@ $(files_corpus_fuzz_is_stun_tcp)
|
|
|
|
files_corpus_fuzz_libinjection := $(wildcard $(srcdir)/corpus/fuzz_libinjection/*)
|
|
fuzz_libinjection_seed_corpus.zip: $(files_corpus_fuzz_libinjection)
|
|
@zip -q -j $@ $(files_corpus_fuzz_libinjection)
|
|
|
|
files_corpus_fuzz_tls_certificate := $(wildcard $(srcdir)/corpus/fuzz_tls_certificate/*)
|
|
fuzz_tls_certificate_seed_corpus.zip: $(files_corpus_fuzz_tls_certificate)
|
|
@zip -q -j $@ $(files_corpus_fuzz_tls_certificate)
|
|
|
|
files_corpus_fuzz_filecfg_protocols := $(wildcard $(srcdir)/corpus/fuzz_filecfg_protocols/*)
|
|
fuzz_filecfg_protocols_seed_corpus.zip: $(files_corpus_fuzz_filecfg_protocols)
|
|
@zip -q -j $@ $(files_corpus_fuzz_filecfg_protocols)
|
|
|
|
files_corpus_fuzz_filecfg_categories := $(wildcard $(srcdir)/corpus/fuzz_filecfg_categories/*)
|
|
fuzz_filecfg_categories_seed_corpus.zip: $(files_corpus_fuzz_filecfg_categories)
|
|
@zip -q -j $@ $(files_corpus_fuzz_filecfg_categories)
|
|
|
|
files_corpus_fuzz_filecfg_malicious_sha1 := $(wildcard $(srcdir)/corpus/fuzz_filecfg_malicious_sha1/*)
|
|
fuzz_filecfg_malicious_sha1_seed_corpus.zip: $(files_corpus_fuzz_filecfg_malicious_sha1)
|
|
@zip -q -j $@ $(files_corpus_fuzz_filecfg_malicious_sha1)
|
|
|
|
files_corpus_fuzz_filecfg_malicious_ja4 := $(wildcard $(srcdir)/corpus/fuzz_filecfg_malicious_ja4/*)
|
|
fuzz_filecfg_malicious_ja4_seed_corpus.zip: $(files_corpus_fuzz_filecfg_malicious_ja4)
|
|
@zip -q -j $@ $(files_corpus_fuzz_filecfg_malicious_ja4)
|
|
|
|
files_corpus_fuzz_filecfg_risk_domains := $(wildcard $(srcdir)/corpus/fuzz_filecfg_risk_domains/*)
|
|
fuzz_filecfg_risk_domains_seed_corpus.zip: $(files_corpus_fuzz_filecfg_risk_domains)
|
|
@zip -q -j $@ $(files_corpus_fuzz_filecfg_risk_domains)
|
|
|
|
files_corpus_fuzz_filecfg_config := $(wildcard $(srcdir)/corpus/fuzz_filecfg_config/*)
|
|
fuzz_filecfg_config_seed_corpus.zip: $(files_corpus_fuzz_filecfg_config)
|
|
@zip -q -j $@ $(files_corpus_fuzz_filecfg_config)
|
|
|
|
files_corpus_fuzz_filecfg_category := $(wildcard $(srcdir)/corpus/fuzz_filecfg_category/*)
|
|
fuzz_filecfg_category_seed_corpus.zip: $(files_corpus_fuzz_filecfg_category)
|
|
@zip -q -j $@ $(files_corpus_fuzz_filecfg_category)
|
|
|
|
# Phony target to build all corpora (incremental build via dependencies)
|
|
.PHONY: corpus
|
|
corpus: fuzz_ndpi_reader_seed_corpus.zip fuzz_ndpi_reader_alloc_fail_seed_corpus.zip fuzz_ndpi_reader_payload_analyzer_seed_corpus.zip fuzz_quic_get_crypto_data_seed_corpus.zip fuzz_libinjection_seed_corpus.zip fuzz_tls_certificate_seed_corpus.zip fuzz_filecfg_protocols_seed_corpus.zip fuzz_is_stun_udp_seed_corpus.zip fuzz_is_stun_tcp_seed_corpus.zip fuzz_ndpi_reader_pl7m_simplest_seed_corpus.zip fuzz_ndpi_reader_pl7m_seed_corpus.zip fuzz_ndpi_reader_pl7m_64k_seed_corpus.zip fuzz_ndpi_reader_pl7m_simplest_internal_seed_corpus.zip fuzz_ndpi_reader_pl7m_internal_seed_corpus.zip fuzz_ndpi_reader_pl7m_only_subclassification_seed_corpus.zip fuzz_ndpi_reader_pl7m_randomize_ports_seed_corpus.zip fuzz_filecfg_malicious_ja4_seed_corpus.zip fuzz_filecfg_malicious_sha1_seed_corpus.zip fuzz_filecfg_categories_seed_corpus.zip fuzz_filecfg_category_seed_corpus.zip fuzz_filecfg_config_seed_corpus.zip fuzz_filecfg_risk_domains_seed_corpus.zip
|
|
@echo "All corpus files are up to date"
|
|
@if [ -d "$(srcdir)/corpus" ] && ls $(srcdir)/corpus/fuzz_*seed_corpus.zip >/dev/null 2>&1; then \
|
|
echo "Copying pre-built corpus files from source directory..."; \
|
|
cp $(srcdir)/corpus/fuzz_*seed_corpus.zip . 2>/dev/null || true; \
|
|
fi
|
|
|
|
# Create dictionaries exactly as expected by oss-fuzz.
|
|
# This way, if we need to change/update/add something,
|
|
# we don't need to update scripts in oss-fuzz repository
|
|
# Incremental: only copy if source dictionary is newer
|
|
.PHONY: dictionaries
|
|
dictionaries: fuzz_ndpi_reader.dict fuzz_ndpi_reader_alloc_fail.dict fuzz_ndpi_reader_payload_analyzer.dict fuzz_process_packet.dict fuzz_tls_certificate.dict
|
|
@echo "All dictionaries are up to date"
|
|
|
|
fuzz_ndpi_reader.dict: $(srcdir)/dictionary.dict
|
|
@cp $(srcdir)/dictionary.dict $@
|
|
|
|
fuzz_ndpi_reader_alloc_fail.dict: $(srcdir)/dictionary.dict
|
|
@cp $(srcdir)/dictionary.dict $@
|
|
|
|
fuzz_ndpi_reader_payload_analyzer.dict: $(srcdir)/dictionary.dict
|
|
@cp $(srcdir)/dictionary.dict $@
|
|
|
|
fuzz_process_packet.dict: $(srcdir)/dictionary.dict
|
|
@cp $(srcdir)/dictionary.dict $@
|
|
|
|
fuzz_tls_certificate.dict: $(srcdir)/dictionary_tls_certificate.dict
|
|
@cp $(srcdir)/dictionary_tls_certificate.dict $@
|
|
|
|
clean-local:
|
|
$(RM) *.o $(bin_PROGRAMS)
|
|
$(RM) $(top_builddir)/example/fuzz_*.o
|
|
$(RM) $(top_builddir)/src/lib/third_party/src/fuzz_*.o
|
|
$(RM) $(top_builddir)/src/lib/third_party/src/fuzz/fuzz_*.o
|
|
$(RM) testpcaps.zip
|
|
$(RM) *_seed_corpus.zip
|
|
$(RM) fuzz*.dict
|
|
$(RM) -r .libs .deps
|
|
|
|
distclean-local:
|
|
$(RM) Makefile
|
|
|
|
distdir:
|
|
find $(srcdir) -type d | xargs -I'{}' mkdir -p '$(distdir)/{}'
|
|
find $(srcdir) -type f -name '*.c' \
|
|
-o -name '*.am' \
|
|
-o -name '*.h' \
|
|
-o -name '*.cpp' \
|
|
-o -name '*.options' \
|
|
-o -name 'ipv4_addresses.txt' \
|
|
-o -name 'ipv6_addresses.txt' \
|
|
-o -name 'bd_param.txt' \
|
|
-o -name 'splt_param.txt' \
|
|
-o -name 'random_list.list' \
|
|
-o -path '$(srcdir)/dictionary.dict' \
|
|
-o -path '$(srcdir)/dictionary_tls_certificate.dict' \
|
|
-o -path '$(srcdir)/corpus/fuzz_*.zip' \
|
|
-o -path '$(srcdir)/corpus/fuzz_quic_get_crypto_data/*' \
|
|
-o -path '$(srcdir)/corpus/fuzz_filecfg_protocols/*' \
|
|
-o -path '$(srcdir)/corpus/fuzz_filecfg_categories/*' \
|
|
-o -path '$(srcdir)/corpus/fuzz_filecfg_malicious_sha1/*' \
|
|
-o -path '$(srcdir)/corpus/fuzz_filecfg_malicious_ja4/*' \
|
|
-o -path '$(srcdir)/corpus/fuzz_filecfg_risk_domains/*' \
|
|
-o -path '$(srcdir)/corpus/fuzz_filecfg_config/*' \
|
|
-o -path '$(srcdir)/corpus/fuzz_filecfg_category/*' \
|
|
-o -path '$(srcdir)/corpus/fuzz_is_stun_udp/*' \
|
|
-o -path '$(srcdir)/corpus/fuzz_is_stun_tcp/*' \
|
|
-o -path '$(srcdir)/corpus/fuzz_libinjection/*' \
|
|
-o -path '$(srcdir)/corpus/fuzz_tls_certificate/*' | xargs -I'{}' cp -r '{}' '$(distdir)/{}'
|
|
find . -type l -name '*.c' | xargs -I'{}' cp -r '{}' '$(distdir)/{}'
|
|
|
|
all: corpus dictionaries
|