Public feed
#894200
+ if (myenforced) {
+
+ /* 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));
+
+ /* This one adds 3 characters in length to the colon
+ delimited list. Two characters are for the colons themselves
+ and the other is for the \0 character. */
+
+ form_enforced = alloca(strlen(myenforced) + 3);
+
+ /* Now we add the colons to the string, one at the
+ beginning, one at the end, to make sure we
+ have properly colon delimited interface names in the
+ form_enforced string */
+ strcpy(form_enforced, ":");
+ strcat(form_enforced, myenforced);
+ strcat(form_enforced, ":");
+
+ /* Putting the channel name into a temporary buffer, so we
+ can add the colon at the beginning, for proper delimitation, and
+ preventing rather serious mistakes. */
+ buffer = ast_strdupa(peer->name);
+
+ /* We find the end of the peer->name, which includes a bunch of
+ crap as some channel id or something, so we waste that, and just
+ keep the peer name proper involved in the conversation */
+ if ((end = strchr(buffer, '-'))) {
+ *end++ = ':';
+ *end = '\0';
+ }
+
+ /* Now we add a beginning colon for the proper delimitation, and
+ we add then the peer name itself. We now have a proper peer name
+ delimited on both sides by colons, and this will prevent all future
+ massive fuckups. */
+ strcpy(ext, ":");
+ strcat(ext, buffer);
+
+ /* Is the peer name we are trying to spy on in the list of allowed
+ interfaces? If it is, then we are good to go. If not, then we are not
+ allowed to spy on that interface, and we let the sucker move on to
+ an interface he has the right to spy on, maybe some other time. */
+ if (strcasestr(form_enforced, ext))
+ ienf = 1;
+
+ }