@@ -2362,11 +2362,12 @@ void cli_int_free_buildmode(struct cli_def *cli) {
23622362int 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
24482469out :
24492470 // And lastly set the initial help menu for the unset command
0 commit comments