diff --git a/res/stasis/control.c b/res/stasis/control.c index 05f2fd318a6d19bd06ec6652239a15b27a8f4bbe..4e2490d8b739816479a52ee4c08166e959f90866 100644 --- a/res/stasis/control.c +++ b/res/stasis/control.c @@ -525,16 +525,21 @@ int stasis_app_control_move(struct stasis_app_control *control, const char *app_ struct stasis_app_control_move_data *move_data; size_t size; - size = sizeof(*move_data) + strlen(app_name) + strlen(app_args) + 2; + size = sizeof(*move_data) + strlen(app_name) + 1; + if (app_args) { + /* Application arguments are optional */ + size += strlen(app_args) + 1; + } + if (!(move_data = ast_calloc(1, size))) { return -1; } move_data->app_name = (char *)move_data + sizeof(*move_data); - move_data->app_args = move_data->app_name + strlen(app_name) + 1; - strcpy(move_data->app_name, app_name); /* Safe */ + if (app_args) { + move_data->app_args = move_data->app_name + strlen(app_name) + 1; strcpy(move_data->app_args, app_args); /* Safe */ } else { move_data->app_args = NULL;