mirror of https://github.com/sipwise/kamailio.git
NGCP-Flow: mr11.5 Upstream backport of a major security fix. Change-Id: I1dce6243a7670755ffbf4d6c2d2792991b94cd9emr11.5
parent
3e6d01519e
commit
dfe0f34764
@ -0,0 +1,36 @@
|
||||
--- a/src/core/tcp_read.c
|
||||
+++ b/src/core/tcp_read.c
|
||||
@@ -1035,11 +1035,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);
|
||||
- mtransid.s = q_memchr(
|
||||
- r->start + 5 /* 'MSRP ' */, ' ', mfline - 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 - 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,
|
||||
Loading…
Reference in new issue