diff options
author | Yu-Ping Wu <yupingso@chromium.org> | 2020-09-04 19:28:47 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-09-14 18:30:58 +0000 |
commit | 3839d6bcafb4b389766bba2e9fae36384b6ddeb4 (patch) | |
tree | 1ca3b62ed0d151b99eb8a6e87d20dede126ce74b | |
parent | e72705349cfaf039307bc47b3dd4e225204aba43 (diff) | |
download | vboot-3839d6bcafb4b389766bba2e9fae36384b6ddeb4.tar.gz |
vboot/ui: Disallow Ctrl-S when GBB forces dev mode
When GBB forces developer mode (VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON),
disallow Ctrl-S shortcut in developer screens. Beep and show an error
message when Ctrl-S is pressed.
BRANCH=zork
BUG=b:146399181, b:164975737
TEST=export CC=x86_64-pc-linux-gnu-clang; make runtests
TEST=emerge-nami depthcharge
Cq-Depend: chromium:2397556
Change-Id: I62d18575290498b7ae829c2b3a2ff8dda6679636
Signed-off-by: Yu-Ping Wu <yupingso@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2390593
Reviewed-by: Hsuan Ting Chen <roccochen@chromium.org>
(cherry picked from commit 750da40fb8a9b6692d2ce6df39e527f5120c128c)
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2407538
Tested-by: Hsuan Ting Chen <roccochen@chromium.org>
Commit-Queue: Furquan Shaikh <furquan@chromium.org>
-rw-r--r-- | firmware/2lib/2ui_screens.c | 16 | ||||
-rw-r--r-- | firmware/2lib/include/2api.h | 2 |
2 files changed, 18 insertions, 0 deletions
diff --git a/firmware/2lib/2ui_screens.c b/firmware/2lib/2ui_screens.c index e0a6d599..a962eb21 100644 --- a/firmware/2lib/2ui_screens.c +++ b/firmware/2lib/2ui_screens.c @@ -796,6 +796,21 @@ static const struct vb2_screen_info developer_mode_screen = { /******************************************************************************/ /* VB2_SCREEN_DEVELOPER_TO_NORM */ +#define DEVELOPER_TO_NORM_ITEM_CONFIRM 1 + +static vb2_error_t developer_to_norm_init(struct vb2_ui_context *ui) +{ + /* Don't allow to-norm if GBB forces dev mode */ + if (vb2_get_gbb(ui->ctx)->flags & VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON) { + VB2_DEBUG("ERROR: to-norm not allowed\n"); + ui->error_beep = 1; + ui->error_code = VB2_UI_ERROR_TO_NORM_NOT_ALLOWED; + return vb2_ui_screen_back(ui); + } + ui->state->selected_item = DEVELOPER_TO_NORM_ITEM_CONFIRM; + return VB2_REQUEST_UI_CONTINUE; +} + vb2_error_t developer_to_norm_action(struct vb2_ui_context *ui) { if (vb2_get_gbb(ui->ctx)->flags & VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON) { @@ -824,6 +839,7 @@ static const struct vb2_menu_item developer_to_norm_items[] = { static const struct vb2_screen_info developer_to_norm_screen = { .id = VB2_SCREEN_DEVELOPER_TO_NORM, .name = "Transition to normal mode", + .init = developer_to_norm_init, .menu = MENU_ITEMS(developer_to_norm_items), }; diff --git a/firmware/2lib/include/2api.h b/firmware/2lib/include/2api.h index a6c76764..93ff1e33 100644 --- a/firmware/2lib/include/2api.h +++ b/firmware/2lib/include/2api.h @@ -1325,6 +1325,8 @@ enum vb2_ui_error { VB2_UI_ERROR_NONE = 0, /* Dev mode already enabled */ VB2_UI_ERROR_DEV_MODE_ALREADY_ENABLED, + /* To-norm not allowed */ + VB2_UI_ERROR_TO_NORM_NOT_ALLOWED, /* Debug info screen initialization failed */ VB2_UI_ERROR_DEBUG_LOG, /* Firmware log screen initialization failed */ |