[sr-dev] git:ez/sdpops: modules/sdpops: fixed segfault wnen msg-> body is NULL on invalid sdp.

Konstantin Mosesov ez at voipgroup.org.ua
Mon May 13 19:46:35 CEST 2013


Module: sip-router
Branch: ez/sdpops
Commit: 9fc6f005f1019f2f311bc04d9ed9ffbd2672563f
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=9fc6f005f1019f2f311bc04d9ed9ffbd2672563f

Author: Konstantin Mosesov <ez at voipgroup.org.ua>
Committer: Konstantin Mosesov <ez at voipgroup.org.ua>
Date:   Mon May 13 14:02:16 2013 +0300

modules/sdpops: fixed segfault wnen msg->body is NULL on invalid sdp.

---

 modules/sdpops/sdpops_mod.c |   18 +++++++++++++++---
 1 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/modules/sdpops/sdpops_mod.c b/modules/sdpops/sdpops_mod.c
index de6914b..6a34bb2 100644
--- a/modules/sdpops/sdpops_mod.c
+++ b/modules/sdpops/sdpops_mod.c
@@ -1128,6 +1128,7 @@ static int w_sdp_content(sip_msg_t* msg, char* foo, char *bar)
  */
 static int w_sdp_get_line_startswith(sip_msg_t *msg, char *avp, char *prefix)
 {
+	sdp_info_t *sdp = NULL;
 	str body = {NULL, 0};
 	str line = {NULL, 0};
 	char* p = NULL;
@@ -1137,6 +1138,7 @@ static int w_sdp_get_line_startswith(sip_msg_t *msg, char *avp, char *prefix)
         int_str avp_name;
         pv_spec_t *avp_spec = NULL;
         static unsigned short avp_type = 0;
+	int sdp_missing=1;
 
 	if (prefix == NULL || strlen(prefix) <= 0)
 	{
@@ -1146,13 +1148,23 @@ static int w_sdp_get_line_startswith(sip_msg_t *msg, char *avp, char *prefix)
 	pprefix.s = prefix;
 	pprefix.len = strlen(prefix);
 
-	if(parse_sdp(msg) < 0) {
+	sdp_missing = parse_sdp(msg);
+
+	if(sdp_missing < 0) {
 		LM_ERR("Unable to parse sdp\n");
 		return -1;
 	}
 
-	body.s = ((sdp_info_t*)msg->body)->raw_sdp.s;
-	body.len = ((sdp_info_t*)msg->body)->raw_sdp.len;
+	sdp = (sdp_info_t *)msg->body;
+
+        if (sdp_missing || sdp == NULL)
+	{
+                LM_DBG("No SDP\n");
+                return -2;
+	}
+
+	body.s = sdp->raw_sdp.s;
+	body.len = sdp->raw_sdp.len;
 
 	if (body.s==NULL) {
 		LM_ERR("failed to get the message body\n");




More information about the sr-dev mailing list