diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 0b657f68aa1d8ec1d0b77ec094b9423e3cc77c51..cd9479a203de4a5e1276a4f99aafbc2e0466fccd 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -10034,15 +10034,11 @@ static int function_sippeer(struct ast_channel *chan, char *cmd, char *data, cha } else if (!strcasecmp(colname, "codecs")) { ast_getformatname_multiple(buf, len -1, peer->capability); } else if (!strncasecmp(colname, "codec[", 6)) { - char *codecnum, *ptr; + char *codecnum; int index = 0, codec = 0; - codecnum = strchr(colname, '['); - *codecnum = '\0'; - codecnum++; - if ((ptr = strchr(codecnum, ']'))) - *ptr = '\0'; - + codecnum = colname + 6; /* move past the '[' */ + codecnum = strsep(&codecnum, "]"); /* trim trailing ']' if any */ index = atoi(codecnum); if((codec = ast_codec_pref_index(&peer->prefs, index))) { ast_copy_string(buf, ast_getformatname(codec), len);