From 1dea497454f50b25c2fc4f9aa2a5bffcfd9f295d Mon Sep 17 00:00:00 2001 From: Sungtae Kim Date: Sat, 17 Nov 2018 03:33:20 +0100 Subject: [PATCH] res/res_ari: Fix null endpoint handle The res_ari(POST /channels/create handler) deos not check the endpoint parameter length. And it causes core dump. Fixed it to check the parameter length. Also fixed memory leak. ASTERISK-28169 Change-Id: Ibf10a9eb8a2e3a9ee1e13fbe748b2ecf955c3993 --- res/ari/resource_channels.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/res/ari/resource_channels.c b/res/ari/resource_channels.c index cdf0f88207..bca32f1243 100644 --- a/res/ari/resource_channels.c +++ b/res/ari/resource_channels.c @@ -1748,15 +1748,21 @@ void ast_ari_channels_create(struct ast_variable *headers, struct ast_format_cap *request_cap; struct ast_channel *originator; - chan_data = ast_calloc(1, sizeof(*chan_data)); - if (!chan_data) { - ast_ari_response_alloc_failed(response); + if (!ast_strlen_zero(args->originator) && !ast_strlen_zero(args->formats)) { + ast_ari_response_error(response, 400, "Bad Request", + "Originator and formats can't both be specified"); return; } - if (!ast_strlen_zero(args->originator) && !ast_strlen_zero(args->formats)) { + if (ast_strlen_zero(args->endpoint)) { ast_ari_response_error(response, 400, "Bad Request", - "Originator and formats can't both be specified"); + "Endpoint must be specified"); + return; + } + + chan_data = ast_calloc(1, sizeof(*chan_data)); + if (!chan_data) { + ast_ari_response_alloc_failed(response); return; }