From: "Gao, Zhichao" <zhichao.gao@intel.com>
To: devel@edk2.groups.io
Cc: Jian J Wang <jian.j.wang@intel.com>,
Liming Gao <gaoliming@byosoft.com.cn>, Ray Ni <ray.ni@intel.com>
Subject: [PATCH] MdeModulePkg/UefiBootManagerLib: Limit the boot description to 72 chars
Date: Tue, 7 Sep 2021 14:12:52 +0800 [thread overview]
Message-ID: <20210907061252.2069-1-zhichao.gao@intel.com> (raw)
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3590
The minimum mode is 80*25 which means echo line can have 80 charactors
and max 25 line on the screen. And the BootManagerMeu see each boot
option as one line. The BootManagerMenuApp would have 2 charactors for
draw box and 6 charactors for space. So it is better to limit the boot
description within 72 charactors.
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Ray Ni <ray.ni@intel.com>
Signed-off-by: Zhichao Gao <zhichao.gao@intel.com>
---
.../Library/UefiBootManagerLib/BmBootDescription.c | 24 ++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c b/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c
index aa891feb17..7260b2a203 100644
--- a/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c
+++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c
@@ -1,7 +1,7 @@
/** @file
Library functions which relate with boot option description.
-Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2011 - 2021, Intel Corporation. All rights reserved.<BR>
(C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -14,6 +14,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
#define PRODUCT_IDENTIFICATION_OFFSET 11
#define PRODUCT_IDENTIFICATION_LENGTH 16
+#define MAX_BOOT_DESCRIPTION_LEGNTH 72
+
CONST UINT16 mBmUsbLangId = 0x0409; // English
CHAR16 mBmUefiPrefix[] = L"UEFI ";
@@ -773,6 +775,7 @@ BmGetBootDescription (
CHAR16 *DefaultDescription;
CHAR16 *Temp;
UINTN Index;
+ UINTN DescriptionLen;
//
// Firstly get the default boot description
@@ -785,10 +788,23 @@ BmGetBootDescription (
// Avoid description confusion between UEFI & Legacy boot option by adding "UEFI " prefix
// ONLY for core provided boot description handler.
//
- Temp = AllocatePool (StrSize (DefaultDescription) + sizeof (mBmUefiPrefix));
+ if (StrLen (DefaultDescription) + StrLen (mBmUefiPrefix) > MAX_BOOT_DESCRIPTION_LEGNTH) {
+ //
+ // Limit the MAX length of boot description to 72 charactors.
+ // Replace the last 3 charactors to L"...".
+ //
+ DescriptionLen = MAX_BOOT_DESCRIPTION_LEGNTH + 1;
+ DefaultDescription[MAX_BOOT_DESCRIPTION_LEGNTH - 5 - 3] = L'.';
+ DefaultDescription[MAX_BOOT_DESCRIPTION_LEGNTH - 5 - 2] = L'.';
+ DefaultDescription[MAX_BOOT_DESCRIPTION_LEGNTH - 5 - 1] = L'.';
+ DefaultDescription[MAX_BOOT_DESCRIPTION_LEGNTH - 5] = L'\0';
+ } else {
+ DescriptionLen = (StrSize (DefaultDescription) + sizeof (mBmUefiPrefix)) / sizeof (CHAR16);
+ }
+ Temp = AllocatePool (DescriptionLen * sizeof (CHAR16));
ASSERT (Temp != NULL);
- StrCpyS (Temp, (StrSize (DefaultDescription) + sizeof (mBmUefiPrefix)) / sizeof (CHAR16), mBmUefiPrefix);
- StrCatS (Temp, (StrSize (DefaultDescription) + sizeof (mBmUefiPrefix)) / sizeof (CHAR16), DefaultDescription);
+ StrCpyS (Temp, DescriptionLen, mBmUefiPrefix);
+ StrCatS (Temp, DescriptionLen, DefaultDescription);
FreePool (DefaultDescription);
DefaultDescription = Temp;
break;
--
2.16.2.windows.1
next reply other threads:[~2021-09-07 6:12 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-07 6:12 Gao, Zhichao [this message]
2021-09-07 7:53 ` [PATCH] MdeModulePkg/UefiBootManagerLib: Limit the boot description to 72 chars Ni, Ray
2021-09-08 2:28 ` Gao, Zhichao
2021-09-08 17:01 ` Ni, Ray
2021-09-09 6:12 ` Gao, Zhichao
[not found] ` <16A312A11F4E487B.29348@groups.io>
2021-09-09 8:13 ` [edk2-devel] " Gao, Zhichao
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210907061252.2069-1-zhichao.gao@intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox