Module: kamailio
Branch: master
Commit: 7eb96925c4bb4664cce589050dff3e1c8b98b6f0
URL: 
https://github.com/kamailio/kamailio/commit/7eb96925c4bb4664cce589050dff3e1c8b98b6f0

Author: Daniel-Constantin Mierla <mico...@gmail.com>
Committer: Daniel-Constantin Mierla <mico...@gmail.com>
Date: 2023-12-11T15:51:01+01:00

siptrace: check sscan() return value

---

Modified: src/modules/siptrace/siptrace_send.c

---

Diff:  
https://github.com/kamailio/kamailio/commit/7eb96925c4bb4664cce589050dff3e1c8b98b6f0.diff
Patch: 
https://github.com/kamailio/kamailio/commit/7eb96925c4bb4664cce589050dff3e1c8b98b6f0.patch

---

diff --git a/src/modules/siptrace/siptrace_send.c 
b/src/modules/siptrace/siptrace_send.c
index bac4ad04779..d8a5f974bb3 100644
--- a/src/modules/siptrace/siptrace_send.c
+++ b/src/modules/siptrace/siptrace_send.c
@@ -158,7 +158,8 @@ int sip_trace_xheaders_read(struct _siptrace_data *sto)
        char *searchend = NULL;
        char *eoh = NULL;
        char *xheaders = NULL;
-       long long unsigned int tv_sec, tv_usec;
+       long long unsigned int tv_sec = 0, tv_usec = 0;
+       int rv = 0;
 
        if(trace_xheaders_read == 0) {
                return 0;
@@ -202,16 +203,17 @@ int sip_trace_xheaders_read(struct _siptrace_data *sto)
        }
 
        // Parse the x-headers: scanf()
-       if(sscanf(xheaders,
-                          "\r\n"
-                          "X-Siptrace-Fromip: %50s\r\n"
-                          "X-Siptrace-Toip: %50s\r\n"
-                          "X-Siptrace-Time: %llu %llu\r\n"
-                          "X-Siptrace-Method: %50s\r\n"
-                          "X-Siptrace-Dir: %3s",
-                          sto->fromip.s, sto->toip.s, &tv_sec, &tv_usec, 
sto->method.s,
-                          sto->dir)
-                       == EOF) {
+       rv = sscanf(xheaders,
+                       "\r\n"
+                       "X-Siptrace-Fromip: %50s\r\n"
+                       "X-Siptrace-Toip: %50s\r\n"
+                       "X-Siptrace-Time: %llu %llu\r\n"
+                       "X-Siptrace-Method: %50s\r\n"
+                       "X-Siptrace-Dir: %3s",
+                       sto->fromip.s, sto->toip.s, &tv_sec, &tv_usec, 
sto->method.s,
+                       sto->dir);
+
+       if(rv == EOF || rv < 6) {
                LM_ERR("malformed x-headers\n");
                goto erroraftermalloc;
        }

_______________________________________________
Kamailio (SER) - Development Mailing List
To unsubscribe send an email to sr-dev-le...@lists.kamailio.org

Reply via email to