--- /dev/null
+commit d67b2f9874ca23bd69f18df71b8f53b1b6151f6d
+Author: Henning Westerholt <hw@kamailio.org>
+Date: Sun Jun 3 20:59:32 2018 +0200
+
+ core: improve header safe guards for Via handling
+
+ (cherry picked from commit ad68e402ece8089f133c10de6ce319f9e28c0692)
+
+diff --git a/src/core/crc.c b/src/core/crc.c
+index 462846324..23b2876ec 100644
+--- a/src/core/crc.c
++++ b/src/core/crc.c
+@@ -231,6 +231,8 @@ void crcitt_string_array( char *dst, str src[], int size )
+ ccitt = 0xFFFF;
+ str_len=CRC16_LEN;
+ for (i=0; i<size; i++ ) {
++ /* invalid str with positive length and null char pointer */
++ if( unlikely(src[i].s==NULL)) break;
+ c=src[i].s;
+ len=src[i].len;
+ while(len) {
+diff --git a/src/core/msg_translator.c b/src/core/msg_translator.c
+index 201e3a5e1..58978f958 100644
+--- a/src/core/msg_translator.c
++++ b/src/core/msg_translator.c
+@@ -168,12 +168,17 @@ static int check_via_address(struct ip_addr* ip, str *name,
+ (name->s[name->len-1]==']')&&
+ (strncasecmp(name->s+1, s, len)==0))
+ )
+- )
++ ) {
+ return 0;
+- else
+-
++ }
++ else {
++ if (unlikely(name->s==NULL)) {
++ LM_CRIT("invalid Via host name\n");
++ return -1;
++ }
+ if (strncmp(name->s, s, name->len)==0)
+ return 0;
++ }
+ }else{
+ LM_CRIT("could not convert ip address\n");
+ return -1;