From 68bc5b446dcbdb79b7fd14bc0529c899afa239d9 Mon Sep 17 00:00:00 2001 From: Mark Michelson Date: Tue, 9 Sep 2008 10:20:58 +0000 Subject: Fix a memory leak in chan_oss (closes issue #13311) Reported by: eliel Patches: chan_oss.c.patch uploaded by eliel (license 64) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@141995 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_oss.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'channels') diff --git a/channels/chan_oss.c b/channels/chan_oss.c index a3908a504..b3c29c031 100644 --- a/channels/chan_oss.c +++ b/channels/chan_oss.c @@ -1464,18 +1464,22 @@ static int load_module(void) static int unload_module(void) { - struct chan_oss_pvt *o; + struct chan_oss_pvt *o, *next; ast_channel_unregister(&oss_tech); ast_cli_unregister_multiple(cli_oss, sizeof(cli_oss) / sizeof(struct ast_cli_entry)); - for (o = oss_default.next; o; o = o->next) { + o = oss_default.next; + while (o) { close(o->sounddev); if (o->owner) ast_softhangup(o->owner, AST_SOFTHANGUP_APPUNLOAD); if (o->owner) /* XXX how ??? */ return -1; - /* XXX what about the memory allocated ? */ + next = o->next; + ast_free(o->name); + ast_free(o); + o = next; } return 0; } -- cgit v1.2.3