menu: Guard tree_prefix_len against unsigned underflow with wide entries
diff --git a/common/menu.c b/common/menu.c
index 2a066fe6..1e17fe2e 100644
--- a/common/menu.c
+++ b/common/menu.c
@@ -1021,7 +1021,9 @@ refresh:
&selected_menu_entry, &max_tree_len, &max_tree_height);
if (max_entries != 0) {
- size_t tree_prefix_len = (terms[0]->cols / 2 - DIV_ROUNDUP(max_tree_len, 2)) - 2;
+ size_t half_cols = terms[0]->cols / 2;
+ size_t half_tree = DIV_ROUNDUP(max_tree_len, 2);
+ size_t tree_prefix_len = (half_cols > half_tree + 2) ? (half_cols - half_tree - 2) : 0;
char *tree_prefix = ext_mem_alloc(tree_prefix_len + 1);
memset(tree_prefix, ' ', tree_prefix_len);
