aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/protocols/http.c2
-rw-r--r--src/lib/protocols/quic.c20
2 files changed, 13 insertions, 9 deletions
diff --git a/src/lib/protocols/http.c b/src/lib/protocols/http.c
index 983a53b1c..2cc42edad 100644
--- a/src/lib/protocols/http.c
+++ b/src/lib/protocols/http.c
@@ -347,7 +347,7 @@ int http_process_user_agent(struct ndpi_detection_module_struct *ndpi_struct,
flow->http.user_agent = ndpi_malloc(len);
if(flow->http.user_agent) {
- strncpy(flow->http.user_agent, (char*)ua_ptr, ua_ptr_len);
+ 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);
diff --git a/src/lib/protocols/quic.c b/src/lib/protocols/quic.c
index 5585fe3dc..70187bd5e 100644
--- a/src/lib/protocols/quic.c
+++ b/src/lib/protocols/quic.c
@@ -1128,15 +1128,19 @@ static void process_chlo(struct ndpi_detection_module_struct *ndpi_struct,
if (ua_found)
return;
}
- if((memcmp(tag, "UAID", 4) == 0) &&
- (tag_offset_start + prev_offset + len < crypto_data_len)) {
- NDPI_LOG_DBG2(ndpi_struct, "UA: [%.*s]\n", len, &crypto_data[tag_offset_start + prev_offset]);
- http_process_user_agent(ndpi_struct, flow,
- &crypto_data[tag_offset_start + prev_offset], len);
- ua_found = 1;
- if (sni_found)
- return;
+ if(memcmp(tag, "UAID", 4) == 0) {
+ u_int uaid_offset = tag_offset_start + prev_offset;
+
+ if((uaid_offset + len) < crypto_data_len) {
+ NDPI_LOG_DBG2(ndpi_struct, "UA: [%.*s]\n", len, &crypto_data[uaid_offset]);
+
+ http_process_user_agent(ndpi_struct, flow, &crypto_data[uaid_offset], len); /* http.c */
+ ua_found = 1;
+
+ if (sni_found)
+ return;
+ }
}
prev_offset = offset;