Module: kamailio Branch: master Commit: baf2d095b1d4dcc932ece9d48a6a8c397fa7b1a7 URL: https://github.com/kamailio/kamailio/commit/baf2d095b1d4dcc932ece9d48a6a8c397fa7b1a7
Author: Mikko Lehto <[email protected]> Committer: Mikko Lehto <[email protected]> Date: 2017-06-24T13:27:40+03:00 core/socket_info: use internal str2int() instead of strtol() - strtol() works only for null terminated strings - fix for issue GH #1161 --- Modified: src/core/socket_info.c --- Diff: https://github.com/kamailio/kamailio/commit/baf2d095b1d4dcc932ece9d48a6a8c397fa7b1a7.diff Patch: https://github.com/kamailio/kamailio/commit/baf2d095b1d4dcc932ece9d48a6a8c397fa7b1a7.patch --- diff --git a/src/core/socket_info.c b/src/core/socket_info.c index f280f2dcb0..62a15f4c93 100644 --- a/src/core/socket_info.c +++ b/src/core/socket_info.c @@ -1973,7 +1973,7 @@ int parse_protohostport(str* ins, sr_phostp_t *r) char* second; /* second ':' occurrence */ char* p; int bracket; - char* tmp; + str tmp=STR_NULL; first=second=0; bracket=0; @@ -2012,15 +2012,20 @@ int parse_protohostport(str* ins, sr_phostp_t *r) if (second) { /* 2 ':' found => check if valid */ if (parse_proto((unsigned char*)ins->s, first-ins->s, &r->proto)<0) goto error_proto; - r->port=strtol(second+1, &tmp, 10); - if ((tmp==0)||(*tmp)||(tmp==second+1)) goto error_port; + + tmp.s=second+1; + tmp.len=(ins->s + ins->len) - tmp.s; + + if (str2int(&tmp, (unsigned int *)&(r->port))<0) goto error_port; + r->host.s=first+1; r->host.len=(int)(second-r->host.s); goto end; } /* only 1 ':' found => it's either proto:host or host:port */ - r->port=strtol(first+1, &tmp, 10); - if ((tmp==0)||(*tmp)||(tmp==first+1)){ + tmp.s=first+1; + tmp.len=(ins->s + ins->len) - tmp.s; + if (str2int(&tmp, (unsigned int *)&(r->port))<0) { /* invalid port => it's proto:host */ if (parse_proto((unsigned char*)ins->s, first-ins->s, &r->proto)<0) goto error_proto; _______________________________________________ Kamailio (SER) - Development Mailing List [email protected] https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev
