aboutsummaryrefslogtreecommitdiff
path: root/src/lib/protocols
diff options
context:
space:
mode:
authorToni <matzeton@googlemail.com>2022-04-25 13:00:50 +0200
committerGitHub <noreply@github.com>2022-04-25 13:00:50 +0200
commitbc2ad3407a1cf7f6d2913f113df31dfbf735c6f6 (patch)
treea06e65f5d38238a894dea0415b2b6584cd027e4f /src/lib/protocols
parent075bce5f3de463975464472158dca980a45f48a3 (diff)
Added generic user agent setter. (#1530)
* ndpiReader: Print user agent if one was set and not just for certain protocols. Signed-off-by: lns <matzeton@googlemail.com>
Diffstat (limited to 'src/lib/protocols')
-rw-r--r--src/lib/protocols/http.c13
-rw-r--r--src/lib/protocols/ssdp.c10
-rw-r--r--src/lib/protocols/xiaomi.c7
3 files changed, 11 insertions, 19 deletions
diff --git a/src/lib/protocols/http.c b/src/lib/protocols/http.c
index 8b65ece50..8ecadb303 100644
--- a/src/lib/protocols/http.c
+++ b/src/lib/protocols/http.c
@@ -535,14 +535,11 @@ int http_process_user_agent(struct ndpi_detection_module_struct *ndpi_struct,
}
}
- if(flow->http.user_agent == NULL) {
- flow->http.user_agent = ndpi_malloc(ua_ptr_len + 1);
- if(flow->http.user_agent) {
- memcpy(flow->http.user_agent, (char*)ua_ptr, ua_ptr_len);
- flow->http.user_agent[ua_ptr_len] = '\0';
-
- ndpi_check_user_agent(ndpi_struct, flow, flow->http.user_agent);
- }
+ if (ndpi_user_agent_set(flow, ua_ptr, ua_ptr_len) != NULL)
+ {
+ ndpi_check_user_agent(ndpi_struct, flow, flow->http.user_agent);
+ } else {
+ NDPI_LOG_DBG2(ndpi_struct, "Could not set HTTP user agent\n");
}
NDPI_LOG_DBG2(ndpi_struct, "User Agent Type line found %.*s\n",
diff --git a/src/lib/protocols/ssdp.c b/src/lib/protocols/ssdp.c
index cc2eb2f71..9fb1d0eae 100644
--- a/src/lib/protocols/ssdp.c
+++ b/src/lib/protocols/ssdp.c
@@ -38,13 +38,9 @@ static void ssdp_parse_lines(struct ndpi_detection_module_struct
/* Save user-agent for device discovery if available */
if(packet->user_agent_line.ptr != NULL && packet->user_agent_line.len != 0) {
- if(flow->http.user_agent == NULL) {
- flow->http.user_agent = ndpi_malloc(packet->user_agent_line.len + 1);
- if(flow->http.user_agent) {
- memcpy(flow->http.user_agent,
- (char*)packet->user_agent_line.ptr, packet->user_agent_line.len);
- flow->http.user_agent[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");
}
}
}
diff --git a/src/lib/protocols/xiaomi.c b/src/lib/protocols/xiaomi.c
index 831478e9e..f18c6202b 100644
--- a/src/lib/protocols/xiaomi.c
+++ b/src/lib/protocols/xiaomi.c
@@ -52,10 +52,9 @@ static void xiaomi_dissect_metadata(struct ndpi_detection_module_struct *ndpi_st
switch(op) {
case 0x12:
- flow->http.user_agent = ndpi_malloc(len + 1);
- if(flow->http.user_agent != NULL) {
- memcpy(flow->http.user_agent, &payload[offset], len);
- flow->http.user_agent[len] = '\0';
+ if (ndpi_user_agent_set(flow, &payload[offset], len) == NULL)
+ {
+ NDPI_LOG_DBG2(ndpi_struct, "Could not set Xiaomi user agent\n");
}
break;