diff options
author | Mark Michelson <mmichelson@digium.com> | 2008-04-17 16:40:12 +0000 |
---|---|---|
committer | Mark Michelson <mmichelson@digium.com> | 2008-04-17 16:40:12 +0000 |
commit | ae52cd4a7648e67443a45b36c09ba76919a803a4 (patch) | |
tree | 0d0576e91f0444125f19ee1f3b0e55d74e125c5a /include/asterisk/dsp.h | |
parent | 83c674bf96ca0bf4a29c675fd901eb98700a8e92 (diff) |
Merged revisions 114207 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r114207 | mmichelson | 2008-04-17 11:28:03 -0500 (Thu, 17 Apr 2008) | 12 lines
It was possible for a reference to a frame which was part of a freed DSP to still be
referenced, leading to memory corruption and eventual crashes. This code change ensures
that the dsp is freed when we are finished with the frame. This change is very similar
to a change Russell made with translators back a month or so ago.
(closes issue #11999)
Reported by: destiny6628
Patches:
11999.patch uploaded by putnopvut (license 60)
Tested by: destiny6628, victoryure
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@114208 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'include/asterisk/dsp.h')
-rw-r--r-- | include/asterisk/dsp.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/include/asterisk/dsp.h b/include/asterisk/dsp.h index 81735d625..871a51ac9 100644 --- a/include/asterisk/dsp.h +++ b/include/asterisk/dsp.h @@ -138,4 +138,16 @@ int ast_dsp_reload(void); int ast_dsp_init(void); +/*! + * \brief Hint that a frame from a dsp was freed + * + * This is called from ast_frame_free if AST_FRFLAG_FROM_DSP is set. This occurs + * because it is possible for the dsp to be freed while someone still holds a reference + * to the frame that is in that dsp. This has been known to happen when the dsp on a Zap + * channel detects a busy signal. The channel is hung up, and the application that read the + * frame to begin with still has a reference to the frame. + * + * \return nothing + */ +void ast_dsp_frame_freed(struct ast_frame *fr); #endif /* _ASTERISK_DSP_H */ |