]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_ari_channels: Fixed endpoint 80 characters limit
authorsungtae kim <sungtae@messagebird.com>
Tue, 21 Apr 2020 15:40:14 +0000 (15:40 +0000)
committerJoshua Colp <jcolp@sangoma.com>
Wed, 22 Apr 2020 21:07:22 +0000 (16:07 -0500)
Fixed it to copy the entire string from the requested endpoint body except tech-prefix.

ASTERISK-28847

Change-Id: I91b5f6708a1200363f3267b847dd6a0915222c25

res/ari/resource_channels.c

index 549883d0132fad671038db992ceb6975ee1c240d..eaff90fb8758f065601b3331e4e741d041c885a3 100644 (file)
@@ -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);