From: Tzafrir Cohen Date: Mon, 21 Feb 2011 13:58:18 +0000 (+0000) Subject: fix a memory leak in device state X-Git-Tag: 11.0.0-beta1~1828 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=54802a099cffad53bac676fa4a2fada957ddb591;p=thirdparty%2Fasterisk.git fix a memory leak in device state The callback handle_statechange (pbx.c) fails to release its data pointer, leaking memory in the process. Reported by: tzafrir Patches: 18735_pbx_free_callback.diff uploaded by tzafrir (license 46) Review: https://reviewboard.asterisk.org/r/1110/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@308371 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/pbx.c b/main/pbx.c index fe52ea2c7d..6b75c77e24 100644 --- a/main/pbx.c +++ b/main/pbx.c @@ -4348,9 +4348,11 @@ static int handle_statechange(void *datap) struct ao2_iterator cb_iter; if (ao2_container_count(hintdevices) == 0) { + ast_free(sc); return 0; } if (!(cmpdevice = ast_malloc(sizeof(*cmpdevice) + strlen(sc->dev)))) { + ast_free(sc); return -1; } strcpy(cmpdevice->hintdevice, sc->dev); @@ -4414,6 +4416,7 @@ static int handle_statechange(void *datap) if (cmpdevice) { ast_free(cmpdevice); } + ast_free(sc); return 0; }