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