aboutsummaryrefslogtreecommitdiff
path: root/fuzz
diff options
context:
space:
mode:
Diffstat (limited to 'fuzz')
-rw-r--r--fuzz/Makefile.am28
-rw-r--r--fuzz/bd_param.txt627
-rw-r--r--fuzz/corpus/fuzz_filecfg_protocols/certificate.txt1
-rw-r--r--fuzz/corpus/fuzz_filecfg_protocols/certificate2.txt1
-rw-r--r--fuzz/corpus/fuzz_filecfg_protocols/custom.txt9
-rw-r--r--fuzz/corpus/fuzz_filecfg_protocols/invalid_proto_name.txt2
-rw-r--r--fuzz/corpus/fuzz_filecfg_protocols/nbpf.txt1
-rw-r--r--fuzz/corpus/fuzz_filecfg_protocols/nbpf2.txt1
-rw-r--r--fuzz/corpus/fuzz_filecfg_protocols/port.txt7
-rw-r--r--fuzz/corpus/fuzz_filecfg_protocols/risks.txt4
-rw-r--r--fuzz/corpus/fuzz_filecfg_protocols/subproto.txt3
-rw-r--r--fuzz/fuzz_common_code.c5
-rw-r--r--fuzz/fuzz_common_code.h2
-rw-r--r--fuzz/fuzz_config.cpp3
-rw-r--r--fuzz/fuzz_filecfg_protocols.c47
-rw-r--r--fuzz/fuzz_gcrypt_light.cpp59
-rw-r--r--fuzz/fuzz_ndpi_reader.c26
-rw-r--r--fuzz/splt_param.txt209
18 files changed, 988 insertions, 47 deletions
diff --git a/fuzz/Makefile.am b/fuzz/Makefile.am
index 53c7832d0..e189ffe0c 100644
--- a/fuzz/Makefile.am
+++ b/fuzz/Makefile.am
@@ -7,6 +7,8 @@ bin_PROGRAMS += fuzz_ds_patricia fuzz_ds_ahocorasick fuzz_ds_libcache fuzz_ds_tr
bin_PROGRAMS += fuzz_libinjection
#Internal crypto
bin_PROGRAMS += fuzz_gcrypt_light
+#Configuration files
+bin_PROGRAMS += fuzz_filecfg_protocols
fuzz_process_packet_SOURCES = fuzz_process_packet.c fuzz_common_code.c
fuzz_process_packet_CFLAGS = @NDPI_CFLAGS@ $(CXXFLAGS)
@@ -21,7 +23,7 @@ fuzz_process_packet_LINK=$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CXX) @NDPI_CFLAGS@ $(AM_CXXFLAGS) $(CXXFLAGS) \
$(fuzz_process_packet_LDFLAGS) @NDPI_LDFLAGS@ $(LDFLAGS) -o $@
-fuzz_ndpi_reader_SOURCES = fuzz_ndpi_reader.c ../example/reader_util.c
+fuzz_ndpi_reader_SOURCES = fuzz_ndpi_reader.c fuzz_common_code.c ../example/reader_util.c
fuzz_ndpi_reader_CFLAGS = -I../example/ @NDPI_CFLAGS@ $(CXXFLAGS)
fuzz_ndpi_reader_LDADD = ../src/lib/libndpi.a $(ADDITIONAL_LIBS)
fuzz_ndpi_reader_LDFLAGS = $(PCAP_LIB) $(LIBS)
@@ -378,6 +380,20 @@ fuzz_gcrypt_light_LINK=$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CXX) @NDPI_CFLAGS@ $(AM_CXXFLAGS) $(CXXFLAGS) \
$(fuzz_gcrypt_light_LDFLAGS) @NDPI_LDFLAGS@ $(LDFLAGS) -o $@
+fuzz_filecfg_protocols_SOURCES = fuzz_filecfg_protocols.c fuzz_common_code.c
+fuzz_filecfg_protocols_CFLAGS = @NDPI_CFLAGS@ $(CXXFLAGS)
+fuzz_filecfg_protocols_LDADD = ../src/lib/libndpi.a $(ADDITIONAL_LIBS)
+fuzz_filecfg_protocols_LDFLAGS = $(LIBS)
+if HAS_FUZZLDFLAGS
+fuzz_filecfg_protocols_CFLAGS += $(LIB_FUZZING_ENGINE)
+fuzz_filecfg_protocols_LDFLAGS += $(LIB_FUZZING_ENGINE)
+endif
+# force usage of CXX for linker
+fuzz_filecfg_protocols_LINK=$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CXX) @NDPI_CFLAGS@ $(AM_CXXFLAGS) $(CXXFLAGS) \
+ $(fuzz_filecfg_protocols_LDFLAGS) @NDPI_LDFLAGS@ $(LDFLAGS) -o $@
+
+
# required for Google oss-fuzz
# see https://github.com/google/oss-fuzz/tree/master/projects/ndpi
testpcaps := $(wildcard ../tests/cfgs/default/pcap/*.pcap*)
@@ -481,7 +497,12 @@ files_corpus_fuzz_tls_certificate := $(wildcard corpus/fuzz_tls_certificate/*)
fuzz_tls_certificate_seed_corpus.zip: $(files_corpus_fuzz_tls_certificate)
zip -j fuzz_tls_certificate_seed_corpus.zip $(files_corpus_fuzz_tls_certificate)
-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_config_seed_corpus.zip fuzz_ds_patricia_seed_corpus.zip fuzz_ds_ahocorasick_seed_corpus.zip fuzz_alg_ses_des_seed_corpus.zip fuzz_alg_hw_rsi_outliers_da_seed_corpus.zip fuzz_alg_bins_seed_corpus.zip fuzz_alg_hll_seed_corpus.zip fuzz_alg_jitter_seed_corpus.zip fuzz_ds_libcache_seed_corpus.zip fuzz_community_id_seed_corpus.zip fuzz_ds_tree_seed_corpus.zip fuzz_serialization_seed_corpus.zip fuzz_ds_ptree_seed_corpus.zip fuzz_alg_crc32_md5_seed_corpus.zip fuzz_alg_bytestream_seed_corpus.zip fuzz_libinjection_seed_corpus.zip fuzz_tls_certificate_seed_corpus.zip
+files_corpus_fuzz_filecfg_protocols := $(wildcard corpus/fuzz_filecfg_protocols/*)
+
+fuzz_filecfg_protocols_seed_corpus.zip: $(files_corpus_fuzz_filecfg_protocols)
+ zip -j fuzz_filecfg_protocols_seed_corpus.zip $(files_corpus_fuzz_filecfg_protocols)
+
+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_config_seed_corpus.zip fuzz_ds_patricia_seed_corpus.zip fuzz_ds_ahocorasick_seed_corpus.zip fuzz_alg_ses_des_seed_corpus.zip fuzz_alg_hw_rsi_outliers_da_seed_corpus.zip fuzz_alg_bins_seed_corpus.zip fuzz_alg_hll_seed_corpus.zip fuzz_alg_jitter_seed_corpus.zip fuzz_ds_libcache_seed_corpus.zip fuzz_community_id_seed_corpus.zip fuzz_ds_tree_seed_corpus.zip fuzz_serialization_seed_corpus.zip fuzz_ds_ptree_seed_corpus.zip fuzz_alg_crc32_md5_seed_corpus.zip fuzz_alg_bytestream_seed_corpus.zip fuzz_libinjection_seed_corpus.zip fuzz_tls_certificate_seed_corpus.zip fuzz_filecfg_protocols_seed_corpus.zip
cp corpus/fuzz_*seed_corpus.zip .
#Create dictionaries exactly as expected by oss-fuzz.
@@ -502,8 +523,11 @@ distdir:
-o -name '*.cpp' \
-o -name '*.dict' \
-o -name 'ipv4_addresses.txt' \
+ -o -name 'bd_param.txt' \
+ -o -name 'splt_param.txt' \
-o -path './corpus/fuzz_*.zip' \
-o -path './corpus/fuzz_quic_get_crypto_data/*' \
+ -o -path './corpus/fuzz_filecfg_protocols/*' \
-o -path './corpus/fuzz_config/*' \
-o -path './corpus/fuzz_serialization/*' \
-o -path './corpus/fuzz_community_id/*' \
diff --git a/fuzz/bd_param.txt b/fuzz/bd_param.txt
new file mode 100644
index 000000000..e1663a7b4
--- /dev/null
+++ b/fuzz/bd_param.txt
@@ -0,0 +1,627 @@
+-2.088057846500587456e+00
+7.763936238952200239e-05
+4.404309737393306595e-05
+-9.467385027293546973e-02
+4.348947142638090457e-01
+-2.091409170053043390e-04
+-5.788902107267982974e-04
+4.481443450852441001e-10
+-3.136135459023654537e+00
+-1.507730262127600751e+00
+-1.204663669965535977e+00
+-1.171839254318371104e+00
+4.329302247232582057e-01
+8.310653628092458334e+00
+3.299246725156660176e+00
+0.000000000000000000e+00
+1.847454931582027254e-02
+-1.498024139966201096e+00
+-7.660670007653060942e-01
+-2.908130300830076731e+00
+-1.252564844610269734e+00
+-1.910955328742287573e+00
+9.471710980110392697e-01
+2.352302758516665371e+00
+2.982269972214651954e+00
+4.280736383314343918e+00
+4.633629909719495288e+00
+-2.198052637823726840e+00
+-1.150759637168392580e+00
+3.420433363184381292e+00
+1.857878113059351077e-02
+-1.559806674919653746e+00
+4.197498183183401288e+00
+6.262186949633183453e+00
+1.100694844370524095e+01
+2.778688785515088000e+01
+3.679948298336883195e+00
+-2.432801394376875592e+00
+5.133442052706843617e-01
+2.181172654073517680e+00
+-8.577551729671881731e-01
+7.013844214023315926e-01
+3.138233436228588857e+00
+7.319940508466630247e-01
+0.000000000000000000e+00
+3.529209394581482861e+00
+1.464585117707144413e+01
+8.506550226820598359e-01
+-9.060397326548508268e-01
+6.787474954688997641e+00
+8.125411068867387954e+00
+4.515740684104064151e+00
+5.372135582950940069e+00
+9.210951196799497254e-01
+4.802177410869620466e+00
+2.945445016176073594e+01
+1.575032253128311632e+00
+-1.355276854364796946e-01
+-3.322474764169629502e-01
+3.018397817188666732e+00
+1.186503569922195744e+00
+0.000000000000000000e+00
+8.883242370198487503e-01
+7.248276146728496627e+00
+0.000000000000000000e+00
+0.000000000000000000e+00
+-4.831246718433664711e+00
+6.124136970173365002e-01
+4.145693892559814686e-01
+2.683998941637626867e+00
+2.063906603639539039e+00
+2.989801217386735210e+00
+2.262965767379551962e-01
+2.240332214649647380e+00
+5.984550782416063086e+00
+4.587011255338186544e+00
+1.233118485315272039e+01
+1.115223490909697857e+00
+-3.682686422016995476e+00
+6.096498453291562258e-01
+1.119275528656461516e+00
+1.377886278915177731e-01
+3.828176805973048324e+00
+0.000000000000000000e+00
+0.000000000000000000e+00
+1.442927634029647344e+01
+0.000000000000000000e+00
+5.719118583309401593e-01
+1.993632609731877392e-01
+3.047472271520709430e+00
+5.736784864911910198e+00
+6.677826247219391220e+00
+6.307175478564531090e+00
+3.150295169417364249e+01
+3.738597740702392258e+00
+1.129754590514236234e+01
+6.108506268573830056e+00
+1.605489516792866667e+00
+2.929631990348545489e+00
+-2.832543082245212937e-02
+1.358286530670594461e+00
+1.655932469853677924e+00
+6.701964773769768513e-01
+2.131182050917533211e+00
+2.998351165769753468e+00
+7.772095996358327596e+00
+1.285014785269981141e+00
+4.407334784589962418e+00
+1.719858214230612026e+00
+-1.012765674651314063e+00
+-5.749271123172469133e-01
+-3.559614093795681278e+00
+-3.073088477387719397e+00
+-4.492469521371540431e+00
+-3.753286990415885427e+00
+-3.219255423324282273e+00
+-2.806436518181075090e+00
+-2.697305948568419875e+00
+-7.879608430851776646e-01
+4.625507221739111330e+00
+4.809280703883450414e+00
+-3.435194026629848629e+00
+-3.218943068168937049e+00
+3.335535704890596698e+00
+2.071359212435486263e+00
+4.538992059175040339e+00
+-2.770772323566738038e+01
+2.903047708571506735e+00
+-4.436143805989154032e+00
+-2.647991280011542381e-01
+1.737252348126810064e+00
+-4.121989655995259128e+00
+3.209709099445720581e-01
+1.012758514896711759e+01
+3.313255624721038295e+00
+4.631467619785444967e+00
+7.668642402146534032e+00
+6.780938812710099128e+00
+-3.256164342602652972e+00
+6.749565128319576779e-01
+0.000000000000000000e+00
+-4.407265954524525853e+00
+0.000000000000000000e+00
+-3.666522115024547901e+01
+-7.886029397826226273e+01
+0.000000000000000000e+00
+0.000000000000000000e+00
+-2.261283814517791058e+01
+-4.024317426178160240e+00
+3.213063737030031342e-01
+5.079805145796887800e+00
+1.326813226475260343e+00
+1.233684078112145643e+00
+8.671852503871454232e+00
+-2.041800256066371944e+00
+0.000000000000000000e+00
+0.000000000000000000e+00
+-1.607347800380474823e+01
+-4.430790279223246309e+00
+1.177552465851384511e+00
+6.342921220500139512e+00
+-2.466913734548706327e-02
+3.451642566010713065e-01
+-6.012767168531006234e+00
+7.328146570137336724e+00
+7.500088131707050465e+00
+0.000000000000000000e+00
+-3.547913249211809017e+01
+-3.130964814607208879e+00
+8.247326544297072237e-01
+3.757262485775580418e-01
+-2.136528302027558723e+00
+-2.631627236037529793e-01
+-2.016718799388414141e+01
+0.000000000000000000e+00
+0.000000000000000000e+00
+0.000000000000000000e+00
+-7.708602132869285528e-01
+-2.602868328868111814e+00
+1.435184800833797958e+00
+0.000000000000000000e+00
+-2.080420864280113413e+00
+1.169498351211070819e+00
+-1.798334115637199560e+01
+-1.193885252696202670e+01
+0.000000000000000000e+00
+0.000000000000000000e+00
+4.304089297965300709e+00
+-3.020893216686394656e+00
+-1.234427481614708721e+00
+0.000000000000000000e+00
+1.853340741926325697e+00
+-2.686000064995862147e+01
+-1.672275139058893600e+01
+-2.826268691607605987e+01
+0.000000000000000000e+00
+0.000000000000000000e+00
+-1.547397429377200817e+00
+-4.018181657009961327e+00
+-7.289186736637049968e+00
+-7.458655219230571731e+00
+-9.625538282761622710e+00
+-1.103039457077456298e+01
+-6.262675161142102809e+01
+-9.265912629799268885e+00
+-8.961543476816615339e+00
+-9.622764435629340696e+00
+-1.097978292092879826e+01
+-1.097978292092879826e+01
+-2.088057846500587456e+00
+7.763936238952200239e-05
+4.404309737393306595e-05
+-9.467385027293546973e-02
+4.348947142638090457e-01
+-2.091409170053043390e-04
+-5.788902107267982974e-04
+4.481443450852441001e-10
+-3.136135459023654537e+00
+-1.507730262127600751e+00
+-1.204663669965535977e+00
+-1.171839254318371104e+00
+4.329302247232582057e-01
+8.310653628092458334e+00
+3.299246725156660176e+00
+0.000000000000000000e+00
+1.847454931582027254e-02
+-1.498024139966201096e+00
+-7.660670007653060942e-01
+-2.908130300830076731e+00
+-1.252564844610269734e+00
+-1.910955328742287573e+00
+9.471710980110392697e-01
+2.352302758516665371e+00
+2.982269972214651954e+00
+4.280736383314343918e+00
+4.633629909719495288e+00
+-2.198052637823726840e+00
+-1.150759637168392580e+00
+3.420433363184381292e+00
+1.857878113059351077e-02
+-1.559806674919653746e+00
+4.197498183183401288e+00
+6.262186949633183453e+00
+1.100694844370524095e+01
+2.778688785515088000e+01
+3.679948298336883195e+00
+-2.432801394376875592e+00
+5.133442052706843617e-01
+2.181172654073517680e+00
+-8.577551729671881731e-01
+7.013844214023315926e-01
+3.138233436228588857e+00
+7.319940508466630247e-01
+0.000000000000000000e+00
+3.529209394581482861e+00
+1.464585117707144413e+01
+8.506550226820598359e-01
+-9.060397326548508268e-01
+6.787474954688997641e+00
+8.125411068867387954e+00
+4.515740684104064151e+00
+5.372135582950940069e+00
+9.210951196799497254e-01
+4.802177410869620466e+00
+2.945445016176073594e+01
+1.575032253128311632e+00
+-1.355276854364796946e-01
+-3.322474764169629502e-01
+3.018397817188666732e+00
+1.186503569922195744e+00
+0.000000000000000000e+00
+8.883242370198487503e-01
+7.248276146728496627e+00
+0.000000000000000000e+00
+0.000000000000000000e+00
+-4.831246718433664711e+00
+6.124136970173365002e-01
+4.145693892559814686e-01
+2.683998941637626867e+00
+2.063906603639539039e+00
+2.989801217386735210e+00
+2.262965767379551962e-01
+2.240332214649647380e+00
+5.984550782416063086e+00
+4.587011255338186544e+00
+1.233118485315272039e+01
+1.115223490909697857e+00
+-3.682686422016995476e+00
+6.096498453291562258e-01
+1.119275528656461516e+00
+1.377886278915177731e-01
+3.828176805973048324e+00
+0.000000000000000000e+00
+0.000000000000000000e+00
+1.442927634029647344e+01
+0.000000000000000000e+00
+5.719118583309401593e-01
+1.993632609731877392e-01
+3.047472271520709430e+00
+5.736784864911910198e+00
+6.677826247219391220e+00
+6.307175478564531090e+00
+3.150295169417364249e+01
+3.738597740702392258e+00
+1.129754590514236234e+01
+6.108506268573830056e+00
+1.605489516792866667e+00
+2.929631990348545489e+00
+-2.832543082245212937e-02
+1.358286530670594461e+00
+1.655932469853677924e+00
+6.701964773769768513e-01
+2.131182050917533211e+00
+2.998351165769753468e+00
+7.772095996358327596e+00
+1.285014785269981141e+00
+4.407334784589962418e+00
+1.719858214230612026e+00
+-1.012765674651314063e+00
+-5.749271123172469133e-01
+-3.559614093795681278e+00
+-3.073088477387719397e+00
+-4.492469521371540431e+00
+-3.753286990415885427e+00
+-3.219255423324282273e+00
+-2.806436518181075090e+00
+-2.697305948568419875e+00
+-7.879608430851776646e-01
+4.625507221739111330e+00
+4.809280703883450414e+00
+-3.435194026629848629e+00
+-3.218943068168937049e+00
+3.335535704890596698e+00
+2.071359212435486263e+00
+4.538992059175040339e+00
+-2.770772323566738038e+01
+2.903047708571506735e+00
+-4.436143805989154032e+00
+-2.647991280011542381e-01
+1.737252348126810064e+00
+-4.121989655995259128e+00
+3.209709099445720581e-01
+1.012758514896711759e+01
+3.313255624721038295e+00
+4.631467619785444967e+00
+7.668642402146534032e+00
+6.780938812710099128e+00
+-3.256164342602652972e+00
+6.749565128319576779e-01
+0.000000000000000000e+00
+-4.407265954524525853e+00
+0.000000000000000000e+00
+-3.666522115024547901e+01
+-7.886029397826226273e+01
+0.000000000000000000e+00
+0.000000000000000000e+00
+-2.261283814517791058e+01
+-4.024317426178160240e+00
+3.213063737030031342e-01
+5.079805145796887800e+00
+1.326813226475260343e+00
+1.233684078112145643e+00
+8.671852503871454232e+00
+-2.041800256066371944e+00
+0.000000000000000000e+00
+0.000000000000000000e+00
+-1.607347800380474823e+01
+-4.430790279223246309e+00
+1.177552465851384511e+00
+6.342921220500139512e+00
+-2.466913734548706327e-02
+3.451642566010713065e-01
+-6.012767168531006234e+00
+7.328146570137336724e+00
+7.500088131707050465e+00
+0.000000000000000000e+00
+-3.547913249211809017e+01
+-3.130964814607208879e+00
+8.247326544297072237e-01
+3.757262485775580418e-01
+-2.136528302027558723e+00
+-2.631627236037529793e-01
+-2.016718799388414141e+01
+0.000000000000000000e+00
+0.000000000000000000e+00
+0.000000000000000000e+00
+-7.708602132869285528e-01
+-2.602868328868111814e+00
+1.435184800833797958e+00
+0.000000000000000000e+00
+-2.080420864280113413e+00
+1.169498351211070819e+00
+-1.798334115637199560e+01
+-1.193885252696202670e+01
+0.000000000000000000e+00
+0.000000000000000000e+00
+4.304089297965300709e+00
+-3.020893216686394656e+00
+-1.234427481614708721e+00
+0.000000000000000000e+00
+1.853340741926325697e+00
+-2.686000064995862147e+01
+-1.672275139058893600e+01
+-2.826268691607605987e+01
+0.000000000000000000e+00
+0.000000000000000000e+00
+-1.547397429377200817e+00
+-4.018181657009961327e+00
+-7.289186736637049968e+00
+-7.458655219230571731e+00
+-9.625538282761622710e+00
+-1.103039457077456298e+01
+-6.262675161142102809e+01
+-9.265912629799268885e+00
+-8.961543476816615339e+00
+-9.622764435629340696e+00
+-1.097978292092879826e+01
+-1.097978292092879826e+01
+-2.088057846500587456e+00
+7.763936238952200239e-05
+4.404309737393306595e-05
+-9.467385027293546973e-02
+4.348947142638090457e-01
+-2.091409170053043390e-04
+-5.788902107267982974e-04
+4.481443450852441001e-10
+-3.136135459023654537e+00
+-1.507730262127600751e+00
+-1.204663669965535977e+00
+-1.171839254318371104e+00
+4.329302247232582057e-01
+8.310653628092458334e+00
+3.299246725156660176e+00
+0.000000000000000000e+00
+1.847454931582027254e-02
+-1.498024139966201096e+00
+-7.660670007653060942e-01
+-2.908130300830076731e+00
+-1.252564844610269734e+00
+-1.910955328742287573e+00
+9.471710980110392697e-01
+2.352302758516665371e+00
+2.982269972214651954e+00
+4.280736383314343918e+00
+4.633629909719495288e+00
+-2.198052637823726840e+00
+-1.150759637168392580e+00
+3.420433363184381292e+00
+1.857878113059351077e-02
+-1.559806674919653746e+00
+4.197498183183401288e+00
+6.262186949633183453e+00
+1.100694844370524095e+01
+2.778688785515088000e+01
+3.679948298336883195e+00
+-2.432801394376875592e+00
+5.133442052706843617e-01
+2.181172654073517680e+00
+-8.577551729671881731e-01
+7.013844214023315926e-01
+3.138233436228588857e+00
+7.319940508466630247e-01
+0.000000000000000000e+00
+3.529209394581482861e+00
+1.464585117707144413e+01
+8.506550226820598359e-01
+-9.060397326548508268e-01
+6.787474954688997641e+00
+8.125411068867387954e+00
+4.515740684104064151e+00
+5.372135582950940069e+00
+9.210951196799497254e-01
+4.802177410869620466e+00
+2.945445016176073594e+01
+1.575032253128311632e+00
+-1.355276854364796946e-01
+-3.322474764169629502e-01
+3.018397817188666732e+00
+1.186503569922195744e+00
+0.000000000000000000e+00
+8.883242370198487503e-01
+7.248276146728496627e+00
+0.000000000000000000e+00
+0.000000000000000000e+00
+-4.831246718433664711e+00
+6.124136970173365002e-01
+4.145693892559814686e-01
+2.683998941637626867e+00
+2.063906603639539039e+00
+2.989801217386735210e+00
+2.262965767379551962e-01
+2.240332214649647380e+00
+5.984550782416063086e+00
+4.587011255338186544e+00
+1.233118485315272039e+01
+1.115223490909697857e+00
+-3.682686422016995476e+00
+6.096498453291562258e-01
+1.119275528656461516e+00
+1.377886278915177731e-01
+3.828176805973048324e+00
+0.000000000000000000e+00
+0.000000000000000000e+00
+1.442927634029647344e+01
+0.000000000000000000e+00
+5.719118583309401593e-01
+1.993632609731877392e-01
+3.047472271520709430e+00
+5.736784864911910198e+00
+6.677826247219391220e+00
+6.307175478564531090e+00
+3.150295169417364249e+01
+3.738597740702392258e+00
+1.129754590514236234e+01
+6.108506268573830056e+00
+1.605489516792866667e+00
+2.929631990348545489e+00
+-2.832543082245212937e-02
+1.358286530670594461e+00
+1.655932469853677924e+00
+6.701964773769768513e-01
+2.131182050917533211e+00
+2.998351165769753468e+00
+7.772095996358327596e+00
+1.285014785269981141e+00
+4.407334784589962418e+00
+1.719858214230612026e+00
+-1.012765674651314063e+00
+-5.749271123172469133e-01
+-3.559614093795681278e+00
+-3.073088477387719397e+00
+-4.492469521371540431e+00
+-3.753286990415885427e+00
+-3.219255423324282273e+00
+-2.806436518181075090e+00
+-2.697305948568419875e+00
+-7.879608430851776646e-01
+4.625507221739111330e+00
+4.809280703883450414e+00
+-3.435194026629848629e+00
+-3.218943068168937049e+00
+3.335535704890596698e+00
+2.071359212435486263e+00
+4.538992059175040339e+00
+-2.770772323566738038e+01
+2.903047708571506735e+00
+-4.436143805989154032e+00
+-2.647991280011542381e-01
+1.737252348126810064e+00
+-4.121989655995259128e+00
+3.209709099445720581e-01
+1.012758514896711759e+01
+3.313255624721038295e+00
+4.631467619785444967e+00
+7.668642402146534032e+00
+6.780938812710099128e+00
+-3.256164342602652972e+00
+6.749565128319576779e-01
+0.000000000000000000e+00
+-4.407265954524525853e+00
+0.000000000000000000e+00
+-3.666522115024547901e+01
+-7.886029397826226273e+01
+0.000000000000000000e+00
+0.000000000000000000e+00
+-2.261283814517791058e+01
+-4.024317426178160240e+00
+3.213063737030031342e-01
+5.079805145796887800e+00
+1.326813226475260343e+00
+1.233684078112145643e+00
+8.671852503871454232e+00
+-2.041800256066371944e+00
+0.000000000000000000e+00
+0.000000000000000000e+00
+-1.607347800380474823e+01
+-4.430790279223246309e+00
+1.177552465851384511e+00
+6.342921220500139512e+00
+-2.466913734548706327e-02
+3.451642566010713065e-01
+-6.012767168531006234e+00
+7.328146570137336724e+00
+7.500088131707050465e+00
+0.000000000000000000e+00
+-3.547913249211809017e+01
+-3.130964814607208879e+00
+8.247326544297072237e-01
+3.757262485775580418e-01
+-2.136528302027558723e+00
+-2.631627236037529793e-01
+-2.016718799388414141e+01
+0.000000000000000000e+00
+0.000000000000000000e+00
+0.000000000000000000e+00
+-7.708602132869285528e-01
+-2.602868328868111814e+00
+1.435184800833797958e+00
+0.000000000000000000e+00
+-2.080420864280113413e+00
+1.169498351211070819e+00
+-1.798334115637199560e+01
+-1.193885252696202670e+01
+0.000000000000000000e+00
+0.000000000000000000e+00
+4.304089297965300709e+00
+-3.020893216686394656e+00
+-1.234427481614708721e+00
+0.000000000000000000e+00
+1.853340741926325697e+00
+-2.686000064995862147e+01
+-1.672275139058893600e+01
+-2.826268691607605987e+01
+0.000000000000000000e+00
+0.000000000000000000e+00
+-1.547397429377200817e+00
+-4.018181657009961327e+00
+-7.289186736637049968e+00
+-7.458655219230571731e+00
+-9.625538282761622710e+00
+-1.103039457077456298e+01
+-6.262675161142102809e+01
+-9.265912629799268885e+00
+-8.961543476816615339e+00
+-9.622764435629340696e+00
+-1.097978292092879826e+01
+-1.097978292092879826e+01
diff --git a/fuzz/corpus/fuzz_filecfg_protocols/certificate.txt b/fuzz/corpus/fuzz_filecfg_protocols/certificate.txt
new file mode 100644
index 000000000..0e47bd352
--- /dev/null
+++ b/fuzz/corpus/fuzz_filecfg_protocols/certificate.txt
@@ -0,0 +1 @@
+trusted_issuer_dn:"CN=813845657003339838, O=Code42, OU=TEST, ST=MN, C=US"
diff --git a/fuzz/corpus/fuzz_filecfg_protocols/certificate2.txt b/fuzz/corpus/fuzz_filecfg_protocols/certificate2.txt
new file mode 100644
index 000000000..25807bac0
--- /dev/null
+++ b/fuzz/corpus/fuzz_filecfg_protocols/certificate2.txt
@@ -0,0 +1 @@
+trusted_issuer_dn:CN=813845657003339838, O=Code42, OU=TEST, ST=MN, C=US
diff --git a/fuzz/corpus/fuzz_filecfg_protocols/custom.txt b/fuzz/corpus/fuzz_filecfg_protocols/custom.txt
new file mode 100644
index 000000000..fe9250d39
--- /dev/null
+++ b/fuzz/corpus/fuzz_filecfg_protocols/custom.txt
@@ -0,0 +1,9 @@
+ip:213.75.170.11/32:443@CustomProtocol
+ip:8.248.73.247:443@AmazonPrime
+ip:54.80.47.130@AmazonPrime
+
+ip:3.3.3.3:443@CustomProtocolA
+ip:3.3.3.3:444@CustomProtocolB
+ip:3.3.3.3:446@CustomProtocolC=400
+ip:3.3.3.3:447@CustomProtocolD=1
+ip:3.3.3.3:448@CustomProtocolD=4000
diff --git a/fuzz/corpus/fuzz_filecfg_protocols/invalid_proto_name.txt b/fuzz/corpus/fuzz_filecfg_protocols/invalid_proto_name.txt
new file mode 100644
index 000000000..127b12598
--- /dev/null
+++ b/fuzz/corpus/fuzz_filecfg_protocols/invalid_proto_name.txt
@@ -0,0 +1,2 @@
+tcp:65535@TestProt o
+tcp:65534@TestProt/&^:;\"o
diff --git a/fuzz/corpus/fuzz_filecfg_protocols/nbpf.txt b/fuzz/corpus/fuzz_filecfg_protocols/nbpf.txt
new file mode 100644
index 000000000..f03ce3f53
--- /dev/null
+++ b/fuzz/corpus/fuzz_filecfg_protocols/nbpf.txt
@@ -0,0 +1 @@
+nbpf:"host 192.168.1.1 and port 80"@HomeRouter
diff --git a/fuzz/corpus/fuzz_filecfg_protocols/nbpf2.txt b/fuzz/corpus/fuzz_filecfg_protocols/nbpf2.txt
new file mode 100644
index 000000000..4af40919d
--- /dev/null
+++ b/fuzz/corpus/fuzz_filecfg_protocols/nbpf2.txt
@@ -0,0 +1 @@
+nbpf:"host 192.168.1.2"@HomeRouter2
diff --git a/fuzz/corpus/fuzz_filecfg_protocols/port.txt b/fuzz/corpus/fuzz_filecfg_protocols/port.txt
new file mode 100644
index 000000000..d7664eb0d
--- /dev/null
+++ b/fuzz/corpus/fuzz_filecfg_protocols/port.txt
@@ -0,0 +1,7 @@
+tcp:81,tcp:8181@HTTP
+udp:5062@SIP
+tcp:860,udp:860,tcp:3260,udp:3260@iSCSI
+tcp:3000@ntop
+tcp:9002@Elasticsearch
+tcp:5601@Kibana
+tcp:65535@TestProto
diff --git a/fuzz/corpus/fuzz_filecfg_protocols/risks.txt b/fuzz/corpus/fuzz_filecfg_protocols/risks.txt
new file mode 100644
index 000000000..fa7160903
--- /dev/null
+++ b/fuzz/corpus/fuzz_filecfg_protocols/risks.txt
@@ -0,0 +1,4 @@
+#ip_risk_mask:192.168.1.0/24=0
+ip_risk_mask:10.10.120.0/24=0
+ip_risk_mask:10.196.157.228=0
+host_risk_mask:".home"=0
diff --git a/fuzz/corpus/fuzz_filecfg_protocols/subproto.txt b/fuzz/corpus/fuzz_filecfg_protocols/subproto.txt
new file mode 100644
index 000000000..fbcb113c0
--- /dev/null
+++ b/fuzz/corpus/fuzz_filecfg_protocols/subproto.txt
@@ -0,0 +1,3 @@
+host:"disneyplus.com",host:"cdn.registerdisney.go.com",host:"disney-portal.my.onetrust.com",host:"disneyplus.bn5x.net",host:"disney-plus.net"@DisneyPlus
+host:"*.lvlt.dash.us.aiv-cdn.net.c.footprint.net"@AmazonVideo
+host:"api-global.netflix.com"@Netflix
diff --git a/fuzz/fuzz_common_code.c b/fuzz/fuzz_common_code.c
index 88b7adf2d..554c82336 100644
--- a/fuzz/fuzz_common_code.c
+++ b/fuzz/fuzz_common_code.c
@@ -58,3 +58,8 @@ void fuzz_init_detection_module(struct ndpi_detection_module_struct **ndpi_info_
ndpi_finalize_initialization(*ndpi_info_mod);
}
}
+
+FILE *buffer_to_file(const uint8_t *data, size_t size)
+{
+ return fmemopen((void *)data, size, "rw");
+}
diff --git a/fuzz/fuzz_common_code.h b/fuzz/fuzz_common_code.h
index 02df3e0cc..c5e4fb9c9 100644
--- a/fuzz/fuzz_common_code.h
+++ b/fuzz/fuzz_common_code.h
@@ -15,6 +15,8 @@ void fuzz_set_alloc_callbacks(void);
void fuzz_set_alloc_seed(int seed);
void fuzz_set_alloc_callbacks_and_seed(int seed);
+FILE *buffer_to_file(const uint8_t *data, size_t size);
+
#ifdef __cplusplus
}
#endif
diff --git a/fuzz/fuzz_config.cpp b/fuzz/fuzz_config.cpp
index 2eb933f13..c5ee02042 100644
--- a/fuzz/fuzz_config.cpp
+++ b/fuzz/fuzz_config.cpp
@@ -197,10 +197,11 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
ndpi_http_method2str(flow.http.method);
ndpi_get_l4_proto_name(ndpi_get_l4_proto_info(ndpi_info_mod, p.app_protocol));
ndpi_is_subprotocol_informative(ndpi_info_mod, p.app_protocol);
- ndpi_get_http_method(ndpi_info_mod, &flow);
+ ndpi_get_http_method(ndpi_info_mod, bool_value ? &flow : NULL);
ndpi_get_http_url(ndpi_info_mod, &flow);
ndpi_get_http_content_type(ndpi_info_mod, &flow);
ndpi_check_for_email_address(ndpi_info_mod, 0);
+ 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(ndpi_info_mod, p)) {
ndpi_guess_undetected_protocol(ndpi_info_mod, bool_value ? &flow : NULL,
diff --git a/fuzz/fuzz_filecfg_protocols.c b/fuzz/fuzz_filecfg_protocols.c
new file mode 100644
index 000000000..cba26c07c
--- /dev/null
+++ b/fuzz/fuzz_filecfg_protocols.c
@@ -0,0 +1,47 @@
+#include "ndpi_api.h"
+#include "fuzz_common_code.h"
+
+int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
+ struct ndpi_detection_module_struct *ndpi_struct;
+ FILE *fd;
+ /* Try to be fast */
+ ndpi_init_prefs prefs = ndpi_dont_load_tor_list |
+ ndpi_dont_load_azure_list |
+ ndpi_dont_load_whatsapp_list |
+ ndpi_dont_load_amazon_aws_list |
+ ndpi_dont_load_ethereum_list |
+ ndpi_dont_load_zoom_list |
+ ndpi_dont_load_cloudflare_list |
+ ndpi_dont_load_microsoft_list |
+ ndpi_dont_load_google_list |
+ ndpi_dont_load_google_cloud_list |
+ ndpi_dont_load_asn_lists |
+ ndpi_dont_init_risk_ptree |
+ ndpi_dont_load_cachefly_list |
+ ndpi_dont_load_protonvpn_list |
+ ndpi_dont_load_gambling_list |
+ ndpi_dont_load_mullvad_list;
+ NDPI_PROTOCOL_BITMASK all;
+ NDPI_PROTOCOL_BITMASK debug_bitmask;
+
+ /* To allow memory allocation failures */
+ fuzz_set_alloc_callbacks_and_seed(size);
+
+ ndpi_struct = ndpi_init_detection_module(prefs);
+ NDPI_BITMASK_SET_ALL(all);
+ ndpi_set_protocol_detection_bitmask2(ndpi_struct, &all);
+
+ NDPI_BITMASK_SET_ALL(debug_bitmask);
+ ndpi_set_log_level(ndpi_struct, 4);
+ ndpi_set_debug_bitmask(ndpi_struct, debug_bitmask);
+
+ fd = buffer_to_file(data, size);
+ ndpi_load_protocols_file2(ndpi_struct, fd);
+ if(fd)
+ fclose(fd);
+
+ /* We don't really need to call ndpi_finalize_initialization */
+
+ ndpi_exit_detection_module(ndpi_struct);
+ return 0;
+}
diff --git a/fuzz/fuzz_gcrypt_light.cpp b/fuzz/fuzz_gcrypt_light.cpp
index f75d38bee..043a90d0d 100644
--- a/fuzz/fuzz_gcrypt_light.cpp
+++ b/fuzz/fuzz_gcrypt_light.cpp
@@ -26,6 +26,9 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
/* To allow memory allocation failures */
fuzz_set_alloc_callbacks_and_seed(size);
+ gcry_control(fuzzed_data.ConsumeIntegralInRange(0, 2),
+ fuzzed_data.ConsumeIntegralInRange(0, 1));
+
/* MD */
if(fuzzed_data.ConsumeBool())
@@ -73,19 +76,19 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
if (!enc_out)
return 0;
+ h = NULL;
rc = gcry_cipher_open(&h, algo, mode, flags);
- if (rc == 0) {
- rc = gcry_cipher_setkey(h, key2.data(), key2.size());
- if (rc == 0) {
- if(fuzzed_data.ConsumeBool()) { /* To trigger MBEDTLS_ERR_CIPHER_BAD_KEY */
- rc = gcry_cipher_setkey(h, key2.data(), key2.size());
- } else {
- rc = gcry_cipher_encrypt(h, enc_out, src.size(), src.data(), src.size());
- }
- }
- gcry_cipher_ctl(h, 0, NULL, 0);
- gcry_cipher_close(h);
- }
+ gpg_strerror_r(rc, buf_err, sizeof(buf_err));
+ if(fuzzed_data.ConsumeBool())
+ gcry_cipher_setkey(h, key2.data(), key2.size());
+ if(fuzzed_data.ConsumeBool()) /* To trigger MBEDTLS_ERR_CIPHER_BAD_KEY */
+ gcry_cipher_setkey(h, key2.data(), key2.size());
+ rc = gcry_cipher_decrypt(h, enc_out, src.size(), src.data(), src.size());
+ gpg_strerror_r(rc, buf_err, sizeof(buf_err));
+ rc = gcry_cipher_encrypt(h, enc_out, src.size(), src.data(), src.size());
+ gcry_cipher_ctl(h, 0, NULL, 0);
+ gcry_cipher_close(h);
+
gpg_strerror_r(rc, buf_err, sizeof(buf_err));
/* GCM */
@@ -97,25 +100,29 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
auth_len = fuzzed_data.ConsumeIntegralInRange(0, 257); /* 257 is an invalid value */
std::vector<u_int8_t>auth = fuzzed_data.ConsumeBytes<u_int8_t>(auth_len);
+ h = NULL;
rc = gcry_cipher_open(&h, algo, mode, flags);
- if (rc == 0) {
+ gpg_strerror_r(rc, buf_err, sizeof(buf_err));
+ if(fuzzed_data.ConsumeBool()) {
rc = gcry_cipher_setkey(h, key2.data(), key2.size());
+ gpg_strerror_r(rc, buf_err, sizeof(buf_err));
+ }
+ if(fuzzed_data.ConsumeBool())
+ gcry_cipher_reset(h);
+ rc = gcry_cipher_setiv(h, iv.data(), iv.size());
+ gpg_strerror_r(rc, buf_err, sizeof(buf_err));
+ if(fuzzed_data.ConsumeBool()) { /* To trigger MBEDTLS_ERR_CIPHER_BAD_KEY */
+ rc = gcry_cipher_setiv(h, iv.data(), iv.size());
+ } else {
+ rc = gcry_cipher_authenticate(h, auth.data(), auth.size());
if (rc == 0) {
- gcry_cipher_reset(h);
- rc = gcry_cipher_setiv(h, iv.data(), iv.size());
- if (rc == 0) {
- if(fuzzed_data.ConsumeBool()) { /* To trigger MBEDTLS_ERR_CIPHER_BAD_KEY */
- rc = gcry_cipher_setiv(h, iv.data(), iv.size());
- } else {
- rc = gcry_cipher_authenticate(h, auth.data(), auth.size());
- if (rc == 0) {
- rc = gcry_cipher_decrypt(h, enc_out, src.size(), src.data(), src.size());
- }
- }
- }
+ rc = gcry_cipher_encrypt(h, enc_out, src.size(), src.data(), src.size());
+ gpg_strerror_r(rc, buf_err, sizeof(buf_err));
+ rc = gcry_cipher_decrypt(h, enc_out, src.size(), src.data(), src.size());
}
- gcry_cipher_close(h);
}
+ gcry_cipher_close(h);
+
gpg_strerror_r(rc, buf_err, sizeof(buf_err));
ndpi_free(enc_out);
diff --git a/fuzz/fuzz_ndpi_reader.c b/fuzz/fuzz_ndpi_reader.c
index f29506b36..8b1674c9b 100644
--- a/fuzz/fuzz_ndpi_reader.c
+++ b/fuzz/fuzz_ndpi_reader.c
@@ -30,22 +30,6 @@ extern void ndpi_report_payload_stats(FILE *out);
extern int force_no_aesni;
#endif
-FILE *bufferToFile(const uint8_t *Data, size_t Size) {
- FILE *fd;
- fd = tmpfile();
- if (fd == NULL) {
- perror("Error tmpfile");
- return NULL;
- }
- if (fwrite (Data, 1, Size, fd) != Size) {
- perror("Error fwrite");
- fclose(fd);
- return NULL;
- }
- rewind(fd);
- return fd;
-}
-
int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
pcap_t * pkts;
const u_char *pkt;
@@ -106,10 +90,10 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
#ifdef ENABLE_MEM_ALLOC_FAILURES
/* Don't fail memory allocations until init phase is done */
- fuzz_set_alloc_seed(Size);
+ fuzz_set_alloc_callbacks_and_seed(Size);
#endif
- fd = bufferToFile(Data, Size);
+ fd = buffer_to_file(Data, Size);
if (fd == NULL)
return 0;
@@ -159,5 +143,11 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
if(enable_payload_analyzer)
ndpi_report_payload_stats(NULL);
+#ifdef ENABLE_PAYLOAD_ANALYZER
+ ndpi_update_params(SPLT_PARAM_TYPE, "splt_param.txt");
+ ndpi_update_params(BD_PARAM_TYPE, "bd_param.txt");
+ ndpi_update_params(2, ""); /* invalid */
+#endif
+
return 0;
}
diff --git a/fuzz/splt_param.txt b/fuzz/splt_param.txt
new file mode 100644
index 000000000..cfaeb8918
--- /dev/null
+++ b/fuzz/splt_param.txt
@@ -0,0 +1,209 @@
+-2.088057846500587456e+00
+7.763936238952200239e-05
+4.404309737393306595e-05
+-9.467385027293546973e-02
+4.348947142638090457e-01
+-2.091409170053043390e-04
+-5.788902107267982974e-04
+4.481443450852441001e-10
+-3.136135459023654537e+00
+-1.507730262127600751e+00
+-1.204663669965535977e+00
+-1.171839254318371104e+00
+4.329302247232582057e-01
+8.310653628092458334e+00
+3.299246725156660176e+00
+0.000000000000000000e+00
+1.847454931582027254e-02
+-1.498024139966201096e+00
+-7.660670007653060942e-01
+-2.908130300830076731e+00
+-1.252564844610269734e+00
+-1.910955328742287573e+00
+9.471710980110392697e-01
+2.352302758516665371e+00
+2.982269972214651954e+00
+4.280736383314343918e+00
+4.633629909719495288e+00
+-2.198052637823726840e+00
+-1.150759637168392580e+00
+3.420433363184381292e+00
+1.857878113059351077e-02
+-1.559806674919653746e+00
+4.197498183183401288e+00
+6.262186949633183453e+00
+1.100694844370524095e+01
+2.778688785515088000e+01
+3.679948298336883195e+00
+-2.432801394376875592e+00
+5.133442052706843617e-01
+2.181172654073517680e+00
+-8.577551729671881731e-01
+7.013844214023315926e-01
+3.138233436228588857e+00
+7.319940508466630247e-01
+0.000000000000000000e+00
+3.529209394581482861e+00
+1.464585117707144413e+01
+8.506550226820598359e-01
+-9.060397326548508268e-01
+6.787474954688997641e+00
+8.125411068867387954e+00
+4.515740684104064151e+00
+5.372135582950940069e+00
+9.210951196799497254e-01
+4.802177410869620466e+00
+2.945445016176073594e+01
+1.575032253128311632e+00
+-1.355276854364796946e-01
+-3.322474764169629502e-01
+3.018397817188666732e+00
+1.186503569922195744e+00
+0.000000000000000000e+00
+8.883242370198487503e-01
+7.248276146728496627e+00
+0.000000000000000000e+00
+0.000000000000000000e+00
+-4.831246718433664711e+00
+6.124136970173365002e-01
+4.145693892559814686e-01
+2.683998941637626867e+00
+2.063906603639539039e+00
+2.989801217386735210e+00
+2.262965767379551962e-01
+2.240332214649647380e+00
+5.984550782416063086e+00
+4.587011255338186544e+00
+1.233118485315272039e+01
+1.115223490909697857e+00
+-3.682686422016995476e+00
+6.096498453291562258e-01
+1.119275528656461516e+00
+1.377886278915177731e-01
+3.828176805973048324e+00
+0.000000000000000000e+00
+0.000000000000000000e+00
+1.442927634029647344e+01
+0.000000000000000000e+00
+5.719118583309401593e-01
+1.993632609731877392e-01
+3.047472271520709430e+00
+5.736784864911910198e+00
+6.677826247219391220e+00
+6.307175478564531090e+00
+3.150295169417364249e+01
+3.738597740702392258e+00
+1.129754590514236234e+01
+6.108506268573830056e+00
+1.605489516792866667e+00
+2.929631990348545489e+00
+-2.832543082245212937e-02
+1.358286530670594461e+00
+1.655932469853677924e+00
+6.701964773769768513e-01
+2.131182050917533211e+00
+2.998351165769753468e+00
+7.772095996358327596e+00
+1.285014785269981141e+00
+4.407334784589962418e+00
+1.719858214230612026e+00
+-1.012765674651314063e+00
+-5.749271123172469133e-01
+-3.559614093795681278e+00
+-3.073088477387719397e+00
+-4.492469521371540431e+00
+-3.753286990415885427e+00
+-3.219255423324282273e+00
+-2.806436518181075090e+00
+-2.697305948568419875e+00
+-7.879608430851776646e-01
+4.625507221739111330e+00
+4.809280703883450414e+00
+-3.435194026629848629e+00
+-3.218943068168937049e+00
+3.335535704890596698e+00
+2.071359212435486263e+00
+4.538992059175040339e+00
+-2.770772323566738038e+01
+2.903047708571506735e+00
+-4.436143805989154032e+00
+-2.647991280011542381e-01
+1.737252348126810064e+00
+-4.121989655995259128e+00
+3.209709099445720581e-01
+1.012758514896711759e+01
+3.313255624721038295e+00
+4.631467619785444967e+00
+7.668642402146534032e+00
+6.780938812710099128e+00
+-3.256164342602652972e+00
+6.749565128319576779e-01
+0.000000000000000000e+00
+-4.407265954524525853e+00
+0.000000000000000000e+00
+-3.666522115024547901e+01
+-7.886029397826226273e+01
+0.000000000000000000e+00
+0.000000000000000000e+00
+-2.261283814517791058e+01
+-4.024317426178160240e+00
+3.213063737030031342e-01
+5.079805145796887800e+00
+1.326813226475260343e+00
+1.233684078112145643e+00
+8.671852503871454232e+00
+-2.041800256066371944e+00
+0.000000000000000000e+00
+0.000000000000000000e+00
+-1.607347800380474823e+01
+-4.430790279223246309e+00
+1.177552465851384511e+00
+6.342921220500139512e+00
+-2.466913734548706327e-02
+3.451642566010713065e-01
+-6.012767168531006234e+00
+7.328146570137336724e+00
+7.500088131707050465e+00
+0.000000000000000000e+00
+-3.547913249211809017e+01
+-3.130964814607208879e+00
+8.247326544297072237e-01
+3.757262485775580418e-01
+-2.136528302027558723e+00
+-2.631627236037529793e-01
+-2.016718799388414141e+01
+0.000000000000000000e+00
+0.000000000000000000e+00
+0.000000000000000000e+00
+-7.708602132869285528e-01
+-2.602868328868111814e+00
+1.435184800833797958e+00
+0.000000000000000000e+00
+-2.080420864280113413e+00
+1.169498351211070819e+00
+-1.798334115637199560e+01
+-1.193885252696202670e+01
+0.000000000000000000e+00
+0.000000000000000000e+00
+4.304089297965300709e+00
+-3.020893216686394656e+00
+-1.234427481614708721e+00
+0.000000000000000000e+00
+1.853340741926325697e+00
+-2.686000064995862147e+01
+-1.672275139058893600e+01
+-2.826268691607605987e+01
+0.000000000000000000e+00
+0.000000000000000000e+00
+-1.547397429377200817e+00
+-4.018181657009961327e+00
+-7.289186736637049968e+00
+-7.458655219230571731e+00
+-9.625538282761622710e+00
+-1.103039457077456298e+01
+-6.262675161142102809e+01
+-9.265912629799268885e+00
+-8.961543476816615339e+00
+-9.622764435629340696e+00
+-1.097978292092879826e+01
+-1.097978292092879826e+01