Hi All, I have update the patch for the comments, Please help review the patch.
-----Original Message----- From: Jiang, Xiaolu <xiaolu.ji...@intel.com> Sent: Monday, November 8, 2021 4:22 PM To: devel@edk2.groups.io Cc: Jiang, Xiaolu <xiaolu.ji...@intel.com>; Feng, Bob C <bob.c.f...@intel.com>; Liming Gao <gaolim...@byosoft.com.cn>; Chen, Christine <yuwei.c...@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.f...@intel.com> Cc: Liming Gao <gaolim...@byosoft.com.cn> Cc: Yuwei Chen <yuwei.c...@intel.com> Signed-off-by: Xiaolu Jiang <xiaolu.ji...@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/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-