浏览代码

core: parse sdp - detect multipart invalid format

Daniel-Constantin Mierla 3 年之前
父节点
当前提交
7076904d0f
共有 1 个文件被更改,包括 5 次插入0 次删除
  1. 5 0
      src/core/parser/sdp/sdp.c

+ 5 - 0
src/core/parser/sdp/sdp.c

@@ -685,6 +685,11 @@ static int parse_mixed_content(str *mixed_body, str delimiter, sdp_info_t* _sdp)
 			return -1;
 		}
 		d2p = find_next_sdp_line_delimiter(d1p, bodylimit, delimiter, bodylimit);
+		if((d1p + delimiter.len + 2 > bodylimit)
+				|| (d2p - d1p < delimiter.len + 2)) {
+			LM_ERR("invalid format [%.*s]\n", (int)(d2p-d1p), d1p);
+			return -1;
+		}
 		/* d2p is text limit for application parsing */
 		memset(&hf, 0, sizeof(struct hdr_field));
 		rest = eat_line(d1p + delimiter.len + 2, d2p - d1p - delimiter.len - 2);