app_externalivr: Prevent out-of-bounds read during argument processing.

Resolves: #1422
This commit is contained in:
Sean Bright
2025-09-17 14:27:49 -04:00
committed by github-actions[bot]
parent 3a7d622c63
commit 7b96fff129

View File

@@ -424,8 +424,11 @@ static int app_exec(struct ast_channel *chan, const char *data)
AST_APP_ARG(application); AST_APP_ARG(application);
AST_APP_ARG(options); AST_APP_ARG(options);
); );
#define MAX_EIVR_APPLICATION_ARGS 32
AST_DECLARE_APP_ARGS(application_args, AST_DECLARE_APP_ARGS(application_args,
AST_APP_ARG(cmd)[32]; AST_APP_ARG(cmd)[MAX_EIVR_APPLICATION_ARGS];
); );
u->abort_current_sound = 0; u->abort_current_sound = 0;
@@ -458,7 +461,7 @@ static int app_exec(struct ast_channel *chan, const char *data)
/* Put the application + the arguments in a , delimited list */ /* Put the application + the arguments in a , delimited list */
ast_str_reset(comma_delim_args); ast_str_reset(comma_delim_args);
for (j = 0; application_args.cmd[j] != NULL; j++) { for (j = 0; j < MAX_EIVR_APPLICATION_ARGS && application_args.cmd[j]; j++) {
ast_str_append(&comma_delim_args, 0, "%s%s", j == 0 ? "" : ",", application_args.cmd[j]); ast_str_append(&comma_delim_args, 0, "%s%s", j == 0 ? "" : ",", application_args.cmd[j]);
} }