mirror of https://github.com/sipwise/kamailio.git
Upstream backport of a major security fix.
Change-Id: I63152fc3c61700928161b2e06dc6b8e219dcc5f1
(cherry picked from commit e522c58368)
mr10.5.2
parent
3dd71c6aea
commit
343a6bebeb
@ -0,0 +1,35 @@
|
|||||||
|
--- a/src/core/tcp_read.c
|
||||||
|
+++ b/src/core/tcp_read.c
|
||||||
|
@@ -1002,11 +1002,31 @@ int tcp_read_headers(struct tcp_connecti
|
||||||
|
/* locate transaction id in first line
|
||||||
|
* -- first line exists, that's why we are here */
|
||||||
|
mfline = q_memchr(r->start, '\n', r->pos-r->start);
|
||||||
|
+ if(mfline == NULL || mfline - r->start < 8) {
|
||||||
|
+ r->error = TCP_READ_ERROR;
|
||||||
|
+ r->state = H_SKIP; /* skip now */
|
||||||
|
+ goto skip;
|
||||||
|
+ }
|
||||||
|
mtransid.s = q_memchr(r->start + 5 /* 'MSRP ' */, ' ',
|
||||||
|
- mfline - r->start);
|
||||||
|
+ mfline - r->start - 5);
|
||||||
|
+ if(mtransid.s == NULL) {
|
||||||
|
+ r->error = TCP_READ_ERROR;
|
||||||
|
+ r->state = H_SKIP; /* skip now */
|
||||||
|
+ goto skip;
|
||||||
|
+ }
|
||||||
|
mtransid.len = mtransid.s - r->start - 5;
|
||||||
|
+ if(mtransid.len <= 0) {
|
||||||
|
+ r->error = TCP_READ_ERROR;
|
||||||
|
+ r->state = H_SKIP; /* skip now */
|
||||||
|
+ goto skip;
|
||||||
|
+ }
|
||||||
|
mtransid.s = r->start + 5;
|
||||||
|
trim(&mtransid);
|
||||||
|
+ if(mtransid.len <= 0) {
|
||||||
|
+ r->error = TCP_READ_ERROR;
|
||||||
|
+ r->state = H_SKIP; /* skip now */
|
||||||
|
+ goto skip;
|
||||||
|
+ }
|
||||||
|
if(memcmp(mtransid.s,
|
||||||
|
p - 1 /*\r*/ - 1 /* '+'|'#'|'$' */ - mtransid.len,
|
||||||
|
mtransid.len)!=0) {
|
||||||
Loading…
Reference in new issue