aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/ndpi_serializer.c109
1 files changed, 62 insertions, 47 deletions
diff --git a/src/lib/ndpi_serializer.c b/src/lib/ndpi_serializer.c
index bfbd56eb6..850973eaf 100644
--- a/src/lib/ndpi_serializer.c
+++ b/src/lib/ndpi_serializer.c
@@ -130,6 +130,21 @@ static int ndpi_json_string_escape(const char *src, int src_len, char *dst, int
/* ********************************** */
+/* Similar to snprintf, this returns the number of bytes actually written
+ * in any case (unlike snprintf which returns, if the output is truncated,
+ * the number of bytes which *would have been* written)
+ */
+static inline int ndpi_snappend(char *buf, size_t size, const char *fmt, ...) {
+ size_t wlen;
+ va_list va;
+ va_start (va, fmt);
+ wlen = snprintf(buf, size, fmt, va);
+ va_end (va);
+ return ndpi_min(size, wlen);
+}
+
+/* ********************************** */
+
void ndpi_reset_serializer(ndpi_serializer *_serializer) {
ndpi_private_serializer *serializer = (ndpi_private_serializer*)_serializer;
@@ -142,7 +157,7 @@ void ndpi_reset_serializer(ndpi_serializer *_serializer) {
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
/* Note: please keep a space at the beginning as it is used for arrays when an end-of-record is used */
- serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, " {}");
+ serializer->status.buffer.size_used += ndpi_snappend((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, " {}");
} else if(serializer->fmt == ndpi_serialization_format_csv) {
serializer->status.header.size_used = 0;
serializer->status.buffer.size_used = 0;
@@ -258,7 +273,7 @@ static inline int ndpi_serializer_header_uint32(ndpi_private_serializer *seriali
if (room < 0)
return -1;
- serializer->status.header.size_used += snprintf((char *) &serializer->header.data[serializer->status.header.size_used],
+ serializer->status.header.size_used += ndpi_snappend((char *) &serializer->header.data[serializer->status.header.size_used],
room, "%s%u", (serializer->status.header.size_used > 0) ? serializer->csv_separator : "", key);
return 0;
@@ -607,7 +622,7 @@ int ndpi_serialize_end_of_record(ndpi_serializer *_serializer) {
} else if(serializer->fmt == ndpi_serialization_format_json) {
if(!(serializer->status.flags & NDPI_SERIALIZER_STATUS_ARRAY)) {
serializer->buffer.data[0] = '[';
- serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used],
+ serializer->status.buffer.size_used += ndpi_snappend((char *) &serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "]");
}
@@ -631,7 +646,7 @@ static inline void ndpi_serialize_csv_pre(ndpi_private_serializer *serializer) {
/* nothing to do */
} else {
u_int32_t buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, "%s",
serializer->csv_separator);
}
@@ -727,13 +742,13 @@ int ndpi_serialize_uint32_uint32(ndpi_serializer *_serializer,
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "\"%u\":", key);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "%u", value);
@@ -742,7 +757,7 @@ int ndpi_serialize_uint32_uint32(ndpi_serializer *_serializer,
if (ndpi_serializer_header_uint32(serializer, key) < 0) return(-1);
ndpi_serialize_csv_pre(serializer);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%u", value);
} else {
@@ -795,13 +810,13 @@ int ndpi_serialize_uint32_uint64(ndpi_serializer *_serializer,
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"\"%u\":", key);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%llu", (unsigned long long)value);
@@ -810,7 +825,7 @@ int ndpi_serialize_uint32_uint64(ndpi_serializer *_serializer,
if (ndpi_serializer_header_uint32(serializer, key) < 0) return(-1);
ndpi_serialize_csv_pre(serializer);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%llu", (unsigned long long)value);
} else {
@@ -859,13 +874,13 @@ int ndpi_serialize_uint32_int32(ndpi_serializer *_serializer,
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "\"%u\":", key);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "%d", value);
@@ -874,7 +889,7 @@ int ndpi_serialize_uint32_int32(ndpi_serializer *_serializer,
if (ndpi_serializer_header_uint32(serializer, key) < 0) return(-1);
ndpi_serialize_csv_pre(serializer);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%d", value);
} else {
@@ -927,13 +942,13 @@ int ndpi_serialize_uint32_int64(ndpi_serializer *_serializer,
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "\"%u\":", key);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "%lld", (long long int)value);
@@ -942,7 +957,7 @@ int ndpi_serialize_uint32_int64(ndpi_serializer *_serializer,
if (ndpi_serializer_header_uint32(serializer, key) < 0) return(-1);
ndpi_serialize_csv_pre(serializer);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%lld", (long long int)value);
}
@@ -993,18 +1008,18 @@ int ndpi_serialize_uint32_float(ndpi_serializer *_serializer,
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, "\"%u\":", key);
+ serializer->status.buffer.size_used += ndpi_snappend((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, "\"%u\":", key);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, format, value);
+ serializer->status.buffer.size_used += ndpi_snappend((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, format, value);
ndpi_serialize_json_post(_serializer);
} else if(serializer->fmt == ndpi_serialization_format_csv) {
if (ndpi_serializer_header_uint32(serializer, key) < 0) return(-1);
ndpi_serialize_csv_pre(serializer);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, format, value);
+ serializer->status.buffer.size_used += ndpi_snappend((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, format, value);
} else {
ndpi_serialization_type kt;
@@ -1049,7 +1064,7 @@ static int ndpi_serialize_uint32_binary(ndpi_serializer *_serializer,
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used],
+ serializer->status.buffer.size_used += ndpi_snappend((char *) &serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "\"%u\":", key);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
@@ -1061,7 +1076,7 @@ static int ndpi_serialize_uint32_binary(ndpi_serializer *_serializer,
if (ndpi_serializer_header_uint32(serializer, key) < 0) return(-1);
ndpi_serialize_csv_pre(serializer);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%s", value);
} else {
@@ -1112,13 +1127,13 @@ int ndpi_serialize_uint32_boolean(ndpi_serializer *_serializer,
ndpi_serialize_json_pre(_serializer);
if (!(serializer->status.flags & NDPI_SERIALIZER_STATUS_LIST)) {
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "\"%u\":", key);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "%s", value ? "true" : "false");
@@ -1127,7 +1142,7 @@ int ndpi_serialize_uint32_boolean(ndpi_serializer *_serializer,
if (ndpi_serializer_header_uint32(serializer, key) < 0) return(-1);
ndpi_serialize_csv_pre(serializer);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%s", value ? "true" : "false");
}
@@ -1170,12 +1185,12 @@ int ndpi_serialize_binary_int32(ndpi_serializer *_serializer,
serializer->status.buffer.size_used += ndpi_json_string_escape(key, klen,
(char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, ":");
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, "%d", value);
ndpi_serialize_json_post(_serializer);
@@ -1183,7 +1198,7 @@ int ndpi_serialize_binary_int32(ndpi_serializer *_serializer,
if (ndpi_serializer_header_string(serializer, key, klen) < 0) return(-1);
ndpi_serialize_csv_pre(serializer);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%d", value);
} else {
@@ -1248,13 +1263,13 @@ int ndpi_serialize_binary_int64(ndpi_serializer *_serializer,
serializer->status.buffer.size_used += ndpi_json_string_escape(key, klen,
(char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
":");
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%lld", (long long int)value);
@@ -1263,7 +1278,7 @@ int ndpi_serialize_binary_int64(ndpi_serializer *_serializer,
if (ndpi_serializer_header_string(serializer, key, klen) < 0) return(-1);
ndpi_serialize_csv_pre(serializer);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
+ serializer->status.buffer.size_used += ndpi_snappend((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%lld", (long long int)value);
} else {
if ((value & 0xFFFFFFFF) == value) {
@@ -1320,13 +1335,13 @@ int ndpi_serialize_binary_uint32(ndpi_serializer *_serializer,
(char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, ":");
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used],
buff_diff, "%u", value);
@@ -1335,7 +1350,7 @@ int ndpi_serialize_binary_uint32(ndpi_serializer *_serializer,
if (ndpi_serializer_header_string(serializer, key, klen) < 0) return(-1);
ndpi_serialize_csv_pre(serializer);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%u", value);
} else {
@@ -1382,7 +1397,7 @@ int ndpi_serialize_string_uint32_format(ndpi_serializer *_serializer,
} else {
char buf[16];
- snprintf(buf, sizeof(buf), format, value);
+ ndpi_snappend(buf, sizeof(buf), format, value);
return(ndpi_serialize_string_string(_serializer, key, buf));
}
}
@@ -1421,13 +1436,13 @@ int ndpi_serialize_binary_uint64(ndpi_serializer *_serializer,
serializer->status.buffer.size_used += ndpi_json_string_escape(key, klen,
(char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
":");
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%llu", (unsigned long long)value);
@@ -1436,7 +1451,7 @@ int ndpi_serialize_binary_uint64(ndpi_serializer *_serializer,
if (ndpi_serializer_header_string(serializer, key, klen) < 0) return(-1);
ndpi_serialize_csv_pre(serializer);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%llu", (unsigned long long)value);
} else {
@@ -1500,14 +1515,14 @@ int ndpi_serialize_binary_float(ndpi_serializer *_serializer,
serializer->status.buffer.size_used++;
}
- serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, format, value);
+ serializer->status.buffer.size_used += ndpi_snappend((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, format, value);
ndpi_serialize_json_post(_serializer);
} else if(serializer->fmt == ndpi_serialization_format_csv) {
if (ndpi_serializer_header_string(serializer, key, klen) < 0) return(-1);
ndpi_serialize_csv_pre(serializer);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, format, value);
+ serializer->status.buffer.size_used += ndpi_snappend((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, format, value);
} else {
serializer->buffer.data[serializer->status.buffer.size_used++] = (ndpi_serialization_string << 4) | ndpi_serialization_float;
@@ -1564,7 +1579,7 @@ static int ndpi_serialize_binary_raw(ndpi_serializer *_serializer,
serializer->status.buffer.size_used += ndpi_json_string_escape(key, klen,
(char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, ":");
+ serializer->status.buffer.size_used += ndpi_snappend((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, ":");
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
@@ -1572,7 +1587,7 @@ static int ndpi_serialize_binary_raw(ndpi_serializer *_serializer,
serializer->status.buffer.size_used += ndpi_json_string_escape(value, vlen,
(char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff);
else
- serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
+ serializer->status.buffer.size_used += ndpi_snappend((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
value, vlen);
ndpi_serialize_json_post(_serializer);
@@ -1580,7 +1595,7 @@ static int ndpi_serialize_binary_raw(ndpi_serializer *_serializer,
if (ndpi_serializer_header_string(serializer, key, klen) < 0) return(-1);
ndpi_serialize_csv_pre(serializer);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%s", value);
} else {
@@ -1667,12 +1682,12 @@ int ndpi_serialize_string_boolean(ndpi_serializer *_serializer,
serializer->status.buffer.size_used += ndpi_json_string_escape(key, klen,
(char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, ":");
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
}
- serializer->status.buffer.size_used += snprintf((char *)
+ serializer->status.buffer.size_used += ndpi_snappend((char *)
&serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, "%s",
value ? "true" : "false");
@@ -1681,7 +1696,7 @@ int ndpi_serialize_string_boolean(ndpi_serializer *_serializer,
if (ndpi_serializer_header_string(serializer, key, strlen(key)) < 0) return(-1);
ndpi_serialize_csv_pre(serializer);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
+ serializer->status.buffer.size_used += ndpi_snappend((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff,
"%s", value ? "true" : "false");
}
@@ -1715,7 +1730,7 @@ int ndpi_serialize_start_of_list(ndpi_serializer *_serializer,
(char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, ": [");
+ serializer->status.buffer.size_used += ndpi_snappend((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, ": [");
serializer->status.flags |= NDPI_SERIALIZER_STATUS_LIST | NDPI_SERIALIZER_STATUS_SOL;
@@ -1767,7 +1782,7 @@ int ndpi_serialize_start_of_block_binary(ndpi_serializer *_serializer,
serializer->status.buffer.size_used += ndpi_json_string_escape(key, klen,
(char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff);
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
- serializer->status.buffer.size_used += snprintf((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, ": {");
+ serializer->status.buffer.size_used += ndpi_snappend((char *) &serializer->buffer.data[serializer->status.buffer.size_used], buff_diff, ": {");
buff_diff = serializer->buffer.size - serializer->status.buffer.size_used;
ndpi_serialize_json_post(_serializer);