Module: kamailio
Branch: master
Commit: 8cebf48eeee70d23c6cf827e24b2f5fabda669ab
URL: 
https://github.com/kamailio/kamailio/commit/8cebf48eeee70d23c6cf827e24b2f5fabda669ab

Author: Daniel-Constantin Mierla <mico...@gmail.com>
Committer: Daniel-Constantin Mierla <mico...@gmail.com>
Date: 2018-09-03T09:54:39+02:00

core: parse via - set len for host/port_str only if there is a value

---

Modified: src/core/parser/parse_via.c

---

Diff:  
https://github.com/kamailio/kamailio/commit/8cebf48eeee70d23c6cf827e24b2f5fabda669ab.diff
Patch: 
https://github.com/kamailio/kamailio/commit/8cebf48eeee70d23c6cf827e24b2f5fabda669ab.patch

---

diff --git a/src/core/parser/parse_via.c b/src/core/parser/parse_via.c
index 8c3d54ea5e..318bb8e6c6 100644
--- a/src/core/parser/parse_via.c
+++ b/src/core/parser/parse_via.c
@@ -2073,7 +2073,7 @@ char *parse_via(
                                                break;
                                        case P_HOST:
                                                /*mark end of host*/
-                                               vb->host.len = tmp - vb->host.s;
+                                               if(vb->host.s) vb->host.len = 
tmp - vb->host.s;
                                                state = L_PORT;
                                                break;
                                        case L_PORT: /*eat the spaces*/
@@ -2081,7 +2081,7 @@ char *parse_via(
                                                break;
                                        case P_PORT:
                                                /*end of port */
-                                               vb->port_str.len = tmp - 
vb->port_str.s;
+                                               if(vb->port_str.s) 
vb->port_str.len = tmp - vb->port_str.s;
                                                state = L_PARAM;
                                                break;
                                        case L_PARAM: /* eat the space */
@@ -2131,13 +2131,13 @@ char *parse_via(
                                                break;
                                        case P_HOST:
                                                /*mark end of host*/
-                                               vb->host.len = tmp - vb->host.s;
+                                               if(vb->host.s) vb->host.len = 
tmp - vb->host.s;
                                                saved_state = L_PORT;
                                                state = F_LF;
                                                break;
                                        case P_PORT:
                                                /*end of port */
-                                               vb->port_str.len = tmp - 
vb->port_str.s;
+                                               if(vb->port_str.s) 
vb->port_str.len = tmp - vb->port_str.s;
                                                saved_state = L_PARAM;
                                                state = F_LF;
                                                break;
@@ -2176,13 +2176,13 @@ char *parse_via(
                                                break;
                                        case P_HOST:
                                                /*mark end of host*/
-                                               vb->host.len = tmp - vb->host.s;
+                                               if(vb->host.s) vb->host.len = 
tmp - vb->host.s;
                                                saved_state = L_PORT;
                                                state = F_CR;
                                                break;
                                        case P_PORT:
                                                /*end of port */
-                                               vb->port_str.len = tmp - 
vb->port_str.s;
+                                               if(vb->port_str.s) 
vb->port_str.len = tmp - vb->port_str.s;
                                                saved_state = L_PARAM;
                                                state = F_CR;
                                                break;
@@ -2212,7 +2212,7 @@ char *parse_via(
                                                break;
                                        case P_HOST:
                                                /*mark  end of host*/
-                                               vb->host.len = tmp - vb->host.s;
+                                               if(vb->host.s) vb->host.len = 
tmp - vb->host.s;
                                                state = F_PORT;
                                                break;
                                        case L_PORT:
@@ -2257,13 +2257,13 @@ char *parse_via(
                                                LM_ERR("bad ipv6 reference\n");
                                                goto error;
                                        case P_HOST:
-                                               vb->host.len = tmp - vb->host.s;
+                                               if(vb->host.s) vb->host.len = 
tmp - vb->host.s;
                                                state = F_PARAM;
                                                param_start = tmp + 1;
                                                break;
                                        case P_PORT:
                                                /*mark the end*/
-                                               vb->port_str.len = tmp - 
vb->port_str.s;
+                                               if(vb->port_str.s) 
vb->port_str.len = tmp - vb->port_str.s;
                                        case L_PORT:
                                        case L_PARAM:
                                                state = F_PARAM;
@@ -2313,12 +2313,12 @@ char *parse_via(
                                                goto error;
                                        case P_HOST:
                                                /*mark the end*/
-                                               vb->host.len = tmp - vb->host.s;
+                                               if(vb->host.s) vb->host.len = 
tmp - vb->host.s;
                                                state = F_VIA;
                                                break;
                                        case P_PORT:
                                                /*mark the end*/
-                                               vb->port_str.len = tmp - 
vb->port_str.s;
+                                               if(vb->port_str.s) 
vb->port_str.len = tmp - vb->port_str.s;
                                                state = F_VIA;
                                                break;
                                        case L_PORT:
@@ -2363,13 +2363,13 @@ char *parse_via(
                                                goto error;
                                        case P_HOST:
                                                /*mark the end*/
-                                               vb->host.len = tmp - vb->host.s;
+                                               if(vb->host.s) vb->host.len = 
tmp - vb->host.s;
                                                state = F_COMMENT;
                                                c_nest++;
                                                break;
                                        case P_PORT:
                                                /*mark the end*/
-                                               vb->port_str.len = tmp - 
vb->port_str.s;
+                                               if(vb->port_str.s) 
vb->port_str.len = tmp - vb->port_str.s;
                                                state = F_COMMENT;
                                                c_nest++;
                                                break;
@@ -2469,7 +2469,7 @@ char *parse_via(
                                switch(state) {
                                        case P_IP6HOST:
                                                /*mark the end*/
-                                               vb->host.len = (tmp - 
vb->host.s) + 1; /* include "]" */
+                                               if(vb->host.s) vb->host.len = 
(tmp - vb->host.s) + 1; /* include "]" */
                                                state = L_PORT;
                                                break;
                                        case F_CRLF:


_______________________________________________
Kamailio (SER) - Development Mailing List
sr-dev@lists.kamailio.org
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to