mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
bridge_native_rtp: Fix crash involving masquerade
It is possible for a channel to be masqueraded out of a bridge which means it may no longer have RTP glue to check upon leaving said bridge. If this situation occurred (it's possible at least during dial and call pickup) then Asterisk would crash. This change makes sure the glue is checked before use. (closes issue AST-1290) Reported by: John Bigelow git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@409900 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -452,9 +452,19 @@ static void native_rtp_bridge_leave(struct ast_bridge *bridge, struct ast_bridge
|
||||
native_rtp_bridge_framehook_detach(bridge_channel);
|
||||
|
||||
glue = ast_rtp_instance_get_glue(ast_channel_tech(bridge_channel->chan)->type);
|
||||
if (!glue) {
|
||||
return;
|
||||
}
|
||||
|
||||
glue->get_rtp_info(bridge_channel->chan, &instance);
|
||||
glue->get_vrtp_info ? glue->get_vrtp_info(bridge_channel->chan, &vinstance) : AST_RTP_GLUE_RESULT_FORBID;
|
||||
glue->get_trtp_info ? glue->get_trtp_info(bridge_channel->chan, &tinstance) : AST_RTP_GLUE_RESULT_FORBID;
|
||||
|
||||
if (glue->get_vrtp_info) {
|
||||
glue->get_vrtp_info(bridge_channel->chan, &vinstance);
|
||||
}
|
||||
|
||||
if (glue->get_trtp_info) {
|
||||
glue->get_trtp_info(bridge_channel->chan, &tinstance);
|
||||
}
|
||||
|
||||
/* Tear down P2P bridges */
|
||||
if (instance) {
|
||||
|
Reference in New Issue
Block a user