From bb3c2e82de91860808ca79e43a3bbe09a1c39298 Mon Sep 17 00:00:00 2001
From: Toni <matzeton@googlemail.com>
Date: Tue, 7 Jun 2022 11:15:47 +0200
Subject: Dissect host line if SSDP contains such. (#1586)

Signed-off-by: lns <matzeton@googlemail.com>
---
 src/include/ndpi_typedefs.h |  2 +-
 src/lib/protocols/ssdp.c    | 10 +++++++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

(limited to 'src')

diff --git a/src/include/ndpi_typedefs.h b/src/include/ndpi_typedefs.h
index 78e879a0d..2ffb35621 100644
--- a/src/include/ndpi_typedefs.h
+++ b/src/include/ndpi_typedefs.h
@@ -1191,7 +1191,7 @@ struct ndpi_flow_struct {
   char flow_extra_info[16];
 
   /* General purpose field used to save mainly hostname/SNI information.
-   * In details it used for: DNS and NETBIOS name, HTTP and DHCP hostname,
+   * In details it used for: DNS, SSDP and NETBIOS name, HTTP and DHCP hostname,
    * WHOIS request, TLS/QUIC server name, XIAOMI domain and STUN realm.
    *
    * Please, think *very* hard before increasing its size!
diff --git a/src/lib/protocols/ssdp.c b/src/lib/protocols/ssdp.c
index 9fb1d0eae..6fe96309a 100644
--- a/src/lib/protocols/ssdp.c
+++ b/src/lib/protocols/ssdp.c
@@ -37,12 +37,20 @@ static void ssdp_parse_lines(struct ndpi_detection_module_struct
   ndpi_parse_packet_line_info(ndpi_struct, flow);
 
   /* Save user-agent for device discovery if available */
-  if(packet->user_agent_line.ptr != NULL && packet->user_agent_line.len != 0) {
+  if(packet->user_agent_line.ptr != NULL && packet->user_agent_line.len > 0) {
     if (ndpi_user_agent_set(flow, packet->user_agent_line.ptr, packet->user_agent_line.len) == NULL)
     {
       NDPI_LOG_DBG2(ndpi_struct, "Could not set SSDP user agent\n");
     }
   }
+
+  /* Save host which provides a service if available */
+  if (packet->host_line.ptr != NULL && packet->host_line.len > 0) {
+    if (ndpi_hostname_sni_set(flow, packet->host_line.ptr, packet->host_line.len) == NULL)
+    {
+      NDPI_LOG_DBG2(ndpi_struct, "Could not set SSDP host\n");
+    }
+  }
 }
 
 static void ndpi_int_ssdp_add_connection(struct ndpi_detection_module_struct
-- 
cgit v1.2.3