aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoremanuele-f <black.silver@hotmail.it>2019-08-29 22:40:29 +0200
committeremanuele-f <black.silver@hotmail.it>2019-08-29 22:40:29 +0200
commit1bf23dc2a8bd4c432f8def8048d40ddad710fa9d (patch)
treec7013ce49c018154c8e460cd0d2cda1d973c768a /src
parentfce2cd98178166cd62179cf7f3bde2eccc0a5009 (diff)
Fix mangled stack by invalid sscanf
Diffstat (limited to 'src')
-rw-r--r--src/lib/ndpi_main.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/lib/ndpi_main.c b/src/lib/ndpi_main.c
index 555a3a2a7..7076fd1ac 100644
--- a/src/lib/ndpi_main.c
+++ b/src/lib/ndpi_main.c
@@ -2655,8 +2655,13 @@ int ndpi_handle_rule(struct ndpi_detection_module_struct *ndpi_mod,
}
if(is_tcp || is_udp) {
- if(sscanf(value, "%u-%u", (u_int32_t *)&range.port_low, (u_int32_t *)&range.port_high) != 2)
+ u_int p_low, p_high;
+
+ if(sscanf(value, "%u-%u", &p_low, &p_high) == 2)
+ range.port_low = p_low, range.port_high = p_high;
+ else
range.port_low = range.port_high = atoi(&elem[4]);
+
if(do_add)
addDefaultPort(ndpi_mod, &range, def, 1 /* Custom user proto */,
is_tcp ? &ndpi_mod->tcpRoot : &ndpi_mod->udpRoot, __FUNCTION__,__LINE__);