aboutsummaryrefslogtreecommitdiff
path: root/tests/unit
diff options
context:
space:
mode:
authorIvan Nardi <12729895+IvanNardi@users.noreply.github.com>2023-01-27 07:09:18 +0100
committerGitHub <noreply@github.com>2023-01-27 07:09:18 +0100
commit6d00a9e0bd4cdb2be26577f53b75b3078cefd4c3 (patch)
tree327e7d1bc8e89a990e99ea8cfb4a748c80d12f32 /tests/unit
parenteea99564308fffca675918506a6e12f7a4f71a6f (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.c15
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);