From 186e89a7330215da323335d2416a1e6e5acdf994 Mon Sep 17 00:00:00 2001 From: Toni Uhlig Date: Tue, 26 Oct 2021 13:16:23 +0200 Subject: Detect invalid characters in text and set a risk. Fixes #1347. Signed-off-by: Toni Uhlig --- src/lib/ndpi_utils.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/lib/ndpi_utils.c') diff --git a/src/lib/ndpi_utils.c b/src/lib/ndpi_utils.c index 602e4c145..76b427e87 100644 --- a/src/lib/ndpi_utils.c +++ b/src/lib/ndpi_utils.c @@ -1800,7 +1800,10 @@ const char* ndpi_risk2str(ndpi_risk_enum risk) { case NDPI_DNS_FRAGMENTED: return("Fragmented DNS message"); - + + case NDPI_INVALID_CHARACTERS: + return("Text contains non-printable characters"); + default: snprintf(buf, sizeof(buf), "%d", (int)risk); return(buf); @@ -2140,14 +2143,17 @@ void ndpi_set_risk(struct ndpi_detection_module_struct *ndpi_str, /* ******************************************************************** */ -int ndpi_is_printable_string(char const * const str, size_t len) { +int ndpi_is_printable_string(char * const str, size_t len) { + int retval = 1; + for (size_t i = 0; i < len; ++i) { if (ndpi_isprint(str[i]) == 0) { - return 0; + str[i] = '?'; + retval = 0; } } - return 1; + return retval; } /* ******************************************************************** */ -- cgit v1.2.3