[asterisk-dev] [Code Review] Fix memory leak in manager.c action originate when using channel variables

Olle E Johansson oej at edvina.net
Fri Aug 20 07:19:50 CDT 2010


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

(Updated 2010-08-20 07:19:50.806977)


Review request for Asterisk Developers.


Changes
-------

This time with working code. Tested. Obviously ast_variable_destroy doesn't check for null arguments.


Summary
-------

The originate action supports using channel variables. These are allocated to a variable "vars" but never freed. In the case of asynchronos or "fast" originate, these are handed off as a pointer to the new thread.

This patch 
 - Moves the allocation of the variables until after a few checks that will return (to not have to free multiple times).
 - Frees the variables in originate
 - copies the variables to the new thread, which frees it's own copy when done

Separate fix is made for trunk. The function ast_variable_copy really belongs to config.c/h, but since we don't change API in releases, it's in manager.c for now, and will move home in the trunk version. 

(Have fixed the red dots in my changes)


This addresses bug 17891.
    https://issues.asterisk.org/view.php?id=17891


Diffs (updated)
-----

  /branches/1.4/main/manager.c 282966 

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


Testing
-------

Tested. Crashed. Will update to a working solution.


Thanks,

Olle E




More information about the asterisk-dev mailing list