From 6d2e0ce930c0441a35e5655bd30a35f27a98ee24 Mon Sep 17 00:00:00 2001 From: Ivan Kapranov <44571881+koltiradw@users.noreply.github.com> Date: Mon, 17 Feb 2025 15:38:24 +0300 Subject: added metadata fields for M-NOTIFY (#2733) --- src/lib/protocols/ssdp.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src/lib/protocols') diff --git a/src/lib/protocols/ssdp.c b/src/lib/protocols/ssdp.c index acaf14e47..bd9f857ba 100644 --- a/src/lib/protocols/ssdp.c +++ b/src/lib/protocols/ssdp.c @@ -176,6 +176,38 @@ static void ssdp_parse_lines(struct ndpi_detection_module_struct flow->protos.ssdp.server[packet->server_line.len] = '\0'; } } + + if (packet->man.ptr != NULL && packet->man.len > 0) { + flow->protos.ssdp.man = ndpi_malloc(packet->man.len + 1); + if (flow->protos.ssdp.man) { + memcpy(flow->protos.ssdp.man, packet->man.ptr, packet->man.len); + flow->protos.ssdp.man[packet->man.len] = '\0'; + } + } + + if (packet->mx.ptr != NULL && packet->mx.len > 0) { + flow->protos.ssdp.mx = ndpi_malloc(packet->mx.len + 1); + if (flow->protos.ssdp.mx) { + memcpy(flow->protos.ssdp.mx, packet->mx.ptr, packet->mx.len); + flow->protos.ssdp.mx[packet->mx.len] = '\0'; + } + } + + if (packet->st.ptr != NULL && packet->st.len > 0) { + flow->protos.ssdp.st = ndpi_malloc(packet->st.len + 1); + if (flow->protos.ssdp.st) { + memcpy(flow->protos.ssdp.st, packet->st.ptr, packet->st.len); + flow->protos.ssdp.st[packet->st.len] = '\0'; + } + } + + if (packet->user_agent_line.ptr != NULL && packet->user_agent_line.len > 0) { + flow->protos.ssdp.user_agent = ndpi_malloc(packet->user_agent_line.len + 1); + if (flow->protos.ssdp.user_agent) { + memcpy(flow->protos.ssdp.user_agent, packet->user_agent_line.ptr, packet->user_agent_line.len); + flow->protos.ssdp.user_agent[packet->user_agent_line.len] = '\0'; + } + } } static void ndpi_int_ssdp_add_connection(struct ndpi_detection_module_struct -- cgit v1.2.3