summaryrefslogtreecommitdiff
path: root/res/res_stasis_snoop.c
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2014-08-12 23:36:37 +0000
committerRichard Mudgett <rmudgett@digium.com>2014-08-12 23:36:37 +0000
commit8526d967c9e5514490160e0b7f90a6cc21c81094 (patch)
tree58414a7e6451586a5563cfb2c506a4f7c4f0e150 /res/res_stasis_snoop.c
parentca61f8ac82c8ef12890b3e0b8625035a6b109ed7 (diff)
res_stasis_snoop.c: Fix off nominial exit path leaving Snoop channel locked and not hungup.
* Made use ast_copy_string() instead of strcpy() for snoop uniqueid for safety. There is no guarantee that the max channel uniqueid length will remain the same as the snoop uniqueid space. ........ Merged revisions 420879 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420880 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'res/res_stasis_snoop.c')
-rw-r--r--res/res_stasis_snoop.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/res/res_stasis_snoop.c b/res/res_stasis_snoop.c
index 72f851923..16d47f8ba 100644
--- a/res/res_stasis_snoop.c
+++ b/res/res_stasis_snoop.c
@@ -333,7 +333,7 @@ struct ast_channel *stasis_app_control_snoop(struct ast_channel *chan,
return NULL;
}
- strcpy(snoop->uniqueid, ast_channel_uniqueid(chan));
+ ast_copy_string(snoop->uniqueid, ast_channel_uniqueid(chan), sizeof(snoop->uniqueid));
/* To keep the channel valid on the Snoop structure until it is destroyed we bump the ref up here */
ast_channel_ref(snoop->chan);
@@ -346,6 +346,8 @@ struct ast_channel *stasis_app_control_snoop(struct ast_channel *chan,
/* The format on the Snoop channel will be this signed linear format, and it will never change */
caps = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT);
if (!caps) {
+ ast_channel_unlock(snoop->chan);
+ ast_hangup(snoop->chan);
return NULL;
}
ast_format_cap_append(caps, snoop->spy_format, 0);