Prevent invalid access of free'd memory if DAHDI channel during an MWI event
authorMatthew Jordan <mjordan@digium.com>
Mon, 9 Apr 2012 20:55:53 +0000 (20:55 +0000)
committerMatthew Jordan <mjordan@digium.com>
Mon, 9 Apr 2012 20:55:53 +0000 (20:55 +0000)
commit97f813f3a47c7a808fea1c0b978eda14e0e8190e
treebd1e677298045d749a3e2c65b8cb2b28b6b914cb
parentf4fd1b2fb0267991ecc1e2183d5a5833d0a6c4a3
Prevent invalid access of free'd memory if DAHDI channel during an MWI event

In the MWI processing loop, when a valid event occurs the temporary caller ID
information is deallocated.  If a new DAHDI channel is successfully created,
the event is passed up to the analog_ss_thread without error and the loop
exits.  If, however, the DAHDI channel is not created, then the caller ID
struct has been free'd, and the gains reset to their previous level.  This
will almost certainly cause an invalid access to the free'd memory, either
in subsequent calls to callerid_free or calls to callerid_feed.

This patch makes it so that we only free the caller ID structure if a
DAHDI channel is successfully created, and we bump the gains back up
if we fail to make a DAHDI channel.
........

Merged revisions 361705 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 361706 from http://svn.asterisk.org/svn/asterisk/branches/10

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@361707 65c4cc65-6c06-0410-ace0-fbb531ad65f3
channels/chan_dahdi.c