From 1bff400df7ff1fda353fab49de2fcf9cbba5cd89 Mon Sep 17 00:00:00 2001 From: Alexander Traud <pabstraud@compuserve.com> Date: Mon, 9 Nov 2015 10:04:24 +0100 Subject: [PATCH] ast_format_cap_get_names: To display all formats, the buffer was increased. ASTERISK-25533 #close Change-Id: Ie1a9d1a6511b3f1a56b93d04475fbf8a4e40010a --- addons/chan_mobile.c | 2 +- addons/chan_ooh323.c | 14 +++++------ apps/app_dumpchan.c | 2 +- bridges/bridge_native_rtp.c | 4 ++-- channels/chan_alsa.c | 2 +- channels/chan_console.c | 2 +- channels/chan_iax2.c | 44 +++++++++++++++++------------------ channels/chan_mgcp.c | 10 ++++---- channels/chan_motif.c | 2 +- channels/chan_nbs.c | 2 +- channels/chan_oss.c | 2 +- channels/chan_phone.c | 2 +- channels/chan_pjsip.c | 2 +- channels/chan_sip.c | 36 ++++++++++++++-------------- channels/chan_skinny.c | 12 +++++----- channels/chan_unistim.c | 18 +++++++------- channels/chan_vpb.cc | 2 +- funcs/func_channel.c | 4 ++-- include/asterisk/format_cap.h | 5 ++++ main/channel.c | 12 +++++----- main/cli.c | 2 +- main/file.c | 2 +- main/manager.c | 2 +- main/sorcery.c | 2 +- res/res_pjsip_sdp_rtp.c | 4 ++-- tests/test_config.c | 4 ++-- tests/test_format_cap.c | 2 +- 27 files changed, 101 insertions(+), 96 deletions(-) diff --git a/addons/chan_mobile.c b/addons/chan_mobile.c index 3304702d24..f748f791f6 100644 --- a/addons/chan_mobile.c +++ b/addons/chan_mobile.c @@ -902,7 +902,7 @@ static struct ast_channel *mbl_request(const char *type, struct ast_format_cap * } if (ast_format_cap_iscompatible_format(cap, DEVICE_FRAME_FORMAT) == AST_FORMAT_CMP_NOT_EQUAL) { - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_log(LOG_WARNING, "Asked to get a channel of unsupported format '%s'\n", ast_format_cap_get_names(cap, &codec_buf)); *cause = AST_CAUSE_FACILITY_NOT_IMPLEMENTED; return NULL; diff --git a/addons/chan_ooh323.c b/addons/chan_ooh323.c index ef67b78d7e..b5306973c1 100644 --- a/addons/chan_ooh323.c +++ b/addons/chan_ooh323.c @@ -576,7 +576,7 @@ static struct ast_channel *ooh323_request(const char *type, struct ast_format_ca const struct ast_assigned_ids *assignedids, const struct ast_channel *requestor, const char *data, int *cause) { - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); struct ast_channel *chan = NULL; struct ooh323_pvt *p = NULL; struct ooh323_peer *peer = NULL; @@ -1192,7 +1192,7 @@ static int ooh323_write(struct ast_channel *ast, struct ast_frame *f) if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), f->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) { if (ast_format_cap_count(ast_channel_nativeformats(ast))) { - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_log(LOG_WARNING, "Asked to transmit frame type %s, while native formats is %s (read/write = %s/%s)\n", ast_format_get_name(f->subclass.format), @@ -1545,7 +1545,7 @@ void ooh323_set_write_format(ooCallData *call, struct ast_format *fmt, int txfra return; } if (gH323Debug) { - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_verb(0, "Writeformat before update %s/%s\n", ast_format_get_name(ast_channel_writeformat(p->owner)), ast_format_cap_get_names(ast_channel_nativeformats(p->owner), &codec_buf)); @@ -2114,7 +2114,7 @@ int onNewCallCreated(ooCallData *call) } if (gH323Debug) { - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_verb(0, " Outgoing call %s(%s) - Codec prefs - %s\n", p->username?p->username:"NULL", call->callToken, @@ -3231,7 +3231,7 @@ static char *handle_cli_ooh323_show_peer(struct ast_cli_entry *e, int cmd, struc static char *handle_cli_ooh323_show_peers(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) { struct ooh323_peer *prev = NULL, *peer = NULL; - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); char ip_port[30]; #define FORMAT "%-15.15s %-15.15s %-23.23s %-s\n" @@ -3370,7 +3370,7 @@ static char *handle_cli_ooh323_show_user(struct ast_cli_entry *e, int cmd, struc static char *handle_cli_ooh323_show_users(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) { struct ooh323_user *prev = NULL, *user = NULL; - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); #define FORMAT1 "%-15.15s %-15.15s %-15.15s %-s\n" switch (cmd) { @@ -3504,7 +3504,7 @@ static char *handle_cli_ooh323_show_gk(struct ast_cli_entry *e, int cmd, struct static char *handle_cli_ooh323_show_config(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) { char value[FORMAT_STRING_SIZE]; - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ooAliases *pAlias = NULL, *pAliasNext = NULL;; switch (cmd) { diff --git a/apps/app_dumpchan.c b/apps/app_dumpchan.c index 1794c25659..1a5a4469a5 100644 --- a/apps/app_dumpchan.c +++ b/apps/app_dumpchan.c @@ -72,7 +72,7 @@ static int serialize_showchan(struct ast_channel *c, char *buf, size_t size) { long elapsed_seconds = 0; int hour = 0, min = 0, sec = 0; - struct ast_str *format_buf = ast_str_alloca(64); + struct ast_str *format_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); char cgrp[256]; char pgrp[256]; struct ast_str *write_transpath = ast_str_alloca(256); diff --git a/bridges/bridge_native_rtp.c b/bridges/bridge_native_rtp.c index c226dbddff..7eacc9d8c8 100644 --- a/bridges/bridge_native_rtp.c +++ b/bridges/bridge_native_rtp.c @@ -387,8 +387,8 @@ static int native_rtp_bridge_compatible(struct ast_bridge *bridge) glue1->get_codec(bc1->chan, cap1); } if (ast_format_cap_count(cap0) != 0 && ast_format_cap_count(cap1) != 0 && !ast_format_cap_iscompatible(cap0, cap1)) { - struct ast_str *codec_buf0 = ast_str_alloca(64); - struct ast_str *codec_buf1 = ast_str_alloca(64); + struct ast_str *codec_buf0 = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *codec_buf1 = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_debug(1, "Channel codec0 = %s is not codec1 = %s, cannot native bridge in RTP.\n", ast_format_cap_get_names(cap0, &codec_buf0), ast_format_cap_get_names(cap1, &codec_buf1)); return 0; diff --git a/channels/chan_alsa.c b/channels/chan_alsa.c index 74a61398ae..6508a1e07d 100644 --- a/channels/chan_alsa.c +++ b/channels/chan_alsa.c @@ -620,7 +620,7 @@ static struct ast_channel *alsa_request(const char *type, struct ast_format_cap struct ast_channel *tmp = NULL; if (ast_format_cap_iscompatible_format(cap, ast_format_slin) == AST_FORMAT_CMP_NOT_EQUAL) { - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_log(LOG_NOTICE, "Asked to get a channel of format '%s'\n", ast_format_cap_get_names(cap, &codec_buf)); return NULL; } diff --git a/channels/chan_console.c b/channels/chan_console.c index 74f2922eb6..02d68870b9 100644 --- a/channels/chan_console.c +++ b/channels/chan_console.c @@ -479,7 +479,7 @@ static struct ast_channel *console_request(const char *type, struct ast_format_c } if (!(ast_format_cap_iscompatible(cap, console_tech.capabilities))) { - struct ast_str *cap_buf = ast_str_alloca(64); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_log(LOG_NOTICE, "Channel requested with unsupported format(s): '%s'\n", ast_format_cap_get_names(cap, &cap_buf)); goto return_unref; diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index efe1bd3946..5af0bfe1df 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -3816,7 +3816,7 @@ static char *handle_cli_iax2_show_peer(struct ast_cli_entry *e, int cmd, struct char status[30]; char cbuf[256]; struct iax2_peer *peer; - struct ast_str *codec_buf = ast_str_alloca(256); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); struct ast_str *encmethods = ast_str_alloca(256); int load_realtime = 0; @@ -5589,8 +5589,8 @@ static enum ast_bridge_result iax2_bridge(struct ast_channel *c0, struct ast_cha return AST_BRIDGE_FAILED_NOWARN; } if (!(ast_format_cap_identical(ast_channel_nativeformats(c0), ast_channel_nativeformats(c1)))) { - struct ast_str *c0_buf = ast_str_alloca(64); - struct ast_str *c1_buf = ast_str_alloca(64); + struct ast_str *c0_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *c1_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_verb(3, "Operating with different codecs [%s] [%s] , can't native bridge...\n", ast_format_cap_get_names(ast_channel_nativeformats(c0), &c0_buf), @@ -10815,9 +10815,9 @@ static int socket_process_helper(struct iax2_thread *thread) break; } if (authdebug) { - struct ast_str *peer_buf = ast_str_alloca(64); - struct ast_str *cap_buf = ast_str_alloca(64); - struct ast_str *peer_form_buf = ast_str_alloca(64); + struct ast_str *peer_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *peer_form_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); if (ast_test_flag64(iaxs[fr->callno], IAX_CODEC_NOCAP)) { ast_log(LOG_NOTICE, "Rejected connect attempt from %s, requested '%s' incompatible with our capability '%s'.\n", @@ -10862,9 +10862,9 @@ static int socket_process_helper(struct iax2_thread *thread) } if (!format) { - struct ast_str *peer_buf = ast_str_alloca(64); - struct ast_str *cap_buf = ast_str_alloca(64); - struct ast_str *peer_form_buf = ast_str_alloca(64); + struct ast_str *peer_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *peer_form_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); memset(&ied0, 0, sizeof(ied0)); iax_ie_append_str(&ied0, IAX_IE_CAUSE, "Unable to negotiate codec"); @@ -11042,8 +11042,8 @@ static int socket_process_helper(struct iax2_thread *thread) break; } if (authdebug) { - struct ast_str *peer_buf = ast_str_alloca(64); - struct ast_str *cap_buf = ast_str_alloca(64); + struct ast_str *peer_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_log(LOG_NOTICE, "Rejected call to %s, format %s incompatible with our capability %s.\n", ast_sockaddr_stringify(&addr), @@ -11056,7 +11056,7 @@ static int socket_process_helper(struct iax2_thread *thread) ast_set_flag(&iaxs[fr->callno]->state, IAX_STATE_STARTED); iax2_lock_owner(fr->callno); if (iaxs[fr->callno] && iaxs[fr->callno]->owner && native) { - struct ast_str *cap_buf = ast_str_alloca(64); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); /* Switch us to use a compatible format */ iax2_codec_pref_best_bitfield2cap( @@ -11260,9 +11260,9 @@ static int socket_process_helper(struct iax2_thread *thread) iax2_codec_pref_string(&iaxs[fr->callno]->prefs, host_pref_buf, sizeof(host_pref_buf) - 1); } if (!format) { - struct ast_str *cap_buf = ast_str_alloca(64); - struct ast_str *peer_buf = ast_str_alloca(64); - struct ast_str *peer_form_buf = ast_str_alloca(64); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *peer_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *peer_form_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); if(!ast_test_flag64(iaxs[fr->callno], IAX_CODEC_NOCAP)) { ast_debug(1, "We don't do requested format %s, falling back to peer capability '%s'\n", @@ -11323,9 +11323,9 @@ static int socket_process_helper(struct iax2_thread *thread) } } if (!format) { - struct ast_str *cap_buf = ast_str_alloca(64); - struct ast_str *peer_buf = ast_str_alloca(64); - struct ast_str *peer_form_buf = ast_str_alloca(64); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *peer_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *peer_form_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_log(LOG_ERROR, "No best format in %s???\n", iax2_getformatname_multiple(iaxs[fr->callno]->peercapability & iaxs[fr->callno]->capability, &cap_buf)); @@ -11449,7 +11449,7 @@ immediatedial: break; } } else { - struct ast_str *cap_buf = ast_str_alloca(64); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_set_flag(&iaxs[fr->callno]->state, IAX_STATE_STARTED); ast_verb(3, "Accepting DIAL from %s, formats = %s\n", ast_sockaddr_stringify(&addr), @@ -12530,8 +12530,8 @@ static struct ast_channel *iax2_request(const char *type, struct ast_format_cap res = ast_translator_best_choice(cap, ast_channel_nativeformats(c), &best_fmt_cap, &best_fmt_native); if (res < 0) { - struct ast_str *native_cap_buf = ast_str_alloca(256); - struct ast_str *cap_buf = ast_str_alloca(256); + struct ast_str *native_cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_log(LOG_WARNING, "Unable to create translator path for %s to %s on %s\n", ast_format_cap_get_names(ast_channel_nativeformats(c), &native_cap_buf), @@ -14384,7 +14384,7 @@ static int function_iaxpeer(struct ast_channel *chan, const char *cmd, char *dat } else if (!strcasecmp(colname, "callerid_num")) { ast_copy_string(buf, peer->cid_num, len); } else if (!strcasecmp(colname, "codecs")) { - struct ast_str *codec_buf = ast_str_alloca(256); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); iax2_getformatname_multiple(peer->capability, &codec_buf); ast_copy_string(buf, ast_str_buffer(codec_buf), len); diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c index 030df89c7e..16ba7ec308 100644 --- a/channels/chan_mgcp.c +++ b/channels/chan_mgcp.c @@ -1253,7 +1253,7 @@ static int mgcp_write(struct ast_channel *ast, struct ast_frame *frame) } } else { if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) { - struct ast_str *cap_buf = ast_str_alloca(64); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_log(LOG_WARNING, "Asked to transmit frame type %s, while native formats is %s (read/write = %s/%s)\n", ast_format_get_name(frame->subclass.format), @@ -1986,9 +1986,9 @@ static int process_sdp(struct mgcp_subchannel *sub, struct mgcp_request *req) int codec, codec_count=0; int iterator; struct mgcp_endpoint *p = sub->parent; - struct ast_str *global_buf = ast_str_alloca(64); - struct ast_str *peer_buf = ast_str_alloca(64); - struct ast_str *pvt_buf = ast_str_alloca(64); + struct ast_str *global_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *peer_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *pvt_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); /* Get codec and RTP info from SDP */ m = get_sdp(req, "m"); @@ -3972,7 +3972,7 @@ static struct ast_channel *mgcp_request(const char *type, struct ast_format_cap char tmp[256]; if (!(ast_format_cap_iscompatible(cap, global_capability))) { - struct ast_str *cap_buf = ast_str_alloca(64); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_log(LOG_NOTICE, "Asked to get a channel of unsupported format '%s'\n", ast_format_cap_get_names(cap, &cap_buf)); /*return NULL;*/ diff --git a/channels/chan_motif.c b/channels/chan_motif.c index 48f1b1fc71..24575fae01 100644 --- a/channels/chan_motif.c +++ b/channels/chan_motif.c @@ -1706,7 +1706,7 @@ static int jingle_write(struct ast_channel *ast, struct ast_frame *frame) switch (frame->frametype) { case AST_FRAME_VOICE: if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) { - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_log(LOG_WARNING, "Asked to transmit frame type %s, while native formats is %s (read/write = %s/%s)\n", diff --git a/channels/chan_nbs.c b/channels/chan_nbs.c index 36c3435bbc..2abde61e33 100644 --- a/channels/chan_nbs.c +++ b/channels/chan_nbs.c @@ -232,7 +232,7 @@ static struct ast_channel *nbs_request(const char *type, struct ast_format_cap * struct ast_channel *tmp = NULL; if (ast_format_cap_iscompatible_format(cap, ast_format_slin) == AST_FORMAT_CMP_NOT_EQUAL) { - struct ast_str *cap_buf = ast_str_alloca(64); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_log(LOG_NOTICE, "Asked to get a channel of unsupported format '%s'\n", ast_format_cap_get_names(cap, &cap_buf)); diff --git a/channels/chan_oss.c b/channels/chan_oss.c index 51fce44c0b..912a5ebbeb 100644 --- a/channels/chan_oss.c +++ b/channels/chan_oss.c @@ -863,7 +863,7 @@ static struct ast_channel *oss_request(const char *type, struct ast_format_cap * return NULL; } if (ast_format_cap_iscompatible_format(cap, ast_format_slin) == AST_FORMAT_CMP_NOT_EQUAL) { - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_log(LOG_NOTICE, "Format %s unsupported\n", ast_format_cap_get_names(cap, &codec_buf)); return NULL; } diff --git a/channels/chan_phone.c b/channels/chan_phone.c index 2bf7bddb4d..451d9f261e 100644 --- a/channels/chan_phone.c +++ b/channels/chan_phone.c @@ -1282,7 +1282,7 @@ static struct ast_channel *phone_request(const char *type, struct ast_format_cap restart_monitor(); if (tmp == NULL) { if (!(ast_format_cap_iscompatible(cap, phone_tech.capabilities))) { - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_log(LOG_NOTICE, "Asked to get a channel of unsupported format '%s'\n", ast_format_cap_get_names(cap, &codec_buf)); return NULL; diff --git a/channels/chan_pjsip.c b/channels/chan_pjsip.c index 6195d1032f..1319094cff 100644 --- a/channels/chan_pjsip.c +++ b/channels/chan_pjsip.c @@ -673,7 +673,7 @@ static int chan_pjsip_write(struct ast_channel *ast, struct ast_frame *frame) return 0; } if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) { - struct ast_str *cap_buf = ast_str_alloca(128); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); struct ast_str *write_transpath = ast_str_alloca(256); struct ast_str *read_transpath = ast_str_alloca(256); diff --git a/channels/chan_sip.c b/channels/chan_sip.c index acb7d535fb..cda4370245 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -7209,7 +7209,7 @@ static int sip_write(struct ast_channel *ast, struct ast_frame *frame) switch (frame->frametype) { case AST_FRAME_VOICE: if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) { - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_log(LOG_WARNING, "Asked to transmit frame type %s, while native formats is %s read/write = %s/%s\n", ast_format_get_name(frame->subclass.format), ast_format_cap_get_names(ast_channel_nativeformats(ast), &codec_buf), @@ -7846,7 +7846,7 @@ static struct ast_channel *sip_new(struct sip_pvt *i, int state, const char *tit struct ast_variable *v = NULL; struct ast_format *fmt; struct ast_format_cap *what = NULL; /* SHALLOW COPY DO NOT DESTROY! */ - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); int needvideo = 0; int needtext = 0; char *exten; @@ -9921,7 +9921,7 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action int debug = sip_debug_test_pvt(p); /* START UNKNOWN */ - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); struct ast_format *tmp_fmt; /* END UNKNOWN */ @@ -10570,11 +10570,11 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action if (debug) { /* shame on whoever coded this.... */ - struct ast_str *cap_buf = ast_str_alloca(64); - struct ast_str *peer_buf = ast_str_alloca(64); - struct ast_str *vpeer_buf = ast_str_alloca(64); - struct ast_str *tpeer_buf = ast_str_alloca(64); - struct ast_str *joint_buf = ast_str_alloca(64); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *peer_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *vpeer_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *tpeer_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *joint_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_verbose("Capabilities: us - %s, peer - audio=%s/video=%s/text=%s, combined - %s\n", ast_format_cap_get_names(p->caps, &cap_buf), @@ -10781,8 +10781,8 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action unsigned int framing; if (debug) { - struct ast_str *cap_buf = ast_str_alloca(64); - struct ast_str *joint_buf = ast_str_alloca(64); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *joint_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_debug(1, "Setting native formats after processing SDP. peer joint formats %s, old nativeformats %s\n", ast_format_cap_get_names(p->jointcaps, &joint_buf), @@ -13116,7 +13116,7 @@ static enum sip_result add_sdp(struct sip_request *resp, struct sip_pvt *p, int int min_video_packet_size = 0; int min_text_packet_size = 0; - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); /* Set the SDP session name */ snprintf(subject, sizeof(subject), "s=%s\r\n", ast_strlen_zero(global_sdpsession) ? "-" : global_sdpsession); @@ -20298,7 +20298,7 @@ static char *_sip_show_peer(int type, int fd, struct mansession *s, const struct char status[30] = ""; char cbuf[256]; struct sip_peer *peer; - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); struct ast_variable *v; int x = 0, load_realtime; int realtimepeers; @@ -20944,7 +20944,7 @@ static char *sip_show_settings(struct ast_cli_entry *e, int cmd, struct ast_cli_ { int realtimepeers; int realtimeregs; - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); const char *msg; /* temporary msg pointer */ struct sip_auth_container *credentials; @@ -21261,7 +21261,7 @@ static int show_channels_cb(void *__cur, void *__arg, int flags) if (cur->subscribed == NONE && !arg->subscriptions) { /* set if SIP transfer in progress */ const char *referstatus = cur->refer ? referstatus2str(cur->refer->status) : ""; - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_cli(arg->fd, FORMAT, ast_sockaddr_stringify_addr(dst), S_OR(cur->username, S_OR(cur->cid_num, "(None)")), @@ -21507,7 +21507,7 @@ static char *sip_show_channel(struct ast_cli_entry *e, int cmd, struct ast_cli_a if (!strncasecmp(cur->callid, a->argv[3], len)) { struct ast_str *strbuf; - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_cli(a->fd, "\n"); if (cur->subscribed != NONE) { @@ -22466,7 +22466,7 @@ static int function_sippeer(struct ast_channel *chan, const char *cmd, char *dat } else if (!strcasecmp(colname, "callerid_num")) { ast_copy_string(buf, peer->cid_num, len); } else if (!strcasecmp(colname, "codecs")) { - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_format_cap_get_names(peer->caps, &codec_buf); ast_copy_string(buf, ast_str_buffer(codec_buf), len); } else if (!strcasecmp(colname, "encryption")) { @@ -29609,8 +29609,8 @@ static struct ast_channel *sip_request_call(const char *type, struct ast_format_ struct ast_channel *tmpc = NULL; char *ext = NULL, *host; char tmp[256]; - struct ast_str *codec_buf = ast_str_alloca(64); - struct ast_str *cap_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); char *dnid; char *secret = NULL; char *md5secret = NULL; diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index 23a48356ff..b6d269d954 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -4176,7 +4176,7 @@ static char *_skinny_show_device(int type, int fd, struct mansession *s, const s struct skinny_speeddial *sd; struct skinny_addon *sa; struct skinny_serviceurl *surl; - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); if (argc < 4) { return CLI_SHOWUSAGE; @@ -4425,7 +4425,7 @@ static char *_skinny_show_line(int type, int fd, struct mansession *s, const str struct skinny_device *d; struct skinny_line *l; struct skinny_subline *subline; - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); char group_buf[256]; char cbuf[256]; @@ -5075,7 +5075,7 @@ static int skinny_write(struct ast_channel *ast, struct ast_frame *frame) } } else { if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) { - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_log(LOG_WARNING, "Asked to transmit frame type %s, while native formats is %s (read/write = %s/%s)\n", ast_format_get_name(frame->subclass.format), ast_format_cap_get_names(ast_channel_nativeformats(ast), &codec_buf), @@ -5351,7 +5351,7 @@ static struct ast_channel *skinny_new(struct skinny_line *l, struct skinny_subli struct ast_format *tmpfmt; struct ast_format_cap *caps; #ifdef AST_DEVMODE - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); #endif if (!l->device || !l->device->session) { @@ -6638,7 +6638,7 @@ static int handle_capabilities_res_message(struct skinny_req *req, struct skinny struct ast_format_cap *codecs = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT); int i; #ifdef AST_DEVMODE - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); #endif @@ -7681,7 +7681,7 @@ static struct ast_channel *skinny_request(const char *type, struct ast_format_ca char tmp[256]; if (!(ast_format_cap_has_type(cap, AST_MEDIA_TYPE_AUDIO))) { - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_log(LOG_NOTICE, "Asked to get a channel of unsupported format '%s'\n", ast_format_cap_get_names(cap, &codec_buf)); return NULL; } diff --git a/channels/chan_unistim.c b/channels/chan_unistim.c index f429617258..db4720d1a0 100644 --- a/channels/chan_unistim.c +++ b/channels/chan_unistim.c @@ -2889,7 +2889,7 @@ static void start_rtp(struct unistim_subchannel *sub) ast_rtp_instance_set_remote_address(sub->rtp, &sin_tmp); if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(sub->owner), ast_channel_readformat(sub->owner)) == AST_FORMAT_CMP_NOT_EQUAL) { struct ast_format *tmpfmt; - struct ast_str *cap_buf = ast_str_alloca(64); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); tmpfmt = ast_format_cap_get_format(ast_channel_nativeformats(sub->owner), 0); ast_log(LOG_WARNING, @@ -5142,7 +5142,7 @@ static struct ast_frame *unistim_rtp_read(const struct ast_channel *ast, /* We already hold the channel lock */ if (f->frametype == AST_FRAME_VOICE) { if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(sub->owner), f->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) { - struct ast_str *cap_buf = ast_str_alloca(64); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); struct ast_format_cap *caps; ast_debug(1, @@ -5192,7 +5192,7 @@ static int unistim_write(struct ast_channel *ast, struct ast_frame *frame) } } else { if (ast_format_cap_iscompatible_format(ast_channel_nativeformats(ast), frame->subclass.format) == AST_FORMAT_CMP_NOT_EQUAL) { - struct ast_str *cap_buf = ast_str_alloca(64); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_log(LOG_WARNING, "Asked to transmit frame type %s, while native formats is %s (read/write = (%s/%s)\n", @@ -5723,9 +5723,9 @@ static struct ast_channel *unistim_new(struct unistim_subchannel *sub, int state tmpfmt = ast_format_cap_get_format(ast_channel_nativeformats(tmp), 0); if (unistimdebug) { - struct ast_str *native_buf = ast_str_alloca(64); - struct ast_str *cap_buf = ast_str_alloca(64); - struct ast_str *global_buf = ast_str_alloca(64); + struct ast_str *native_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *global_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_verb(0, "Best codec = %s from nativeformats %s (line cap=%s global=%s)\n", ast_format_get_name(tmpfmt), @@ -5938,8 +5938,8 @@ static struct ast_channel *unistim_request(const char *type, struct ast_format_c char tmp[256]; if (!(ast_format_cap_iscompatible(cap, global_cap))) { - struct ast_str *cap_buf = ast_str_alloca(64); - struct ast_str *global_buf = ast_str_alloca(64); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *global_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_log(LOG_NOTICE, "Asked to get a channel of unsupported format %s while capability is %s\n", ast_format_cap_get_names(cap, &cap_buf), @@ -6014,7 +6014,7 @@ static char *unistim_show_info(struct ast_cli_entry *e, int cmd, struct ast_cli_ struct unistim_line *line; struct unistim_subchannel *sub; struct unistimsession *s; - struct ast_str *cap_buf = ast_str_alloca(64); + struct ast_str *cap_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); switch (cmd) { case CLI_INIT: diff --git a/channels/chan_vpb.cc b/channels/chan_vpb.cc index f1ed392179..0f050a8377 100644 --- a/channels/chan_vpb.cc +++ b/channels/chan_vpb.cc @@ -2508,7 +2508,7 @@ static struct ast_channel *vpb_request(const char *type, struct ast_format_cap * if (!(ast_format_cap_iscompatible_format(cap, ast_format_slin))) { struct ast_str *buf; - buf = ast_str_create(256); + buf = ast_str_create(AST_FORMAT_CAP_NAMES_LEN); if (!buf) { return NULL; } diff --git a/funcs/func_channel.c b/funcs/func_channel.c index 7f87f450e4..0f59bb5f0c 100644 --- a/funcs/func_channel.c +++ b/funcs/func_channel.c @@ -443,7 +443,7 @@ static int func_channel_read(struct ast_channel *chan, const char *function, if (!strcasecmp(data, "audionativeformat")) { tmpcap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT); if (tmpcap) { - struct ast_str *codec_buf = ast_str_alloca(128); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_channel_lock(chan); ast_format_cap_append_from_cap(tmpcap, ast_channel_nativeformats(chan), AST_MEDIA_TYPE_AUDIO); @@ -454,7 +454,7 @@ static int func_channel_read(struct ast_channel *chan, const char *function, } else if (!strcasecmp(data, "videonativeformat")) { tmpcap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT); if (tmpcap) { - struct ast_str *codec_buf = ast_str_alloca(128); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_channel_lock(chan); ast_format_cap_append_from_cap(tmpcap, ast_channel_nativeformats(chan), AST_MEDIA_TYPE_VIDEO); diff --git a/include/asterisk/format_cap.h b/include/asterisk/format_cap.h index 94e81f869e..a86fd210e7 100644 --- a/include/asterisk/format_cap.h +++ b/include/asterisk/format_cap.h @@ -321,6 +321,11 @@ int ast_format_cap_has_type(const struct ast_format_cap *cap, enum ast_media_typ */ const char *ast_format_cap_get_names(struct ast_format_cap *cap, struct ast_str **buf); +#ifndef AST_FORMAT_CAP_NAMES_LEN +/*! Buffer size for callers of ast_format_cap_get_names to allocate. */ +#define AST_FORMAT_CAP_NAMES_LEN 384 +#endif + /*! * \brief Determine if a format cap has no formats in it. * diff --git a/main/channel.c b/main/channel.c index 9aeae5f741..67f0da8bad 100644 --- a/main/channel.c +++ b/main/channel.c @@ -339,7 +339,7 @@ static char *complete_channeltypes(struct ast_cli_args *a) static char *handle_cli_core_show_channeltype(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) { struct chanlist *cl = NULL; - struct ast_str *codec_buf = ast_str_alloca(256); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); switch (cmd) { case CLI_INIT: @@ -5094,7 +5094,7 @@ int ast_write(struct ast_channel *chan, struct ast_frame *fr) f = fr; } else { if (ast_format_cmp(ast_channel_writeformat(chan), fr->subclass.format) != AST_FORMAT_CMP_EQUAL) { - struct ast_str *codec_buf = ast_str_alloca(256); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); /* * We are not setup to write this frame. Things may have changed @@ -5435,8 +5435,8 @@ static int set_format(struct ast_channel *chan, struct ast_format_cap *cap_set, res = ast_translator_best_choice(cap_native, cap_set, &best_native_fmt, &best_set_fmt); } if (res < 0) { - struct ast_str *codec_native = ast_str_alloca(256); - struct ast_str *codec_set = ast_str_alloca(256); + struct ast_str *codec_native = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *codec_set = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_format_cap_get_names(cap_native, &codec_native); ast_channel_unlock(chan); @@ -5978,8 +5978,8 @@ struct ast_channel *ast_request(const char *type, struct ast_format_cap *request res = ast_translator_best_choice(tmp_cap, chan->tech->capabilities, &tmp_fmt, &best_audio_fmt); ao2_ref(tmp_cap, -1); if (res < 0) { - struct ast_str *tech_codecs = ast_str_alloca(64); - struct ast_str *request_codecs = ast_str_alloca(64); + struct ast_str *tech_codecs = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *request_codecs = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_log(LOG_WARNING, "No translator path exists for channel type %s (native %s) to %s\n", type, ast_format_cap_get_names(chan->tech->capabilities, &tech_codecs), diff --git a/main/cli.c b/main/cli.c index 47c48d6b11..0d66f3e48e 100644 --- a/main/cli.c +++ b/main/cli.c @@ -1528,7 +1528,7 @@ static char *handle_showchan(struct ast_cli_entry *e, int cmd, struct ast_cli_ar struct ast_var_t *var; struct ast_str *write_transpath = ast_str_alloca(256); struct ast_str *read_transpath = ast_str_alloca(256); - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); struct ast_bridge *bridge; struct ast_callid *callid; char callid_buf[32]; diff --git a/main/file.c b/main/file.c index 64406bf855..7ce0213409 100644 --- a/main/file.c +++ b/main/file.c @@ -1096,7 +1096,7 @@ int ast_streamfile(struct ast_channel *chan, const char *filename, const char *p fs = ast_openstream(chan, filename, preflang); if (!fs) { - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_log(LOG_WARNING, "Unable to open %s (format %s): %s\n", filename, ast_format_cap_get_names(ast_channel_nativeformats(chan), &codec_buf), strerror(errno)); return -1; diff --git a/main/manager.c b/main/manager.c index 8295303c76..99c5502752 100644 --- a/main/manager.c +++ b/main/manager.c @@ -4339,7 +4339,7 @@ static int action_status(struct mansession *s, const struct message *m) struct ast_str *write_transpath = ast_str_alloca(256); struct ast_str *read_transpath = ast_str_alloca(256); struct ast_channel *chan; - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); int channels = 0; int all = ast_strlen_zero(name); /* set if we want all channels */ char id_text[256]; diff --git a/main/sorcery.c b/main/sorcery.c index 43a395ad0c..b75eb8ba7f 100644 --- a/main/sorcery.c +++ b/main/sorcery.c @@ -304,7 +304,7 @@ static int chararray_handler_fn(const void *obj, const intptr_t *args, char **bu static int codec_handler_fn(const void *obj, const intptr_t *args, char **buf) { - struct ast_str *codec_buf = ast_str_alloca(64); + struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); struct ast_format_cap **cap = (struct ast_format_cap **)(obj + args[0]); return !(*buf = ast_strdup(ast_format_cap_get_names(*cap, &codec_buf))); } diff --git a/res/res_pjsip_sdp_rtp.c b/res/res_pjsip_sdp_rtp.c index df2820479e..14b1e4e10c 100644 --- a/res/res_pjsip_sdp_rtp.c +++ b/res/res_pjsip_sdp_rtp.c @@ -321,8 +321,8 @@ static int set_caps(struct ast_sip_session *session, struct ast_sip_session_medi /* get the joint capabilities between peer and endpoint */ ast_format_cap_get_compatible(caps, peer, joint); if (!ast_format_cap_count(joint)) { - struct ast_str *usbuf = ast_str_alloca(256); - struct ast_str *thembuf = ast_str_alloca(256); + struct ast_str *usbuf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *thembuf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_rtp_codecs_payloads_destroy(&codecs); ast_log(LOG_NOTICE, "No joint capabilities for '%s' media stream between our configuration(%s) and incoming SDP(%s)\n", diff --git a/tests/test_config.c b/tests/test_config.c index b9935dc79b..3ad57729f4 100644 --- a/tests/test_config.c +++ b/tests/test_config.c @@ -1492,8 +1492,8 @@ AST_TEST_DEFINE(config_options_test) res = AST_TEST_FAIL; } if (!ast_format_cap_identical(arr[x]->codeccapopt, control->codeccapopt)) { - struct ast_str *codec_buf1 = ast_str_alloca(64); - struct ast_str *codec_buf2 = ast_str_alloca(64); + struct ast_str *codec_buf1 = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); + struct ast_str *codec_buf2 = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); ast_test_status_update(test, "format did not match: '%s' vs '%s' on loop %d\n", ast_format_cap_get_names(arr[x]->codeccapopt, &codec_buf1), diff --git a/tests/test_format_cap.c b/tests/test_format_cap.c index 9e8eac47ae..e1ae553c7a 100644 --- a/tests/test_format_cap.c +++ b/tests/test_format_cap.c @@ -1079,7 +1079,7 @@ AST_TEST_DEFINE(format_cap_get_names) RAII_VAR(struct ast_format *, ulaw_format, NULL, ao2_cleanup); RAII_VAR(struct ast_codec *, alaw, NULL, ao2_cleanup); RAII_VAR(struct ast_format *, alaw_format, NULL, ao2_cleanup); - struct ast_str *buffer = ast_str_alloca(128); + struct ast_str *buffer = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN); switch (cmd) { case TEST_INIT: -- GitLab