summaryrefslogtreecommitdiff
path: root/main/channel.c
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2013-05-29 20:24:18 +0000
committerRichard Mudgett <rmudgett@digium.com>2013-05-29 20:24:18 +0000
commitf069ee9681b2def71d211ad3ca65db66b7072eef (patch)
treefd6c2d46cdb2b63c58eb79a83b844827e2b57ebc /main/channel.c
parentfa98eb2aeae9858832c1ed45b4e2e62204e2b208 (diff)
Fix segfault when dealing with chan_agent channels.
Check the returned bridged pointer for NULL to avoid a crash. It looks like chan_agent is returning a NULL pointer when it probably should be returning a pointer to the channel the Agent channel is pretending to be. (closes issue ASTERISK-21793) Reported by: Rodrigo P. Telles Patches: jira_asterisk_21793_v1.8.patch (license #5621) patch uploaded by rmudgett Tested by: Rodrigo P. Telles ........ Merged revisions 390044 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 390047 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@390068 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/channel.c')
-rw-r--r--main/channel.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/main/channel.c b/main/channel.c
index d32a8c883..e9ec45c49 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -6638,14 +6638,14 @@ void ast_channel_set_linkgroup(struct ast_channel *chan, struct ast_channel *pee
linkedid = oldest_linkedid(linkedid, ast_channel_uniqueid(peer));
if (ast_channel_internal_bridged_channel(chan)) {
bridged = ast_bridged_channel(chan);
- if (bridged != peer) {
+ if (bridged && bridged != peer) {
linkedid = oldest_linkedid(linkedid, ast_channel_linkedid(bridged));
linkedid = oldest_linkedid(linkedid, ast_channel_uniqueid(bridged));
}
}
if (ast_channel_internal_bridged_channel(peer)) {
bridged = ast_bridged_channel(peer);
- if (bridged != chan) {
+ if (bridged && bridged != chan) {
linkedid = oldest_linkedid(linkedid, ast_channel_linkedid(bridged));
linkedid = oldest_linkedid(linkedid, ast_channel_uniqueid(bridged));
}
@@ -6658,13 +6658,13 @@ void ast_channel_set_linkgroup(struct ast_channel *chan, struct ast_channel *pee
ast_channel_change_linkedid(peer, linkedid);
if (ast_channel_internal_bridged_channel(chan)) {
bridged = ast_bridged_channel(chan);
- if (bridged != peer) {
+ if (bridged && bridged != peer) {
ast_channel_change_linkedid(bridged, linkedid);
}
}
if (ast_channel_internal_bridged_channel(peer)) {
bridged = ast_bridged_channel(peer);
- if (bridged != chan) {
+ if (bridged && bridged != chan) {
ast_channel_change_linkedid(bridged, linkedid);
}
}