[asterisk-dev] [Code Review] 3055: pbx.c: add lock around ast_exten use to prevent memory corruption

Scott Griepentrog reviewboard at asterisk.org
Fri Dec 6 15:41:18 CST 2013


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/3055/
-----------------------------------------------------------

(Updated Dec. 6, 2013, 3:41 p.m.)


Review request for Asterisk Developers and Matt Jordan.


Changes
-------

Added an additional lock instead of extending duration of contexts lock per suggestion of Richard Mudgett.  This resolves concern about duration of expression evaluation.


Summary (updated)
-----------------

pbx.c: add lock around ast_exten use to prevent memory corruption


Bugs: AST-1179 and AST-1246
    https://issues.asterisk.org/jira/browse/AST-1179
    https://issues.asterisk.org/jira/browse/AST-1246


Repository: Asterisk


Description (updated)
-------

During dialplan execution in pbx_extension_helper(), the contexts global read lock is used prevent changes to the dialplan.  This patch adds a lock between that point and until after the extension previously found is no longer being referenced -- after variable substitution, but before app execution.  This new lock prevents the extension's allocation from being released by module reload when it is still being used in an expression evaluation.


Diffs (updated)
-----

  /branches/1.8/main/pbx.c 403430 

Diff: https://reviewboard.asterisk.org/r/3055/diff/


Testing
-------

Testsuite test 'dialplan_stress' (https://reviewboard.asterisk.org/r/3056/) created to isolate this problem and test this fix.


Thanks,

Scott Griepentrog

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20131206/da095197/attachment.html>


More information about the asterisk-dev mailing list