From: sungtae kim Date: Tue, 21 Apr 2020 15:40:14 +0000 (+0000) Subject: res_ari_channels: Fixed endpoint 80 characters limit X-Git-Tag: 17.4.0-rc1~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9a90ab372223afebf1570b1007275b204e33abcc;p=thirdparty%2Fasterisk.git res_ari_channels: Fixed endpoint 80 characters limit Fixed it to copy the entire string from the requested endpoint body except tech-prefix. ASTERISK-28847 Change-Id: I91b5f6708a1200363f3267b847dd6a0915222c25 --- diff --git a/res/ari/resource_channels.c b/res/ari/resource_channels.c index 81a902c3e8..6003a380fc 100644 --- a/res/ari/resource_channels.c +++ b/res/ari/resource_channels.c @@ -1077,7 +1077,7 @@ static struct ast_channel *ari_channels_handle_originate_with_id(const char *arg struct ast_ari_response *response) { char *dialtech; - char dialdevice[AST_CHANNEL_NAME]; + char *dialdevice = NULL; struct ast_dial *dial; char *caller_id = NULL; char *cid_num = NULL; @@ -1116,7 +1116,7 @@ static struct ast_channel *ari_channels_handle_originate_with_id(const char *arg dialtech = ast_strdupa(args_endpoint); if ((stuff = strchr(dialtech, '/'))) { *stuff++ = '\0'; - ast_copy_string(dialdevice, stuff, sizeof(dialdevice)); + dialdevice = stuff; } if (ast_strlen_zero(dialtech) || ast_strlen_zero(dialdevice)) { @@ -1787,7 +1787,7 @@ void ast_ari_channels_create(struct ast_variable *headers, struct ast_channel_snapshot *snapshot; pthread_t thread; char *dialtech; - char dialdevice[AST_CHANNEL_NAME]; + char *dialdevice = NULL; char *stuff; int cause; struct ast_format_cap *request_cap; @@ -1826,7 +1826,14 @@ void ast_ari_channels_create(struct ast_variable *headers, dialtech = ast_strdupa(args->endpoint); if ((stuff = strchr(dialtech, '/'))) { *stuff++ = '\0'; - ast_copy_string(dialdevice, stuff, sizeof(dialdevice)); + dialdevice = stuff; + } + + if (ast_strlen_zero(dialtech) || ast_strlen_zero(dialdevice)) { + ast_ari_response_error(response, 400, "Bad Request", + "Invalid endpoint specified"); + chan_data_destroy(chan_data); + return; } originator = ast_channel_get_by_name(args->originator);