[asterisk-commits] mjordan: branch certified-1.8.15 r375592 - in /certified/branches/1.8.15: ./ ...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Nov 2 10:32:33 CDT 2012
Author: mjordan
Date: Fri Nov 2 10:32:28 2012
New Revision: 375592
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=375592
Log:
chan_dahdi: Fix segfault dereferencing a NULL tech_pvt.
The tech support customer was using the AMI Redirect action shortly after
a call was placed. While the channel tried to do an ast_read(), the
masquerade resulting from the channel redirect took place. The masquerade
in the middle of the ast_read() resulted in the segfault.
(closes issue AST-1025)
Reported by: Trey Blancher
Patches:
jira_ast_1025_v1.8_v2.patch (license #5621) patch uploaded by rmudgett
........
Merged revisions 375361 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Modified:
certified/branches/1.8.15/ (props changed)
certified/branches/1.8.15/channels/chan_dahdi.c
Propchange: certified/branches/1.8.15/
------------------------------------------------------------------------------
Binary property 'branch-1.8-merged' - no diff available.
Modified: certified/branches/1.8.15/channels/chan_dahdi.c
URL: http://svnview.digium.com/svn/asterisk/certified/branches/1.8.15/channels/chan_dahdi.c?view=diff&rev=375592&r1=375591&r2=375592
==============================================================================
--- certified/branches/1.8.15/channels/chan_dahdi.c (original)
+++ certified/branches/1.8.15/channels/chan_dahdi.c Fri Nov 2 10:32:28 2012
@@ -8918,11 +8918,20 @@
CHANNEL_DEADLOCK_AVOIDANCE(ast);
/*
- * For PRI channels, we must refresh the private pointer because
- * the call could move to another B channel while the Asterisk
- * channel is unlocked.
+ * Check to see if the channel is still associated with the same
+ * private structure. While the Asterisk channel was unlocked
+ * the following events may have occured:
+ *
+ * 1) A masquerade may have associated the channel with another
+ * technology or private structure.
+ *
+ * 2) For PRI calls, call signaling could change the channel
+ * association to another B channel (private structure).
*/
- p = ast->tech_pvt;
+ if (ast->tech_pvt != p) {
+ /* The channel is no longer associated. Quit gracefully. */
+ return &ast_null_frame;
+ }
}
idx = dahdi_get_index(ast, p, 0);
More information about the asterisk-commits
mailing list