Skip to content

Commit 8ecddd5

Browse files
author
Rob Sanders
committed
Fix buildmode to check when adding 'new' commands, don't need to verify cli valid
Note - check of cli!=NULL is ok, but with check in comples if statement it caused status code analysis tool to complain
1 parent 09059a9 commit 8ecddd5

1 file changed

Lines changed: 26 additions & 5 deletions

File tree

libcli.c

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2362,11 +2362,12 @@ void cli_int_free_buildmode(struct cli_def *cli) {
23622362
int cli_int_enter_buildmode(struct cli_def *cli, struct cli_pipeline_stage *stage, char *mode_text) {
23632363
struct cli_optarg *optarg;
23642364
struct cli_command *c;
2365+
struct cli_optarg *o;
23652366
struct cli_buildmode *buildmode;
23662367
struct cli_optarg *buildmodeOptarg = NULL;
23672368
int rc = CLI_BUILDMODE_START;
23682369

2369-
if (!cli || !(buildmode = (struct cli_buildmode *)calloc(1, sizeof(struct cli_buildmode)))) {
2370+
if (!(buildmode = (struct cli_buildmode *)calloc(1, sizeof(struct cli_buildmode)))) {
23702371
cli_error(cli, "Unable to build buildmode mode for command %s", stage->command->command);
23712372
rc = CLI_BUILDMODE_ERROR;
23722373
goto out;
@@ -2434,16 +2435,36 @@ int cli_int_enter_buildmode(struct cli_def *cli, struct cli_pipeline_stage *stag
24342435
cli->buildmode->cname = strdup(cli_command_name(cli, stage->command));
24352436
// Now add the four 'always there' commands to cancel current mode and to execute the command, show settings, and
24362437
// unset
2437-
cli_int_register_buildmode_command(cli, NULL, "cancel", cli_int_buildmode_cancel_cback, 0, PRIVILEGE_UNPRIVILEGED,
2438+
c = cli_int_register_buildmode_command(cli, NULL, "cancel", cli_int_buildmode_cancel_cback, 0, PRIVILEGE_UNPRIVILEGED,
24382439
cli->mode, "Cancel command");
2439-
cli_int_register_buildmode_command(cli, NULL, "execute", cli_int_buildmode_execute_cback, 0, PRIVILEGE_UNPRIVILEGED,
2440+
if (!c) {
2441+
rc = CLI_BUILDMODE_ERROR;
2442+
goto out;
2443+
}
2444+
c = cli_int_register_buildmode_command(cli, NULL, "execute", cli_int_buildmode_execute_cback, 0, PRIVILEGE_UNPRIVILEGED,
24402445
cli->mode, "Execute command");
2441-
cli_int_register_buildmode_command(cli, NULL, "show", cli_int_buildmode_show_cback, 0, PRIVILEGE_UNPRIVILEGED,
2446+
if (!c) {
2447+
rc = CLI_BUILDMODE_ERROR;
2448+
goto out;
2449+
}
2450+
c = cli_int_register_buildmode_command(cli, NULL, "show", cli_int_buildmode_show_cback, 0, PRIVILEGE_UNPRIVILEGED,
24422451
cli->mode, "Show current settings");
2452+
if (!c) {
2453+
rc = CLI_BUILDMODE_ERROR;
2454+
goto out;
2455+
}
24432456
c = cli_int_register_buildmode_command(cli, NULL, "unset", cli_int_buildmode_unset_cback, 0, PRIVILEGE_UNPRIVILEGED,
24442457
cli->mode, "Unset a setting");
2445-
cli_register_optarg(c, "setting", CLI_CMD_ARGUMENT | CLI_CMD_DO_NOT_RECORD, PRIVILEGE_UNPRIVILEGED, cli->mode,
2458+
if (!c) {
2459+
rc = CLI_BUILDMODE_ERROR;
2460+
goto out;
2461+
}
2462+
o = cli_register_optarg(c, "setting", CLI_CMD_ARGUMENT | CLI_CMD_DO_NOT_RECORD, PRIVILEGE_UNPRIVILEGED, cli->mode,
24462463
"setting to clear", cli_int_buildmode_unset_completor, cli_int_buildmode_unset_validator, NULL);
2464+
if (!o) {
2465+
rc = CLI_BUILDMODE_ERROR;
2466+
goto out;
2467+
}
24472468

24482469
out:
24492470
// And lastly set the initial help menu for the unset command

0 commit comments

Comments
 (0)