]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 185197 via svnmerge from
authorJoshua Colp <jcolp@digium.com>
Tue, 31 Mar 2009 14:10:25 +0000 (14:10 +0000)
committerJoshua Colp <jcolp@digium.com>
Tue, 31 Mar 2009 14:10:25 +0000 (14:10 +0000)
https://origsvn.digium.com/svn/asterisk/trunk

................
  r185197 | file | 2009-03-31 11:07:36 -0300 (Tue, 31 Mar 2009) | 15 lines

  Merged revisions 185196 via svnmerge from
  https://origsvn.digium.com/svn/asterisk/branches/1.4

  ........
    r185196 | file | 2009-03-31 11:06:39 -0300 (Tue, 31 Mar 2009) | 8 lines

    Fix crash when moving audiohooks between channels.

    Handle the scenario where we are called to move audiohooks between channels
    and the source channel does not actually have any on it.

    (closes issue #14734)
    Reported by: corruptor
  ........
................

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@185199 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/audiohook.c

index 8156d0ff37721983a9cb8eb89e009fbb1e3e893a..640ec2f5aa252743b9e73f062673585c635b8398 100644 (file)
@@ -441,12 +441,12 @@ static struct ast_audiohook *find_audiohook_by_source(struct ast_audiohook_list
 
 void ast_audiohook_move_by_source(struct ast_channel *old_chan, struct ast_channel *new_chan, const char *source)
 {
-       struct ast_audiohook *audiohook = find_audiohook_by_source(old_chan->audiohooks, source);
+       struct ast_audiohook *audiohook;
 
-       if (!audiohook) {
+       if (!old_chan->audiohooks || !(audiohook = find_audiohook_by_source(old_chan->audiohooks, source))) {
                return;
        }
-       
+
        /* By locking both channels and the audiohook, we can assure that
         * another thread will not have a chance to read the audiohook's status
         * as done, even though ast_audiohook_remove signals the trigger