[sr-dev] git:master:f0e8898d: core: parser - detect pai/ppi headers spanning many lines

Daniel-Constantin Mierla miconda at gmail.com
Fri Oct 15 16:51:28 CEST 2021


Module: kamailio
Branch: master
Commit: f0e8898d83c54e5e4383b70ba54ad340c5ae13b6
URL: https://github.com/kamailio/kamailio/commit/f0e8898d83c54e5e4383b70ba54ad340c5ae13b6

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date: 2021-10-15T16:51:19+02:00

core: parser - detect pai/ppi headers spanning many lines

- GH #2837

---

Modified: src/core/parser/parse_ppi_pai.c

---

Diff:  https://github.com/kamailio/kamailio/commit/f0e8898d83c54e5e4383b70ba54ad340c5ae13b6.diff
Patch: https://github.com/kamailio/kamailio/commit/f0e8898d83c54e5e4383b70ba54ad340c5ae13b6.patch

---

diff --git a/src/core/parser/parse_ppi_pai.c b/src/core/parser/parse_ppi_pai.c
index 4e4ebe392b..c60e33a9fd 100644
--- a/src/core/parser/parse_ppi_pai.c
+++ b/src/core/parser/parse_ppi_pai.c
@@ -65,6 +65,26 @@ int parse_pai_ppi_body(char *buf, int len, p_id_body_t **body)
 	while ((*tmp == ',') && (num_uri < NUM_PAI_BODIES))
 	{
 		tmp++;
+		while(tmp<buf+len && (*tmp==' ' || *tmp=='\t')) tmp++;
+		if(tmp>=buf+len) {
+			LM_ERR("no content after comma when parsing PAI/PPI body %u '%.*s'\n",
+					num_uri, len, buf);
+			return -1;
+		}
+		if((tmp<buf+len-1 && *tmp=='\n')
+				|| (tmp<buf+len-2 && *tmp=='\r' && *(tmp+1)=='\n')) {
+			if(*tmp=='\n') {
+				tmp++;
+			} else {
+				tmp += 2;
+			}
+			if(*tmp!=' ' && *tmp!='\t') {
+				LM_ERR("no space after EOL when parsing PAI/PPI body %u '%.*s'\n",
+						num_uri, len, buf);
+				return -1;
+			}
+			tmp++;
+		}
 		tmp = parse_addr_spec(tmp, buf+len, &uri_b[num_uri], 1);
 		if (uri_b[num_uri].error == PARSE_ERROR)
 		{




More information about the sr-dev mailing list