[asterisk-dev] [Code Review] Fix memory leak of SSL_CTX
Matt Jordan
reviewboard at asterisk.org
Wed Apr 18 11:55:45 CDT 2012
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1875/#review6014
-----------------------------------------------------------
/branches/1.8/main/tcptls.c
<https://reviewboard.asterisk.org/r/1875/#comment11041>
Currently, the only way we'll dispose ssl_ctx is if we call __ssl_setup on an ast_tls_config object twice. This means that we would continue to leak the last allocated ssl_ctx object.
This is problematic, as ast_tls_config objects can be initialized either when they are associated with an ast_tcptls_session_instance, or by themselves via ast_ssl_setup.
When its associated with an ast_tcptls_session_instance, the ssl_ctx (if allocated) can be disposed of in that object's ao2 destructor.
However, when the config object exists by itself (which it does in chan_sip's reload_config), we probably need a corresponding method to ast_ssl_setup that tears down the configuration object and disposes of the context object appropriately.
/branches/1.8/main/tcptls.c
<https://reviewboard.asterisk.org/r/1875/#comment11040>
Is it just me, or do these sleep(2) calls seem odd?
- Matt
On April 18, 2012, 10:54 a.m., Mark Michelson wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/1875/
> -----------------------------------------------------------
>
> (Updated April 18, 2012, 10:54 a.m.)
>
>
> Review request for Asterisk Developers.
>
>
> Summary
> -------
>
> Based on information-gathering in issue ASTERISK-19278, it appears that Asterisk is misusing OpenSSL in a way that causes a slow memory leak. From combing through main/tcptls.c, it appears that one foul-up Asterisk has is to never free any SSL_CTXs that are created. I have patched __ssl_setup() to properly free the SSL_CTX if either
>
> 1) We're about to allocate a new one.
> 2) Some failure occurs during setup.
>
> While I have no confirmation that this is the same memory leak being observed in ASTERISK-19278, this fix seems necessary anyway. I'm placing this patch on Review Board because my unfamiliarity with OpenSSL leads me to seek confirmation that what I am doing makes sense and will not cause issues.
>
>
> This addresses bug ASTERISK-19278.
> https://issues.asterisk.org/jira/browse/ASTERISK-19278
>
>
> Diffs
> -----
>
> /branches/1.8/main/tcptls.c 362427
>
> Diff: https://reviewboard.asterisk.org/r/1875/diff
>
>
> Testing
> -------
>
> No testing has been done aside from compilation. I will ask the reporter on ASTERISK-19278 to test to see if the memory leak appears to go away.
>
>
> Thanks,
>
> Mark
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20120418/881d6269/attachment.htm>
More information about the asterisk-dev
mailing list