diff options
author | Ivan Nardi <12729895+IvanNardi@users.noreply.github.com> | 2023-01-27 07:09:18 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-27 07:09:18 +0100 |
commit | 6d00a9e0bd4cdb2be26577f53b75b3078cefd4c3 (patch) | |
tree | 327e7d1bc8e89a990e99ea8cfb4a748c80d12f32 /tests/unit | |
parent | eea99564308fffca675918506a6e12f7a4f71a6f (diff) |
fuzz: add a new fuzzer to test serialization/deserialization code (#1876)
Autodetecting the needed buffer size is quite complex (especially with
float/double values) so it is mandatory to properly check for
`ndpi_snprintf` truncation.
These issues have been undetected so far probably because the default
buffer is big enough for all common cases.
Add an example of usage of `ndpi_deserialize_clone_all()` (taken from
`ntopng`)
Diffstat (limited to 'tests/unit')
-rw-r--r-- | tests/unit/unit.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/tests/unit/unit.c b/tests/unit/unit.c index 440ffadf4..5212c768e 100644 --- a/tests/unit/unit.c +++ b/tests/unit/unit.c @@ -65,7 +65,7 @@ static int verbose = 0; #define FLT_MAX 3.402823466e+38F int serializerUnitTest() { - ndpi_serializer serializer, deserializer; + ndpi_serializer serializer, serializer_cloned, deserializer; int i, loop_id; ndpi_serialization_format fmt = {0}; u_int32_t buffer_len; @@ -74,6 +74,7 @@ int serializerUnitTest() { json_object *j; memset(&serializer, 0, sizeof(serializer)); + memset(&serializer_cloned, 0, sizeof(serializer_cloned)); memset(&deserializer, 0, sizeof(deserializer)); for(loop_id=0; loop_id<3; loop_id++) { @@ -234,6 +235,18 @@ int serializerUnitTest() { ndpi_deserialize_next(&deserializer); } + + /* Converting from TLV to JSON */ + + assert(ndpi_init_deserializer(&deserializer, &serializer) != -1); + assert(ndpi_init_serializer(&serializer_cloned, ndpi_serialization_format_json) != -1); + assert(ndpi_deserialize_clone_all(&deserializer, &serializer_cloned) == 0); + + buffer = ndpi_serializer_get_buffer(&serializer_cloned, &buffer_len); + if(verbose) + printf("TLV->JSON: %s\n", buffer); + + ndpi_term_serializer(&serializer_cloned); } ndpi_term_serializer(&serializer); |