Module: kamailio Branch: 5.0 Commit: f07dabffef98c7088cdbc2bd695a4ae7a241b159 URL: https://github.com/kamailio/kamailio/commit/f07dabffef98c7088cdbc2bd695a4ae7...
Author: Henning Westerholt hw@kamailio.org Committer: Henning Westerholt hw@kamailio.org Date: 2018-06-03T21:03:15+02:00
core: improve header safe guards for Via handling
(cherry picked from commit ad68e402ece8089f133c10de6ce319f9e28c0692)
---
Modified: src/core/crc.c Modified: src/core/msg_translator.c
---
Diff: https://github.com/kamailio/kamailio/commit/f07dabffef98c7088cdbc2bd695a4ae7... Patch: https://github.com/kamailio/kamailio/commit/f07dabffef98c7088cdbc2bd695a4ae7...
---
diff --git a/src/core/crc.c b/src/core/crc.c index 4628463245..23b2876ecf 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 201e3a5e1d..58978f958c 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;