[asterisk-dev] [Code Review] Fix memory leaks in IMAP app_voicemail
Matt Jordan
reviewboard at asterisk.org
Tue Sep 4 21:42:05 CDT 2012
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/2096/
-----------------------------------------------------------
Review request for Asterisk Developers.
Summary
-------
This looked to be a fairly straight forward patch (provided by the issue reporter, Filip Jenicek) - however, since the last time a memory leak was 'fixed' in app_voicemail it caused a memory corruption, I figured I'd post it up for review.
This patch fixes two memory leaks:
1. When find_user is called with NULL as its first parameter, the voicemail user returned is allocated on the heap. The inboxcount2 function uses find_user in such a fashion when counting new messages, and fails to free the resulting voicemail user object.
2. When populate_defaults is called on a voicemail user, it wipes whatever flags have been set on the object by copying over the global flags object. If the VM_ALLOCED flag was set on the voicemail user prior to doing so, that flag is removed. This leaks the voicemail user when free_user is later called.
This patch differs slightly from Filip's patch in that the populate_defaults function isn't changed to preserve the VM_ALLOCED flag, as that function affects a significant number of places in the code (and the comments for the function state that it copies over the global flags - so we probably should have expected that flags set prior to the function would be blown away). Instead, places that set the VM_ALLOCED flag do so now after calling populate_defaults.
This affected IMAP users and realtime users (and a unit test).
This addresses bug ASTERISK-19155.
https://issues.asterisk.org/jira/browse/ASTERISK-19155
Diffs
-----
/branches/1.8/apps/app_voicemail.c 372176
Diff: https://reviewboard.asterisk.org/r/2096/diff
Testing
-------
Thanks,
Matt
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20120905/9fcd60d9/attachment.htm>
More information about the asterisk-dev
mailing list