From: Jaco Kroon Date: Wed, 24 Feb 2021 18:00:35 +0000 (+0200) Subject: func_callerid+res_agi: Fix compile errors related to -Werror=zero-length-bounds X-Git-Tag: 16.17.0-rc1~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=59129bfab8b73256abab73dce8caf3738773737b;p=thirdparty%2Fasterisk.git func_callerid+res_agi: Fix compile errors related to -Werror=zero-length-bounds Change-Id: I75152cece8a00b7523d542e5ac22796f9595692b Signed-off-by: Jaco Kroon --- diff --git a/funcs/func_callerid.c b/funcs/func_callerid.c index 0b6ab517c7..445ff3eef4 100644 --- a/funcs/func_callerid.c +++ b/funcs/func_callerid.c @@ -1010,11 +1010,11 @@ static int callerid_read(struct ast_channel *chan, const char *cmd, char *data, ast_callerid_split(args.cid, name, sizeof(name), num, sizeof(num)); - if (member.argc == 1 && !strcasecmp("all", member.argv[0])) { + if (member.argc == 1 && !strcasecmp("all", member.subnames[0])) { snprintf(buf, len, "\"%s\" <%s>", name, num); - } else if (member.argc == 1 && !strcasecmp("name", member.argv[0])) { + } else if (member.argc == 1 && !strcasecmp("name", member.subnames[0])) { ast_copy_string(buf, name, len); - } else if (member.argc == 1 && !strncasecmp("num", member.argv[0], 3)) { + } else if (member.argc == 1 && !strncasecmp("num", member.subnames[0], 3)) { /* Accept num[ber] */ ast_copy_string(buf, num, len); } else { @@ -1024,18 +1024,18 @@ static int callerid_read(struct ast_channel *chan, const char *cmd, char *data, enum ID_FIELD_STATUS status; ast_channel_lock(chan); - if (member.argc == 1 && !strcasecmp("rdnis", member.argv[0])) { + if (member.argc == 1 && !strcasecmp("rdnis", member.subnames[0])) { if (ast_channel_redirecting(chan)->from.number.valid && ast_channel_redirecting(chan)->from.number.str) { ast_copy_string(buf, ast_channel_redirecting(chan)->from.number.str, len); } - } else if (!strcasecmp("dnid", member.argv[0])) { + } else if (!strcasecmp("dnid", member.subnames[0])) { if (member.argc == 1) { /* Setup as if user had given dnid-num instead. */ member.argc = 2; - member.argv[1] = "num"; + member.subnames[1] = "num"; } - if (!strncasecmp("num", member.argv[1], 3)) { + if (!strncasecmp("num", member.subnames[1], 3)) { /* * Accept num[ber] * dnid-num... @@ -1045,18 +1045,18 @@ static int callerid_read(struct ast_channel *chan, const char *cmd, char *data, if (ast_channel_dialed(chan)->number.str) { ast_copy_string(buf, ast_channel_dialed(chan)->number.str, len); } - } else if (member.argc == 3 && !strcasecmp("plan", member.argv[2])) { + } else if (member.argc == 3 && !strcasecmp("plan", member.subnames[2])) { /* dnid-num-plan */ snprintf(buf, len, "%d", ast_channel_dialed(chan)->number.plan); } else { ast_log(LOG_ERROR, "Unknown callerid data type '%s'.\n", data); } - } else if (!strncasecmp("subaddr", member.argv[1], 7)) { + } else if (!strncasecmp("subaddr", member.subnames[1], 7)) { /* * Accept subaddr[ess] * dnid-subaddr... */ - status = party_subaddress_read(buf, len, member.argc - 2, member.argv + 2, + status = party_subaddress_read(buf, len, member.argc - 2, member.subnames + 2, &ast_channel_dialed(chan)->subaddress); switch (status) { case ID_FIELD_VALID: @@ -1069,15 +1069,15 @@ static int callerid_read(struct ast_channel *chan, const char *cmd, char *data, } else { ast_log(LOG_ERROR, "Unknown callerid data type '%s'.\n", data); } - } else if (member.argc == 1 && !strcasecmp("ani2", member.argv[0])) { + } else if (member.argc == 1 && !strcasecmp("ani2", member.subnames[0])) { snprintf(buf, len, "%d", ast_channel_caller(chan)->ani2); - } else if (!strcasecmp("ani", member.argv[0])) { + } else if (!strcasecmp("ani", member.subnames[0])) { if (member.argc == 1) { /* Setup as if user had given ani-num instead. */ member.argc = 2; - member.argv[1] = "num"; + member.subnames[1] = "num"; } - status = party_id_read(buf, len, member.argc - 1, member.argv + 1, + status = party_id_read(buf, len, member.argc - 1, member.subnames + 1, &ast_channel_caller(chan)->ani); switch (status) { case ID_FIELD_VALID: @@ -1087,8 +1087,8 @@ static int callerid_read(struct ast_channel *chan, const char *cmd, char *data, ast_log(LOG_ERROR, "Unknown callerid data type '%s'.\n", data); break; } - } else if (!strcasecmp("priv", member.argv[0])) { - status = party_id_read(buf, len, member.argc - 1, member.argv + 1, + } else if (!strcasecmp("priv", member.subnames[0])) { + status = party_id_read(buf, len, member.argc - 1, member.subnames + 1, &ast_channel_caller(chan)->priv); switch (status) { case ID_FIELD_VALID: @@ -1099,7 +1099,7 @@ static int callerid_read(struct ast_channel *chan, const char *cmd, char *data, break; } } else { - status = party_id_read(buf, len, member.argc, member.argv, &ast_channel_caller(chan)->id); + status = party_id_read(buf, len, member.argc, member.subnames, &ast_channel_caller(chan)->id); switch (status) { case ID_FIELD_VALID: case ID_FIELD_INVALID: @@ -1158,18 +1158,18 @@ static int callerid_write(struct ast_channel *chan, const char *cmd, char *data, value = ast_skip_blanks(value); ast_channel_lock(chan); - if (member.argc == 1 && !strcasecmp("rdnis", member.argv[0])) { + if (member.argc == 1 && !strcasecmp("rdnis", member.subnames[0])) { ast_channel_redirecting(chan)->from.number.valid = 1; ast_free(ast_channel_redirecting(chan)->from.number.str); ast_channel_redirecting(chan)->from.number.str = ast_strdup(value); - } else if (!strcasecmp("dnid", member.argv[0])) { + } else if (!strcasecmp("dnid", member.subnames[0])) { ast_party_dialed_set_init(&dialed, ast_channel_dialed(chan)); if (member.argc == 1) { /* Setup as if user had given dnid-num instead. */ member.argc = 2; - member.argv[1] = "num"; + member.subnames[1] = "num"; } - if (!strncasecmp("num", member.argv[1], 3)) { + if (!strncasecmp("num", member.subnames[1], 3)) { /* * Accept num[ber] * dnid-num... @@ -1179,7 +1179,7 @@ static int callerid_write(struct ast_channel *chan, const char *cmd, char *data, dialed.number.str = ast_strdup(value); ast_trim_blanks(dialed.number.str); ast_party_dialed_set(ast_channel_dialed(chan), &dialed); - } else if (member.argc == 3 && !strcasecmp("plan", member.argv[2])) { + } else if (member.argc == 3 && !strcasecmp("plan", member.subnames[2])) { /* dnid-num-plan */ val = ast_strdupa(value); ast_trim_blanks(val); @@ -1193,13 +1193,13 @@ static int callerid_write(struct ast_channel *chan, const char *cmd, char *data, } else { ast_log(LOG_ERROR, "Unknown callerid data type '%s'.\n", data); } - } else if (!strncasecmp("subaddr", member.argv[1], 7)) { + } else if (!strncasecmp("subaddr", member.subnames[1], 7)) { /* * Accept subaddr[ess] * dnid-subaddr... */ status = party_subaddress_write(&dialed.subaddress, member.argc - 2, - member.argv + 2, value); + member.subnames + 2, value); switch (status) { case ID_FIELD_VALID: ast_party_dialed_set(ast_channel_dialed(chan), &dialed); @@ -1214,7 +1214,7 @@ static int callerid_write(struct ast_channel *chan, const char *cmd, char *data, ast_log(LOG_ERROR, "Unknown callerid data type '%s'.\n", data); } ast_party_dialed_free(&dialed); - } else if (member.argc == 1 && !strcasecmp("ani2", member.argv[0])) { + } else if (member.argc == 1 && !strcasecmp("ani2", member.subnames[0])) { val = ast_strdupa(value); ast_trim_blanks(val); @@ -1223,14 +1223,14 @@ static int callerid_write(struct ast_channel *chan, const char *cmd, char *data, } else { ast_log(LOG_ERROR, "Unknown callerid ani2 '%s', value unchanged\n", val); } - } else if (!strcasecmp("ani", member.argv[0])) { + } else if (!strcasecmp("ani", member.subnames[0])) { ast_party_caller_set_init(&caller, ast_channel_caller(chan)); if (member.argc == 1) { /* Setup as if user had given ani-num instead. */ member.argc = 2; - member.argv[1] = "num"; + member.subnames[1] = "num"; } - status = party_id_write(&caller.ani, member.argc - 1, member.argv + 1, value); + status = party_id_write(&caller.ani, member.argc - 1, member.subnames + 1, value); switch (status) { case ID_FIELD_VALID: ast_party_caller_set(ast_channel_caller(chan), &caller, NULL); @@ -1242,9 +1242,9 @@ static int callerid_write(struct ast_channel *chan, const char *cmd, char *data, break; } ast_party_caller_free(&caller); - } else if (!strcasecmp("priv", member.argv[0])) { + } else if (!strcasecmp("priv", member.subnames[0])) { ast_party_caller_set_init(&caller, ast_channel_caller(chan)); - status = party_id_write(&caller.priv, member.argc - 1, member.argv + 1, value); + status = party_id_write(&caller.priv, member.argc - 1, member.subnames + 1, value); switch (status) { case ID_FIELD_VALID: ast_party_caller_set(ast_channel_caller(chan), &caller, NULL); @@ -1258,7 +1258,7 @@ static int callerid_write(struct ast_channel *chan, const char *cmd, char *data, ast_party_caller_free(&caller); } else { ast_party_caller_set_init(&caller, ast_channel_caller(chan)); - status = party_id_write(&caller.id, member.argc, member.argv, value); + status = party_id_write(&caller.id, member.argc, member.subnames, value); switch (status) { case ID_FIELD_VALID: ast_channel_set_caller_event(chan, &caller, NULL); @@ -1311,10 +1311,10 @@ static int connectedline_read(struct ast_channel *chan, const char *cmd, char *d ast_channel_lock(chan); - if (member.argc == 1 && !strcasecmp("source", member.argv[0])) { + if (member.argc == 1 && !strcasecmp("source", member.subnames[0])) { ast_copy_string(buf, ast_connected_line_source_name(ast_channel_connected(chan)->source), len); - } else if (!strcasecmp("priv", member.argv[0])) { - status = party_id_read(buf, len, member.argc - 1, member.argv + 1, + } else if (!strcasecmp("priv", member.subnames[0])) { + status = party_id_read(buf, len, member.argc - 1, member.subnames + 1, &ast_channel_connected(chan)->priv); switch (status) { case ID_FIELD_VALID: @@ -1325,7 +1325,7 @@ static int connectedline_read(struct ast_channel *chan, const char *cmd, char *d break; } } else { - status = party_id_read(buf, len, member.argc, member.argv, &ast_channel_connected(chan)->id); + status = party_id_read(buf, len, member.argc, member.subnames, &ast_channel_connected(chan)->id); switch (status) { case ID_FIELD_VALID: case ID_FIELD_INVALID: @@ -1400,7 +1400,7 @@ static int connectedline_write(struct ast_channel *chan, const char *cmd, char * value = ast_skip_blanks(value); - if (member.argc == 1 && !strcasecmp("source", member.argv[0])) { + if (member.argc == 1 && !strcasecmp("source", member.subnames[0])) { int source; val = ast_strdupa(value); @@ -1418,8 +1418,8 @@ static int connectedline_write(struct ast_channel *chan, const char *cmd, char * connected.source = source; set_it(chan, &connected, NULL); } - } else if (!strcasecmp("priv", member.argv[0])) { - status = party_id_write(&connected.priv, member.argc - 1, member.argv + 1, value); + } else if (!strcasecmp("priv", member.subnames[0])) { + status = party_id_write(&connected.priv, member.argc - 1, member.subnames + 1, value); switch (status) { case ID_FIELD_VALID: set_it(chan, &connected, NULL); @@ -1432,7 +1432,7 @@ static int connectedline_write(struct ast_channel *chan, const char *cmd, char * } ast_party_connected_line_free(&connected); } else { - status = party_id_write(&connected.id, member.argc, member.argv, value); + status = party_id_write(&connected.id, member.argc, member.subnames, value); switch (status) { case ID_FIELD_VALID: set_it(chan, &connected, NULL); @@ -1486,12 +1486,12 @@ static int redirecting_read(struct ast_channel *chan, const char *cmd, char *dat ast_channel_lock(chan); ast_redirecting = ast_channel_redirecting(chan); - if (!strcasecmp("orig", member.argv[0])) { - if (member.argc == 2 && !strcasecmp("reason", member.argv[1])) { + if (!strcasecmp("orig", member.subnames[0])) { + if (member.argc == 2 && !strcasecmp("reason", member.subnames[1])) { ast_copy_string(buf, ast_redirecting_reason_name(&ast_redirecting->orig_reason), len); } else { - status = party_id_read(buf, len, member.argc - 1, member.argv + 1, + status = party_id_read(buf, len, member.argc - 1, member.subnames + 1, &ast_redirecting->orig); switch (status) { case ID_FIELD_VALID: @@ -1502,8 +1502,8 @@ static int redirecting_read(struct ast_channel *chan, const char *cmd, char *dat break; } } - } else if (!strcasecmp("from", member.argv[0])) { - status = party_id_read(buf, len, member.argc - 1, member.argv + 1, + } else if (!strcasecmp("from", member.subnames[0])) { + status = party_id_read(buf, len, member.argc - 1, member.subnames + 1, &ast_redirecting->from); switch (status) { case ID_FIELD_VALID: @@ -1513,8 +1513,8 @@ static int redirecting_read(struct ast_channel *chan, const char *cmd, char *dat ast_log(LOG_ERROR, "Unknown redirecting data type '%s'.\n", data); break; } - } else if (!strcasecmp("to", member.argv[0])) { - status = party_id_read(buf, len, member.argc - 1, member.argv + 1, + } else if (!strcasecmp("to", member.subnames[0])) { + status = party_id_read(buf, len, member.argc - 1, member.subnames + 1, &ast_redirecting->to); switch (status) { case ID_FIELD_VALID: @@ -1524,7 +1524,7 @@ static int redirecting_read(struct ast_channel *chan, const char *cmd, char *dat ast_log(LOG_ERROR, "Unknown redirecting data type '%s'.\n", data); break; } - } else if (member.argc == 1 && !strncasecmp("pres", member.argv[0], 4)) { + } else if (member.argc == 1 && !strncasecmp("pres", member.subnames[0], 4)) { /* * Accept pres[entation] * This is the combined from name/number presentation. @@ -1532,13 +1532,13 @@ static int redirecting_read(struct ast_channel *chan, const char *cmd, char *dat ast_copy_string(buf, ast_named_caller_presentation( ast_party_id_presentation(&ast_redirecting->from)), len); - } else if (member.argc == 1 && !strcasecmp("reason", member.argv[0])) { + } else if (member.argc == 1 && !strcasecmp("reason", member.subnames[0])) { ast_copy_string(buf, ast_redirecting_reason_name(&ast_redirecting->reason), len); - } else if (member.argc == 1 && !strcasecmp("count", member.argv[0])) { + } else if (member.argc == 1 && !strcasecmp("count", member.subnames[0])) { snprintf(buf, len, "%d", ast_redirecting->count); - } else if (1 < member.argc && !strcasecmp("priv", member.argv[0])) { - if (!strcasecmp("orig", member.argv[1])) { - status = party_id_read(buf, len, member.argc - 2, member.argv + 2, + } else if (1 < member.argc && !strcasecmp("priv", member.subnames[0])) { + if (!strcasecmp("orig", member.subnames[1])) { + status = party_id_read(buf, len, member.argc - 2, member.subnames + 2, &ast_redirecting->priv_orig); switch (status) { case ID_FIELD_VALID: @@ -1548,8 +1548,8 @@ static int redirecting_read(struct ast_channel *chan, const char *cmd, char *dat ast_log(LOG_ERROR, "Unknown redirecting data type '%s'.\n", data); break; } - } else if (!strcasecmp("from", member.argv[1])) { - status = party_id_read(buf, len, member.argc - 2, member.argv + 2, + } else if (!strcasecmp("from", member.subnames[1])) { + status = party_id_read(buf, len, member.argc - 2, member.subnames + 2, &ast_redirecting->priv_from); switch (status) { case ID_FIELD_VALID: @@ -1559,8 +1559,8 @@ static int redirecting_read(struct ast_channel *chan, const char *cmd, char *dat ast_log(LOG_ERROR, "Unknown redirecting data type '%s'.\n", data); break; } - } else if (!strcasecmp("to", member.argv[1])) { - status = party_id_read(buf, len, member.argc - 2, member.argv + 2, + } else if (!strcasecmp("to", member.subnames[1])) { + status = party_id_read(buf, len, member.argc - 2, member.subnames + 2, &ast_redirecting->priv_to); switch (status) { case ID_FIELD_VALID: @@ -1641,8 +1641,8 @@ static int redirecting_write(struct ast_channel *chan, const char *cmd, char *da value = ast_skip_blanks(value); - if (!strcasecmp("orig", member.argv[0])) { - if (member.argc == 2 && !strcasecmp("reason", member.argv[1])) { + if (!strcasecmp("orig", member.subnames[0])) { + if (member.argc == 2 && !strcasecmp("reason", member.subnames[1])) { int reason; val = ast_strdupa(value); @@ -1668,7 +1668,7 @@ static int redirecting_write(struct ast_channel *chan, const char *cmd, char *da set_it(chan, &redirecting, NULL); } } else { - status = party_id_write(&redirecting.orig, member.argc - 1, member.argv + 1, + status = party_id_write(&redirecting.orig, member.argc - 1, member.subnames + 1, value); switch (status) { case ID_FIELD_VALID: @@ -1682,8 +1682,8 @@ static int redirecting_write(struct ast_channel *chan, const char *cmd, char *da } ast_party_redirecting_free(&redirecting); } - } else if (!strcasecmp("from", member.argv[0])) { - status = party_id_write(&redirecting.from, member.argc - 1, member.argv + 1, + } else if (!strcasecmp("from", member.subnames[0])) { + status = party_id_write(&redirecting.from, member.argc - 1, member.subnames + 1, value); switch (status) { case ID_FIELD_VALID: @@ -1696,8 +1696,8 @@ static int redirecting_write(struct ast_channel *chan, const char *cmd, char *da break; } ast_party_redirecting_free(&redirecting); - } else if (!strcasecmp("to", member.argv[0])) { - status = party_id_write(&redirecting.to, member.argc - 1, member.argv + 1, value); + } else if (!strcasecmp("to", member.subnames[0])) { + status = party_id_write(&redirecting.to, member.argc - 1, member.subnames + 1, value); switch (status) { case ID_FIELD_VALID: set_it(chan, &redirecting, NULL); @@ -1709,7 +1709,7 @@ static int redirecting_write(struct ast_channel *chan, const char *cmd, char *da break; } ast_party_redirecting_free(&redirecting); - } else if (member.argc == 1 && !strncasecmp("pres", member.argv[0], 4)) { + } else if (member.argc == 1 && !strncasecmp("pres", member.subnames[0], 4)) { int pres; val = ast_strdupa(value); @@ -1731,7 +1731,7 @@ static int redirecting_write(struct ast_channel *chan, const char *cmd, char *da redirecting.to.number.presentation = pres; set_it(chan, &redirecting, NULL); } - } else if (member.argc == 1 && !strcasecmp("reason", member.argv[0])) { + } else if (member.argc == 1 && !strcasecmp("reason", member.subnames[0])) { int reason; val = ast_strdupa(value); @@ -1756,7 +1756,7 @@ static int redirecting_write(struct ast_channel *chan, const char *cmd, char *da redirecting.reason.str = ""; set_it(chan, &redirecting, NULL); } - } else if (member.argc == 1 && !strcasecmp("count", member.argv[0])) { + } else if (member.argc == 1 && !strcasecmp("count", member.subnames[0])) { val = ast_strdupa(value); ast_trim_blanks(val); @@ -1766,9 +1766,9 @@ static int redirecting_write(struct ast_channel *chan, const char *cmd, char *da } else { ast_log(LOG_ERROR, "Unknown redirecting count '%s', value unchanged\n", val); } - } else if (1 < member.argc && !strcasecmp("priv", member.argv[0])) { - if (!strcasecmp("orig", member.argv[1])) { - status = party_id_write(&redirecting.priv_orig, member.argc - 2, member.argv + 2, + } else if (1 < member.argc && !strcasecmp("priv", member.subnames[0])) { + if (!strcasecmp("orig", member.subnames[1])) { + status = party_id_write(&redirecting.priv_orig, member.argc - 2, member.subnames + 2, value); switch (status) { case ID_FIELD_VALID: @@ -1781,8 +1781,8 @@ static int redirecting_write(struct ast_channel *chan, const char *cmd, char *da break; } ast_party_redirecting_free(&redirecting); - } else if (!strcasecmp("from", member.argv[1])) { - status = party_id_write(&redirecting.priv_from, member.argc - 2, member.argv + 2, + } else if (!strcasecmp("from", member.subnames[1])) { + status = party_id_write(&redirecting.priv_from, member.argc - 2, member.subnames + 2, value); switch (status) { case ID_FIELD_VALID: @@ -1795,8 +1795,8 @@ static int redirecting_write(struct ast_channel *chan, const char *cmd, char *da break; } ast_party_redirecting_free(&redirecting); - } else if (!strcasecmp("to", member.argv[1])) { - status = party_id_write(&redirecting.priv_to, member.argc - 2, member.argv + 2, value); + } else if (!strcasecmp("to", member.subnames[1])) { + status = party_id_write(&redirecting.priv_to, member.argc - 2, member.subnames + 2, value); switch (status) { case ID_FIELD_VALID: set_it(chan, &redirecting, NULL); diff --git a/res/res_agi.c b/res/res_agi.c index 6f8815d01f..5763a5bf97 100644 --- a/res/res_agi.c +++ b/res/res_agi.c @@ -4510,7 +4510,7 @@ static int agi_exec_full(struct ast_channel *chan, const char *data, int enhance memset(&agi, 0, sizeof(agi)); buf = ast_strdupa(data); AST_STANDARD_APP_ARGS(args, buf); - args.argv[args.argc] = NULL; + args.arg[args.argc] = NULL; #if 0 /* Answer if need be */ if (chan->_state != AST_STATE_UP) { @@ -4518,7 +4518,7 @@ static int agi_exec_full(struct ast_channel *chan, const char *data, int enhance return -1; } #endif - res = launch_script(chan, args.argv[0], args.argc, args.argv, fds, enhanced ? &efd : NULL, &pid); + res = launch_script(chan, args.arg[0], args.argc, args.arg, fds, enhanced ? &efd : NULL, &pid); /* Async AGI do not require run_agi(), so just proceed if normal AGI or Fast AGI are setup with success. */ if (res == AGI_RESULT_SUCCESS || res == AGI_RESULT_SUCCESS_FAST) { @@ -4527,7 +4527,7 @@ static int agi_exec_full(struct ast_channel *chan, const char *data, int enhance agi.ctrl = fds[0]; agi.audio = efd; agi.fast = (res == AGI_RESULT_SUCCESS_FAST) ? 1 : 0; - res = run_agi(chan, args.argv[0], &agi, pid, &status, dead, args.argc, args.argv); + res = run_agi(chan, args.arg[0], &agi, pid, &status, dead, args.argc, args.arg); /* If the fork'd process returns non-zero, set AGISTATUS to FAILURE */ if ((res == AGI_RESULT_SUCCESS || res == AGI_RESULT_SUCCESS_FAST) && status) res = AGI_RESULT_FAILURE;