aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/app_chanspy.c55
1 files changed, 22 insertions, 33 deletions
diff --git a/apps/app_chanspy.c b/apps/app_chanspy.c
index 7e79eacf0..310e14ab5 100644
--- a/apps/app_chanspy.c
+++ b/apps/app_chanspy.c
@@ -713,22 +713,9 @@ static int common_exec(struct ast_channel *chan, struct ast_flags *flags,
chanspy_ds_free(peer_chanspy_ds), prev = peer,
peer_chanspy_ds = next_chanspy_ds ? next_chanspy_ds :
next_channel(chan, prev, spec, exten, context, &chanspy_ds), next_chanspy_ds = NULL) {
- const char *group;
int igrp = !mygroup;
- char *groups[NUM_SPYGROUPS];
- char *mygroups[NUM_SPYGROUPS];
- int num_groups = 0;
- char dup_group[512];
- int num_mygroups = 0;
- char *dup_mygroup;
- int x;
- int y;
- char *s;
- char *buffer;
- char *end;
- char *ext;
- char *form_enforced;
int ienf = !myenforced;
+ char *s;
peer = peer_chanspy_ds->chan;
@@ -757,7 +744,16 @@ static int common_exec(struct ast_channel *chan, struct ast_flags *flags,
}
if (mygroup) {
- dup_mygroup = ast_strdupa(mygroup);
+ int num_groups = 0;
+ int num_mygroups = 0;
+ char dup_group[512];
+ char dup_mygroup[512];
+ char *groups[NUM_SPYGROUPS];
+ char *mygroups[NUM_SPYGROUPS];
+ const char *group;
+ int x;
+ int y;
+ ast_copy_string(dup_mygroup, mygroup, sizeof(dup_mygroup));
num_mygroups = ast_app_separate_args(dup_mygroup, ':', mygroups,
ARRAY_LEN(mygroups));
@@ -783,35 +779,28 @@ static int common_exec(struct ast_channel *chan, struct ast_flags *flags,
}
if (myenforced) {
+ char ext[AST_CHANNEL_NAME + 3];
+ char buffer[512];
+ char *end;
- /* We don't need to allocate more space than just the
- length of (peer->name) for ext as we will cut the
- channel name's ending before copying into ext */
-
- ext = alloca(strlen(peer->name));
-
- form_enforced = alloca(strlen(myenforced) + 3);
+ snprintf(buffer, sizeof(buffer) - 1, ":%s:", myenforced);
- strcpy(form_enforced, ":");
- strcat(form_enforced, myenforced);
- strcat(form_enforced, ":");
-
- buffer = ast_strdupa(peer->name);
-
- if ((end = strchr(buffer, '-'))) {
+ ast_copy_string(ext + 1, peer->name, sizeof(ext) - 1);
+ if ((end = strchr(ext, '-'))) {
*end++ = ':';
*end = '\0';
}
- strcpy(ext, ":");
- strcat(ext, buffer);
+ ext[0] = ':';
- if (strcasestr(form_enforced, ext))
+ if (strcasestr(buffer, ext)) {
ienf = 1;
+ }
}
- if (!ienf)
+ if (!ienf) {
continue;
+ }
strcpy(peer_name, "spy-");
strncat(peer_name, peer->name, AST_NAME_STRLEN - 4 - 1);