]> git.ozlabs.org Git - petitboot/blobdiff - ui/ncurses/nc-cui.c
ui/ncurses: in lockdown ensure system reboot in ncurses menu exit
[petitboot] / ui / ncurses / nc-cui.c
index 3abeac3e2ff29d41a2ecfd34f552339d5637523e..d3e00aa03a0e6199f030b46209fe45194843092f 100644 (file)
@@ -219,6 +219,17 @@ void cui_on_exit(struct pmenu *menu)
        talloc_free(sh_cmd);
 }
 
+/**
+ * cui_abort_on_exit - Force an exit of the main loop on menu exit.
+ *                     This is mainly for lockdown situations where
+ *                     the exit then triggers an expected reboot.
+ */
+void cui_abort_on_exit(struct pmenu *menu)
+{
+       struct cui *cui = cui_from_pmenu(menu);
+       cui->abort = 1;
+}
+
 /**
  * cui_run_cmd - A generic cb to run the supplied command.
  */
@@ -1298,7 +1309,7 @@ static struct pmenu *main_menu_init(struct cui *cui)
        int result;
        bool lockdown = lockdown_active();
 
-       m = pmenu_init(cui, 9, cui_on_exit);
+       m = pmenu_init(cui, 9, lockdown ? cui_abort_on_exit : cui_on_exit);
        if (!m) {
                pb_log_fn("failed\n");
                return NULL;