FW: [edk2-devel][PATCH] BaseTools: Increase the DevicePath length for support more PCD value.

Jiang, Xiaolu xiaolu.jiang at intel.com
Wed Nov 10 02:59:32 UTC 2021


Hi  All,

I have update the patch for the comments, Please help review the patch.

-----Original Message-----
From: Jiang, Xiaolu <xiaolu.jiang at intel.com> 
Sent: Monday, November 8, 2021 4:22 PM
To: devel at edk2.groups.io
Cc: Jiang, Xiaolu <xiaolu.jiang at intel.com>; Feng, Bob C <bob.c.feng at intel.com>; Liming Gao <gaoliming at byosoft.com.cn>; Chen, Christine <yuwei.chen at intel.com>
Subject: [edk2-devel][PATCH] BaseTools: Increase the DevicePath length for support more PCD value.

Currently the PCD Value only support 13 Guid,When use more 13 pcd will cause the build tool fail, Need calculate the required memory,then allocate it.

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3718

Cc: Bob Feng <bob.c.feng at intel.com>
Cc: Liming Gao <gaoliming at byosoft.com.cn>
Cc: Yuwei Chen <yuwei.chen at intel.com>

Signed-off-by: Xiaolu Jiang <xiaolu.jiang at intel.com>
---
 BaseTools/Source/C/DevicePath/DevicePath.c | 36 +++++++++++++++++++++-
 1 file changed, 35 insertions(+), 1 deletion(-)

diff --git a/BaseTools/Source/C/DevicePath/DevicePath.c b/BaseTools/Source/C/DevicePath/DevicePath.c
index c4d224ed61..8a0f5f4e2a 100644
--- a/BaseTools/Source/C/DevicePath/DevicePath.c
+++ b/BaseTools/Source/C/DevicePath/DevicePath.c
@@ -144,6 +144,40 @@ Returns:
   *UniString = '\0'; } ++/**+  Returns the length of a Null-terminated ASCII string.++  This function returns the number of ASCII characters in the Null-terminated+  ASCII string specified by String.++  If Length > 0 and Destination is NULL, then ASSERT().+  If Length > 0 and Source is NULL, then ASSERT().+  If PcdMaximumAsciiStringLength is not zero and String contains more than+  PcdMaximumAsciiStringLength ASCII characters, not including the Null-terminator,+  then ASSERT().++  @param  String  A pointer to a Null-terminated ASCII string.++  @return The length of String.++**/+UINTN+EFIAPI+AsciiStrLen (+  IN      CONST CHAR8               *String+  )+{+  UINTN                             Length;++  ASSERT (String != NULL);++  for (Length = 0; *String != '\0'; String++, Length++) {++  }+  return Length;+}+ int main(int argc, CHAR8 *argv[]) {   CHAR8 * Str;@@ -170,7 +204,7 @@ int main(int argc, CHAR8 *argv[])
     fprintf(stderr, "Invalid option value, Device Path can't be NULL");     return STATUS_ERROR;   }-  Str16 = (CHAR16 *)malloc(1024);+  Str16 = (CHAR16 *)malloc((AsciiStrLen (Str) + 1) * sizeof (CHAR16));   if (Str16 == NULL) {     fprintf(stderr, "Resource, memory cannot be allocated");     return STATUS_ERROR;-- 
2.30.2.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#83538): https://edk2.groups.io/g/devel/message/83538
Mute This Topic: https://groups.io/mt/86949833/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-






More information about the edk2-devel-archive mailing list