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

Author: Daniel-Constantin Mierla <[email protected]>
Committer: Daniel-Constantin Mierla <[email protected]>
Date: 2015-01-04T23:55:18+01:00

tm: safety check for CRLF at end of custom headers for local requests

- if hdrs value is not ending in '\n', add '\r\n'

---

Modified: modules/tm/t_msgbuilder.c

---

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

---

diff --git a/modules/tm/t_msgbuilder.c b/modules/tm/t_msgbuilder.c
index f705b90..ded1b47 100644
--- a/modules/tm/t_msgbuilder.c
+++ b/modules/tm/t_msgbuilder.c
@@ -1553,7 +1553,13 @@ char* build_uac_req(str* method, str* headers, str* 
body, dlg_t* dialog, int bra
        *len += CONTENT_LENGTH_LEN + content_length.len + CRLF_LEN; /* 
Content-Length */
        *len += ((server_signature && user_agent_hdr.len>0)
                                                        ? (user_agent_hdr.len + 
CRLF_LEN) : 0);                          /* Signature */
-       *len += (headers ? headers->len : 0);                                   
                     /* Additional headers */
+       if(headers && headers->len>2) {
+               /* Additional headers */
+               *len += headers->len;
+               /* End of header if missing */
+               if(headers->s[headers->len - 1] != '\n')
+                       *len += CRLF_LEN;
+       }
        *len += (body ? body->len : 0);                                         
                     /* Message body */
        *len += CRLF_LEN;                                                       
                     /* End of Header */
 
@@ -1586,7 +1592,11 @@ char* build_uac_req(str* method, str* headers, str* 
body, dlg_t* dialog, int bra
                memapp(w, user_agent_hdr.s, user_agent_hdr.len);
                memapp(w, CRLF, CRLF_LEN);
        }
-       if (headers) memapp(w, headers->s, headers->len);
+       if(headers && headers->len>2) {
+               memapp(w, headers->s, headers->len);
+               if(headers->s[headers->len - 1] != '\n')
+                       memapp(w, CRLF, CRLF_LEN);
+       }
        memapp(w, CRLF, CRLF_LEN);
        if (body) memapp(w, body->s, body->len);
 


_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to