From 666bd54416a0cd9f47cdffa9b32439be057bd50d Mon Sep 17 00:00:00 2001 From: Shelley Chen Date: Tue, 10 Jan 2017 16:36:06 -0800 Subject: firmware: Prevent wraparound when scrolling through menus BUG=chrome-os-partner:61275 BRANCH=None TEST=reboot and scroll to ends of menus to make sure that they don't wraparound. Change-Id: I9ba83b23939140d23fe54858b9a10f873091ff72 Signed-off-by: Shelley Chen Reviewed-on: https://chromium-review.googlesource.com/426410 Reviewed-by: Randall Spangler --- firmware/lib/vboot_ui_menu.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/firmware/lib/vboot_ui_menu.c b/firmware/lib/vboot_ui_menu.c index b5e786a7..3a45afac 100644 --- a/firmware/lib/vboot_ui_menu.c +++ b/firmware/lib/vboot_ui_menu.c @@ -657,15 +657,18 @@ VbError_t vb2_developer_menu(struct vb2_context *ctx, VbCommonParams *cparams) case VB_KEY_UP: vb2_get_current_menu_size(current_menu, NULL, &menu_size); - current_menu_idx = (current_menu_idx+menu_size-1) % - menu_size; + // do not wrap selection index + if (current_menu_idx > 0) + current_menu_idx--; vb2_print_current_menu(); break; case VB_BUTTON_VOL_DOWN: case VB_KEY_DOWN: vb2_get_current_menu_size(current_menu, NULL, &menu_size); - current_menu_idx = (current_menu_idx+1) % menu_size; + // do no wrap selection index + if (current_menu_idx < menu_size-1) + current_menu_idx++; vb2_print_current_menu(); break; case VB_KEY_RIGHT: @@ -907,14 +910,16 @@ VbError_t vb2_recovery_menu(struct vb2_context *ctx, VbCommonParams *cparams) case VB_KEY_UP: VB2_DEBUG("VbBootRecoveryMenu() - pressed key VB_KEY_UP\n"); vb2_get_current_menu_size(current_menu, NULL, &menu_size); - current_menu_idx = (current_menu_idx+menu_size-1) % menu_size; + if (current_menu_idx > 0) + current_menu_idx--; vb2_print_current_menu(); break; case VB_BUTTON_VOL_DOWN: case VB_KEY_DOWN: VB2_DEBUG("VbBootRecoveryMenu() - pressed key VB_KEY_DOWN\n"); vb2_get_current_menu_size(current_menu, NULL, &menu_size); - current_menu_idx = (current_menu_idx+1) % menu_size; + if (current_menu_idx < menu_size-1) + current_menu_idx++; vb2_print_current_menu(); break; case VB_KEY_RIGHT: -- cgit v1.2.1