From caa90ffe7bb0cbf01dcac5a2d80c778de2f63783 Mon Sep 17 00:00:00 2001
From: George Joseph <gjoseph@digium.com>
Date: Wed, 12 Jun 2019 12:03:04 -0600
Subject: [PATCH] res_pjsip_messaging:  Check for body in in-dialog message

We now check that a body exists and it has a length > 0 before
attempting to process it.

ASTERISK-28447
Reported-by: Gil Richard

Change-Id: Ic469544b22ab848734636588d4c93426cc6f4b1f
---
 res/res_pjsip_messaging.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/res/res_pjsip_messaging.c b/res/res_pjsip_messaging.c
index cbc6ea5612..cb3b16e83d 100644
--- a/res/res_pjsip_messaging.c
+++ b/res/res_pjsip_messaging.c
@@ -90,9 +90,13 @@ static enum pjsip_status_code check_content_type_any_text(const pjsip_rx_data *r
 	int res = PJSIP_SC_UNSUPPORTED_MEDIA_TYPE;
 	pj_str_t text = { "text", 4};
 
-	/* We'll accept any text/ content type */
-	if (rdata->msg_info.msg->body && rdata->msg_info.msg->body->len
-		&& pj_stricmp(&rdata->msg_info.msg->body->content_type.type, &text) == 0) {
+	if (!(rdata->msg_info.msg->body && rdata->msg_info.msg->body->len > 0)) {
+		return res;
+	}
+
+	/* We'll accept any text/ or application/ content type */
+	if (pj_stricmp(&rdata->msg_info.msg->body->content_type.type, &text) == 0
+			|| pj_stricmp(&rdata->msg_info.msg->body->content_type.type, &application) == 0) {
 		res = PJSIP_SC_OK;
 	} else if (rdata->msg_info.ctype
 		&& pj_stricmp(&rdata->msg_info.ctype->media.type, &text) == 0) {
-- 
2.21.0

