mirror of
https://github.com/vel21ripn/nDPI.git
synced 2026-04-29 15:39:42 +00:00
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`)
This commit is contained in:
parent
eea9956430
commit
6d00a9e0bd
144 changed files with 564 additions and 78 deletions
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue