Allocate a new `ZMQParserInterface` object at every interaction: this way
we don't accumulate too much state, triggering OOM
```
==249== ERROR: libFuzzer: out-of-memory (used: 2562Mb; limit: 2560Mb)
To change the out-of-memory limit use -rss_limit_mb=<N>
Live Heap Allocations: 2017715407 bytes in 720226 chunks; quarantined: 60463295 bytes in 41654 chunks; 190070 other chunks; total chunks: 951950; showing top 95% (at most 8 unique contexts)
1911420284 byte(s) (94%) in 60684 allocation(s)
#0 0x57347e96f5ed in operator new(unsigned long) /src/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:109:35
[..]
#7 0x57347eb57f2e in make_pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > &, std::__1::pair<unsigned int, unsigned int> &> /usr/local/include/c++/v1/__utility/pair.h:551:10
#8 0x57347eb57f2e in ZMQParserInterface::addMapping(char const*, unsigned int, unsigned int, char const*) ntopng/src/ZMQParserInterface.cpp:358:23
#9 0x57347eb6c87c in ZMQParserInterface::parseTemplate(char const*, int, void*) ntopng/src/ZMQParserInterface.cpp:3115:11
#10 0x57347e97158e in LLVMFuzzerTestOneInput ntopng/fuzz/fuzz_zmq_flow.cpp:217:18
```
Found by oss-fuzz
* fuzz: add SNMP response and syslog parser fuzz targets, wire flow-checks into `fuzz_dissect_packet`
- `fuzz_snmp_response`: fuzzes `SNMP::handle_async_response()` (`src/SNMP.cpp`) via
net-snmp's real `snmp_parse()`, gated entirely behind `HAVE_LIBSNMP` so it only
does real work on standard builds; requires `SNMP::vm` to be initialized in
the constructor since the harness calls `handle_async_response()` directly
without going through the normal request/response flow.
- `fuzz_syslog_parse`: fuzzes `SyslogParserInterface::parseLog()`.
- `fuzz_dissect_packet`: after the packet-dissection loop, replicate the
post-pcap-read sequence PcapInterface.cpp runs in real pcap-replay mode
(two full `purgeIdle()` scans + a `flow_end_housekeeping() walk`) so
protocol_detected and flow_end flow-checks are deterministically exercised
on every run instead of only by accident when the mutator happens to
produce idle-triggering packet timestamps.
* First sketch of fuzzing
* Add m4 script
The script is used in the fuzzing build
* Add stub sources in the makefile
* [Fuzz] Add RedisStub
* Add gitignore for fuzz dir
* Remove definition of non-implemented method
* [Fuzz] Refactoring code
* [Fuzz] Separate the protobuf support in the makefile
* Clean fuzzing related object files
* [Fuzz] Fix makefile
* Change gitignore
* [Fuzz] Separate headers
* [Fuzz] Add README.md
* [Fuzz] Change make target
* [Fuzz] Update README.md
* Add compatibilty with autoconf < 2.71
* Optionally disable hiredis integration
* Include hiredis only for production build
* [Fuzz] Disable period activities
* Remove unused dependencies for librrd
* Optionally use static linking for zmq library
* Add debug output regarding the linking of libzmq
* [Fuzz] Do not run on empty input
* Optionally use static linking for libjson-c
* Optionally use static linking for libmaxminddb
* Make mysqlclient dependency as optional
* Change gitignore
* [Fuzz] Add corpus for fuzz_dissect_packet
* [Fuzz] Refactor fuzz_dissect_packet
* Change gitignore
* [Fuzz] Use correct naming for corpus
* [Fuzz] Add dictionary
* [Fuzz] Fix declaration of LLVMFuzzerInitialize
* [Fuzz] Refactor onefile
* [Fuzz] Fix the initialization memory leaks
* [Fuzz] Fix invocation of LLVMFuzzerInitialize
* Remove double githooks folder
* [Fuzz] Set interface pcap_data_link
* Change gitignore
* Use pkg-config for detecting protobuf libraries
* Add license
* Improve error message