summaryrefslogtreecommitdiff
path: root/third-party
diff options
context:
space:
mode:
authorJenkins2 <jenkins2@gerrit.asterisk.org>2017-05-19 14:41:50 -0500
committerGerrit Code Review <gerrit2@gerrit.digium.api>2017-05-19 14:41:50 -0500
commit79c7067c5e7d7572ac5c566e0eaadbd8497f660f (patch)
tree2216c65710638e56a189078c26f2857849d4d56e /third-party
parent2bb98d8faca2b0b3b2d5f9554ac53cc09f17cd44 (diff)
parent7c0466092ce605fbf5ee895bee0d8fcab5374111 (diff)
Merge "AST-2017-003: Handle zero-length body parts correctly."
Diffstat (limited to 'third-party')
-rw-r--r--third-party/pjproject/patches/0058-Parse-zero-length-multipart-body-parts-correctly.patch41
1 files changed, 41 insertions, 0 deletions
diff --git a/third-party/pjproject/patches/0058-Parse-zero-length-multipart-body-parts-correctly.patch b/third-party/pjproject/patches/0058-Parse-zero-length-multipart-body-parts-correctly.patch
new file mode 100644
index 000000000..49334c354
--- /dev/null
+++ b/third-party/pjproject/patches/0058-Parse-zero-length-multipart-body-parts-correctly.patch
@@ -0,0 +1,41 @@
+From f0c717463d569f87a16f9b014033c8ca8939a7b4 Mon Sep 17 00:00:00 2001
+From: Mark Michelson <mmichelson@digium.com>
+Date: Thu, 13 Apr 2017 16:59:40 -0500
+Subject: [PATCH] Parse zero-length multipart body parts correctly.
+
+The calculation of end_body could result in a negative length being
+passed to multipart_body_parse_part().
+---
+ pjsip/src/pjsip/sip_multipart.c | 16 +++++++++-------
+ 1 file changed, 9 insertions(+), 7 deletions(-)
+
+diff --git a/pjsip/src/pjsip/sip_multipart.c b/pjsip/src/pjsip/sip_multipart.c
+index 8351f7e..b302139 100644
+--- a/pjsip/src/pjsip/sip_multipart.c
++++ b/pjsip/src/pjsip/sip_multipart.c
+@@ -653,13 +653,15 @@ PJ_DEF(pjsip_msg_body*) pjsip_multipart_parse(pj_pool_t *pool,
+
+ end_body = curptr;
+
+- /* The newline preceeding the delimiter is conceptually part of
+- * the delimiter, so trim it from the body.
+- */
+- if (*(end_body-1) == '\n')
+- --end_body;
+- if (*(end_body-1) == '\r')
+- --end_body;
++ if (end_body > start_body) {
++ /* The newline preceeding the delimiter is conceptually part of
++ * the delimiter, so trim it from the body.
++ */
++ if (*(end_body-1) == '\n')
++ --end_body;
++ if (*(end_body-1) == '\r')
++ --end_body;
++ }
+
+ /* Now that we have determined the part's boundary, parse it
+ * to get the header and body part of the part.
+--
+1.9.1
+