public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
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


             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