X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=EdkShellPkg%2FShellHotFix.patch;h=46a95d884120d62a16a6ea87a4e2624f8467c6b3;hp=fb05c754d481d5e30e3f9a5932a1a3dc17dc0d1c;hb=80ed2093c92f61d8d13f36b75664da5672f9624e;hpb=0fe4decf87f57d4113213aa76798e3fbb077f676 diff --git a/EdkShellPkg/ShellHotFix.patch b/EdkShellPkg/ShellHotFix.patch index fb05c754d4..46a95d8841 100644 --- a/EdkShellPkg/ShellHotFix.patch +++ b/EdkShellPkg/ShellHotFix.patch @@ -163,6 +163,28 @@ Index: drivers/drivers.c ShellCloseHandleEnumerator (); LibCheckVarFreeVarList (&ChkPck); LibUnInitializeStrings (); +Index: edit/libFileBuffer.c +=================================================================== +--- edit/libFileBuffer.c (revision 30) ++++ edit/libFileBuffer.c (working copy) +@@ -735,7 +735,7 @@ + UINTN LineSize; + VOID *Buffer; + CHAR16 *UnicodeBuffer; +- CHAR8 *AsciiBuffer; ++ UINT8 *AsciiBuffer; + UINTN FileSize; + EFI_FILE_HANDLE Handle; + BOOLEAN CreateFile; +@@ -1047,7 +1047,7 @@ + // + // Unicode file + // +- if (AsciiBuffer[0] == 0xff && AsciiBuffer[1] == 0xfe) { ++ if ((FileSize >= 2) && (*((UINT16 *) Buffer) == EFI_UNICODE_BYTE_ORDER_MARK)) { + // + // Unicode file's size should be even + // Index: Library/EfiShellLib.h =================================================================== --- Library/EfiShellLib.h (revision 30) @@ -315,6 +337,43 @@ Index: Library/Misc.c + + + +Index: shellenv/batch.c +=================================================================== +--- shellenv/batch.c (revision 30) ++++ shellenv/batch.c (working copy) +@@ -2074,17 +2074,17 @@ + --*/ + { + // +- // UNICODE byte-order-mark is two bytes ++ // UNICODE byte-order-mark is 16 bits + // +- CHAR8 Buffer8[2]; ++ UINT16 Uint16; + UINTN BufSize; + EFI_STATUS Status; + + // + // Read the first two bytes to check for byte order mark + // +- BufSize = sizeof (Buffer8); +- Status = File->Read (File, &BufSize, Buffer8); ++ BufSize = sizeof (Uint16); ++ Status = File->Read (File, &BufSize, &Uint16); + if (EFI_ERROR (Status)) { + return Status; + } +@@ -2098,9 +2098,8 @@ + // otherwise assume it is ASCII. UNICODE byte order mark on + // IA little endian is first byte 0xff and second byte 0xfe + // +- if ((Buffer8[0] | (Buffer8[1] << 8)) == EFI_UNICODE_BYTE_ORDER_MARK) { ++ if ((BufSize == 2) && (Uint16 == EFI_UNICODE_BYTE_ORDER_MARK)) { + *IsAscii = FALSE; +- + } else { + *IsAscii = TRUE; + } Index: SmbiosView/PrintInfo.c =================================================================== --- SmbiosView/PrintInfo.c (revision 30)