summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorTzafrir Cohen <tzafrir.cohen@xorcom.com>2011-02-21 13:58:18 +0000
committerTzafrir Cohen <tzafrir.cohen@xorcom.com>2011-02-21 13:58:18 +0000
commit54802a099cffad53bac676fa4a2fada957ddb591 (patch)
tree2cbe2b83b3387ec2c6bdcff876f7ed6c728be8a3 /main
parent83035fdf68bd42b2dd784c0c5420d8672ad95c90 (diff)
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
Diffstat (limited to 'main')
-rw-r--r--main/pbx.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/main/pbx.c b/main/pbx.c
index fe52ea2c7..6b75c77e2 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;
}