From 0a306195730370bf90683ba762753511086ffdde Mon Sep 17 00:00:00 2001
From: Tristan Matthews <le.businessman@gmail.com>
Date: Sat, 28 Apr 2012 19:07:42 -0400
Subject: [PATCH] * #10090: fix segfault in transaction_state_changed_cb

---
 daemon/src/sip/sipvoiplink.cpp | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/daemon/src/sip/sipvoiplink.cpp b/daemon/src/sip/sipvoiplink.cpp
index 8a5988057e..4e51c53c78 100644
--- a/daemon/src/sip/sipvoiplink.cpp
+++ b/daemon/src/sip/sipvoiplink.cpp
@@ -1488,7 +1488,12 @@ void transaction_state_changed_cb(pjsip_inv_session * inv,
 
     // Get the message inside the transaction
     pjsip_rx_data *r_data = event->body.tsx_state.src.rdata;
-    std::string formattedMessage(static_cast<char*>(r_data->msg_info.msg->body->data));
+    if (!r_data->msg_info.msg->body)
+        return;
+    const char *formattedMsgPtr = static_cast<const char*>(r_data->msg_info.msg->body->data);
+    if (!formattedMsgPtr)
+        return;
+    std::string formattedMessage(formattedMsgPtr, strlen(formattedMsgPtr));
 
     // Try to determine who is the recipient of the message
     SIPCall *call = static_cast<SIPCall *>(inv->mod_data[mod_ua_.id]);
-- 
GitLab