summaryrefslogtreecommitdiff
path: root/EdkShellPkg/ShellHotFix.patch
diff options
context:
space:
mode:
Diffstat (limited to 'EdkShellPkg/ShellHotFix.patch')
-rw-r--r--EdkShellPkg/ShellHotFix.patch711
1 files changed, 0 insertions, 711 deletions
diff --git a/EdkShellPkg/ShellHotFix.patch b/EdkShellPkg/ShellHotFix.patch
deleted file mode 100644
index 23ca26c3df..0000000000
--- a/EdkShellPkg/ShellHotFix.patch
+++ /dev/null
@@ -1,711 +0,0 @@
-Index: drivers/drivers.c
-===================================================================
---- drivers/drivers.c (revision 30)
-+++ drivers/drivers.c (working copy)
-@@ -130,6 +130,7 @@
- UINTN StringIndex;
- UINTN Index;
- CHAR8 *Language;
-+ CHAR8 *PlatformLanguage;
- UINTN DriverImageHandleCount;
- EFI_HANDLE *DriverImageHandleBuffer;
- UINTN HandleIndex;
-@@ -152,6 +153,7 @@
- SHELL_VAR_CHECK_PACKAGE ChkPck;
-
- Language = NULL;
-+ PlatformLanguage = NULL;
- DriverImageHandleCount = 0;
- DriverImageHandleBuffer = NULL;
- IsHelp = FALSE;
-@@ -241,7 +243,7 @@
- goto Done;
- }
-
-- Language = LibGetVariableLang ();
-+ Language = LibGetVariable (L"Lang", &gEfiGlobalVariableGuid);
- if (Language == NULL) {
- Language = (CHAR8 *)AllocateZeroPool(strlena(LanguageCodeEnglish) + 1);
- if (Language == NULL) {
-@@ -250,6 +252,15 @@
- strcpya(Language, LanguageCodeEnglish);
- }
-
-+ PlatformLanguage = LibGetVariable (L"PlatformLang", &gEfiGlobalVariableGuid);
-+ if (PlatformLanguage == NULL) {
-+ PlatformLanguage = (CHAR8 *)AllocateZeroPool(strlena(PlatformLanguageCodeEnglish) + 1);
-+ if (PlatformLanguage == NULL) {
-+ return EFI_OUT_OF_RESOURCES;
-+ }
-+ strcpya(PlatformLanguage, PlatformLanguageCodeEnglish);
-+ }
-+
- Item = LibCheckVarGetFlag (&ChkPck, L"-l");
- if (Item) {
- if (Language != NULL) {
-@@ -314,14 +325,6 @@
- EFI_OPEN_PROTOCOL_GET_PROTOCOL
- );
-
-- ComponentName = NULL;
-- ComponentName2 = NULL;
-- Status = LibGetComponentNameProtocol (
-- DriverImageHandleBuffer[Index],
-- &ComponentName,
-- &ComponentName2
-- );
--
- DiagnosticsStatus = BS->OpenProtocol (
- DriverImageHandleBuffer[Index],
- &gEfiDriverDiagnostics2ProtocolGuid,
-@@ -418,37 +421,73 @@
- } else {
- PrintToken (STRING_TOKEN (STR_SHELLENV_PROTID_ONE_VAR_D), HiiHandle, NumberOfChildren);
- }
--
-- Status = EFI_SUCCESS;
-+
- DriverName = L"<UNKNOWN>";
-- SupportedLanguage = NULL;
-- if (ComponentName != NULL) {
-- if (ComponentName->GetDriverName != NULL) {
-- SupportedLanguage = LibConvertSupportedLanguage (ComponentName->SupportedLanguages, Language);
-+ Status = BS->OpenProtocol (
-+ DriverImageHandleBuffer[Index],
-+ &gEfiComponentName2ProtocolGuid,
-+ (VOID **) &ComponentName2,
-+ NULL,
-+ NULL,
-+ EFI_OPEN_PROTOCOL_GET_PROTOCOL
-+ );
-+ if (!EFI_ERROR (Status)) {
-+ //
-+ // Driver has Component Name 2 Protocol is available, we get the
-+ // driver name var RFC 3066 language code
-+ //
-+ Status = ComponentName2->GetDriverName (
-+ ComponentName2,
-+ PlatformLanguage,
-+ &DriverName
-+ );
-+ if (EFI_ERROR (Status)) {
-+ //
-+ // Current RFC3066 language code fails, we then extract the supported
-+ // language from Component Name 2 protocol interface.
-+ //
-+ SupportedLanguage = ExtractSupportedLanguage(ComponentName2->SupportedLanguages, Language);
-+ if (SupportedLanguage != NULL) {
-+ Status = ComponentName2->GetDriverName (
-+ ComponentName2,
-+ SupportedLanguage,
-+ &DriverName
-+ );
-+ FreePool(SupportedLanguage);
-+ }
-+ }
-+ }
-+ if (EFI_ERROR (Status)) {
-+ //
-+ // In case Component Name 2 protocol is not available or some error occurs
-+ // when getting driver name from Component Name 2 protocol, we get driver
-+ // name from Component Name protocol.
-+ //
-+ Status = BS->OpenProtocol (
-+ DriverImageHandleBuffer[Index],
-+ &gEfiComponentNameProtocolGuid,
-+ (VOID **) &ComponentName,
-+ NULL,
-+ NULL,
-+ EFI_OPEN_PROTOCOL_GET_PROTOCOL
-+ );
-+ if (!EFI_ERROR (Status)) {
- Status = ComponentName->GetDriverName (
- ComponentName,
-- SupportedLanguage,
-+ Language,
- &DriverName
- );
- }
-- } else if (ComponentName2 != NULL) {
-- if (ComponentName2->GetDriverName != NULL) {
-- SupportedLanguage = LibConvertSupportedLanguage (ComponentName2->SupportedLanguages, Language);
-- Status = ComponentName2->GetDriverName (
-- ComponentName2,
-- SupportedLanguage,
-- &DriverName
-- );
-- }
- }
-- if (SupportedLanguage != NULL) {
-- FreePool (SupportedLanguage);
-- }
--
- if (EFI_ERROR (Status)) {
-+ //
-+ // Fails to get driver name from either Component Name 2 & Component Name
-+ // Protocol, we show "<UNKNOWN>" string as driver name.
-+ //
- DriverName = L"<UNKNOWN>";
- }
-
-+
- for (StringIndex = 0; StringIndex < StrLen (DriverName) && StringIndex < 35; StringIndex++) {
- FormattedDriverName[StringIndex] = DriverName[StringIndex];
- }
-@@ -491,6 +530,10 @@
- FreePool (Language);
- }
-
-+ if (PlatformLanguage != NULL) {
-+ FreePool (PlatformLanguage);
-+ }
-+
- ShellCloseHandleEnumerator ();
- LibCheckVarFreeVarList (&ChkPck);
- LibUnInitializeStrings ();
-Index: edit/libEditor.c
-===================================================================
---- edit/libEditor.c (revision 30)
-+++ edit/libEditor.c (working copy)
-@@ -88,8 +88,6 @@
- )
- {
- EFI_STATUS Status;
-- EFI_HANDLE *HandleBuffer;
-- UINTN HandleCount;
-
- //
- // basic initialization
-@@ -117,38 +115,22 @@
- );
-
- //
-- // Find mouse
-+ // Find mouse in System Table ConsoleInHandle
- //
-- HandleBuffer = NULL;
-- Status = LibLocateHandle (
-- ByProtocol,
-- &gEfiPrimaryConsoleInDeviceGuid,
-- NULL,
-- &HandleCount,
-- &HandleBuffer
-- );
-+ Status = BS->HandleProtocol (
-+ In,
-+ &gEfiSimplePointerProtocolGuid,
-+ &MainEditor.MouseInterface
-+ );
-
-- if (!EFI_ERROR (Status)) {
-- if (HandleCount > 0) {
-- Status = BS->HandleProtocol (
-- HandleBuffer[0],
-- &gEfiSimplePointerProtocolGuid,
-- &MainEditor.MouseInterface
-- );
--
-- if (EFI_ERROR (Status)) {
-- MainEditor.MouseInterface = NULL;
-- } else {
-- MainEditor.MouseAccumulatorX = 0;
-- MainEditor.MouseAccumulatorY = 0;
-- MainEditor.MouseSupported = TRUE;
-- }
-- }
-+ if (EFI_ERROR (Status)) {
-+ MainEditor.MouseInterface = NULL;
-+ } else {
-+ MainEditor.MouseAccumulatorX = 0;
-+ MainEditor.MouseAccumulatorY = 0;
-+ MainEditor.MouseSupported = TRUE;
- }
-
-- if (HandleBuffer) {
-- FreePool (HandleBuffer);
-- }
- //
- // below will call the five components' init function
- //
-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: hexedit/libEditor.c
-===================================================================
---- hexedit/libEditor.c (revision 30)
-+++ hexedit/libEditor.c (working copy)
-@@ -100,8 +100,6 @@
- --*/
- {
- EFI_STATUS Status;
-- EFI_HANDLE *HandleBuffer;
-- UINTN HandleCount;
-
- //
- // basic initialization
-@@ -129,36 +127,19 @@
- &(HMainEditor.ScreenSize.Row)
- );
-
-- HandleBuffer = NULL;
-- Status = LibLocateHandle (
-- ByProtocol,
-- &gEfiPrimaryConsoleInDeviceGuid,
-- NULL,
-- &HandleCount,
-- &HandleBuffer
-- );
--
-- if (!EFI_ERROR (Status)) {
--
-- if (HandleCount > 0) {
-- Status = BS->HandleProtocol (
-- HandleBuffer[0],
-- &gEfiSimplePointerProtocolGuid,
-- &HMainEditor.MouseInterface
-- );
-- if (EFI_ERROR (Status)) {
-- HMainEditor.MouseInterface = NULL;
-- } else {
-- HMainEditor.MouseAccumulatorX = 0;
-- HMainEditor.MouseAccumulatorY = 0;
-- HMainEditor.MouseSupported = TRUE;
-- }
-- }
-+ Status = BS->HandleProtocol (
-+ In,
-+ &gEfiSimplePointerProtocolGuid,
-+ &HMainEditor.MouseInterface
-+ );
-+ if (EFI_ERROR (Status)) {
-+ HMainEditor.MouseInterface = NULL;
-+ } else {
-+ HMainEditor.MouseAccumulatorX = 0;
-+ HMainEditor.MouseAccumulatorY = 0;
-+ HMainEditor.MouseSupported = TRUE;
- }
-
-- if (HandleBuffer != NULL) {
-- FreePool (HandleBuffer);
-- }
- //
- // below will call the five components' init function
- //
-Index: Library/EfiShellLib.h
-===================================================================
---- Library/EfiShellLib.h (revision 30)
-+++ Library/EfiShellLib.h (working copy)
-@@ -174,22 +174,23 @@
- //
- // Environment variable name constants
- //
--#define VarLanguageCodes L"LangCodes"
--#define VarLanguage L"Lang"
--#define VarTimeout L"Timeout"
--#define VarConsoleIn L"ConIn"
--#define VarConsoleOut L"ConOut"
--#define VarErrorOut L"ErrOut"
--#define VarBootOption L"Boot%04x"
--#define VarBootOrder L"BootOrder"
--#define VarBootNext L"BootNext"
--#define VarBootCurrent L"BootCurrent"
--#define VarDriverOption L"Driver%04x"
--#define VarDriverOrder L"DriverOrder"
--#define VarConsoleInpDev L"ConInDev"
--#define VarConsoleOutDev L"ConOutDev"
--#define VarErrorOutDev L"ErrOutDev"
--#define LanguageCodeEnglish "eng"
-+#define VarLanguageCodes L"LangCodes"
-+#define VarLanguage L"Lang"
-+#define VarTimeout L"Timeout"
-+#define VarConsoleIn L"ConIn"
-+#define VarConsoleOut L"ConOut"
-+#define VarErrorOut L"ErrOut"
-+#define VarBootOption L"Boot%04x"
-+#define VarBootOrder L"BootOrder"
-+#define VarBootNext L"BootNext"
-+#define VarBootCurrent L"BootCurrent"
-+#define VarDriverOption L"Driver%04x"
-+#define VarDriverOrder L"DriverOrder"
-+#define VarConsoleInpDev L"ConInDev"
-+#define VarConsoleOutDev L"ConOutDev"
-+#define VarErrorOutDev L"ErrOutDev"
-+#define LanguageCodeEnglish "eng"
-+#define PlatformLanguageCodeEnglish "en-US"
-
- #define ISO_639_2_ENTRY_SIZE 3
- #define RFC_3066_ENTRY_SIZE 12
-@@ -333,4 +334,10 @@
- IN CHAR8 *LangCode
- );
-
-+CHAR8 *
-+ExtractSupportedLanguage (
-+ IN CONST CHAR8 *SupportedLanguages,
-+ IN CONST CHAR8 *Language
-+ );
-+
- #endif
-Index: Library/Misc.c
-===================================================================
---- Library/Misc.c (revision 30)
-+++ Library/Misc.c (working copy)
-@@ -1905,13 +1905,13 @@
- IN VOID *UserData
- )
- {
-- CHAR8 *Data;
-+ UINT8 *Data;
-
- CHAR8 Val[50];
-
- CHAR8 Str[20];
-
-- CHAR8 c;
-+ UINT8 c;
- UINTN Size;
- UINTN Index;
-
-@@ -2271,3 +2271,76 @@
- }
- return Lang;
- }
-+
-+CHAR8 *
-+ExtractSupportedLanguage (
-+ IN CONST CHAR8 *SupportedLanguages,
-+ IN CONST CHAR8 *Language
-+ )
-+/*++
-+
-+ Routine Description:
-+
-+ This function matches the major language code (first two characters) in the
-+ SupportedLanguages. The first language code in the SupportedLanguages that
-+ matches first two characters of the input Language is returned. If there is no
-+ such match, then NULL is returned.
-+
-+ Arguments:
-+
-+ SupportedLanguages - A Null-terminated ASCII string that contains one
-+ or more supported language codes.
-+
-+ LangCode - A pointer to a Null-terminated ASCII string
-+ array indicating the RFC 3066 language.
-+
-+ Returns:
-+
-+ The RFC3066 language code that matches the major language.
-+
-+--*/
-+{
-+ CONST CHAR8 *CurrentLanguage;
-+ CHAR8 *SupportedLanguage;
-+ UINTN LanguageLen;
-+
-+ CurrentLanguage = SupportedLanguages;
-+
-+ while (CurrentLanguage != '\0') {
-+ //
-+ // Search till the end of current language.
-+ //
-+ LanguageLen = 0;
-+ while (CurrentLanguage[LanguageLen] != ';' && CurrentLanguage[LanguageLen] != '\0') {
-+ LanguageLen++;
-+ }
-+
-+ //
-+ // should use AsciiStrnCmp(CurrentLanguage, Language, 2) == 0
-+ //
-+ if ((CurrentLanguage[0] == Language[0]) && (CurrentLanguage[1] == Language[1])) {
-+ //
-+ // Match the major language code, then return a new copy of
-+ // NULL-terminated SupportedLanguage.
-+ //
-+ SupportedLanguage = AllocatePool (LanguageLen + 1);
-+ CopyMem (SupportedLanguage, (VOID *) CurrentLanguage, LanguageLen);
-+
-+ SupportedLanguage[LanguageLen] = '\0';
-+
-+ return SupportedLanguage;
-+ }
-+ //
-+ // Make CurrentLangue point to the next candiate language code.
-+ //
-+ CurrentLanguage += LanguageLen;
-+ if (*CurrentLanguage == ';') {
-+ CurrentLanguage++;
-+ }
-+ }
-+
-+ return NULL;
-+}
-+
-+
-+
-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: shellenv/Connect.c
-===================================================================
---- shellenv/Connect.c (revision 30)
-+++ shellenv/Connect.c (working copy)
-@@ -831,6 +831,16 @@
- return Status;
- }
-
-+ //
-+ // Close proxy console before disconnect all devices.
-+ //
-+ SEnvCloseConsoleProxy (
-+ ST->ConsoleInHandle,
-+ &ST->ConIn,
-+ ST->ConsoleOutHandle,
-+ &ST->ConOut
-+ );
-+
- for (Index = 0; Index < AllHandleCount; Index++) {
- //
- // Check whether the handle is still in handle database
-@@ -1004,7 +1014,6 @@
- VOID
- SEnvConnectConsole (
- CHAR16 *VariableName,
-- EFI_GUID *PrimaryGuid,
- EFI_GUID *ConsoleGuid,
- EFI_HANDLE *ConsoleHandle,
- VOID **ConsoleInterface
-@@ -1018,27 +1027,36 @@
- EFI_HANDLE *AllHandleBuffer;
- VOID *Interface;
-
-- *ConsoleHandle = NULL;
-- *ConsoleInterface = NULL;
- ConsoleIndex = 0;
-+ AllHandleBuffer = NULL;
-
- DevicePath = LibGetVariable (VariableName, &gEfiGlobalVariableGuid);
-- if (DevicePath != NULL) {
-- SEnvConnectDevicePath (DevicePath);
-- FreePool (DevicePath);
-+ if (DevicePath == NULL) {
-+ //
-+ // If no any device defined in EFI variable, do nothing
-+ //
-+ return;
- }
-
-- AllHandleBuffer = NULL;
-- Status = BS->LocateHandleBuffer (
-- ByProtocol,
-- PrimaryGuid,
-- NULL,
-- &AllHandleCount,
-- &AllHandleBuffer
-- );
-- if (!EFI_ERROR (Status) && AllHandleCount > 0) {
-- *ConsoleHandle = AllHandleBuffer[0];
-- } else if (*ConsoleHandle == NULL) {
-+ //
-+ // Connect all console devices
-+ //
-+ SEnvConnectDevicePath (DevicePath);
-+ FreePool (DevicePath);
-+
-+ Status = EFI_NOT_FOUND;
-+ //
-+ // Check ConsoleHandle validation whatever it was updated or not.
-+ //
-+ if (*ConsoleHandle != NULL) {
-+ Status = BS->HandleProtocol (
-+ *ConsoleHandle,
-+ ConsoleGuid,
-+ &Interface
-+ );
-+ }
-+
-+ if (EFI_ERROR (Status)) {
- AllHandleBuffer = NULL;
- Status = BS->LocateHandleBuffer (
- ByProtocol,
-@@ -1063,16 +1081,16 @@
- &gEfiDevicePathProtocolGuid,
- &Interface
- );
-- if (EFI_ERROR (Status)) {
-+ if (!EFI_ERROR (Status)) {
- ConsoleIndex = Index;
- break;
- }
- }
-+
-+ *ConsoleHandle = AllHandleBuffer[ConsoleIndex];
- }
- }
-
-- *ConsoleHandle = AllHandleBuffer[ConsoleIndex];
--
- if (*ConsoleHandle != NULL) {
- BS->HandleProtocol (
- *ConsoleHandle,
-@@ -1081,7 +1099,7 @@
- );
- }
-
-- if (AllHandleBuffer) {
-+ if (AllHandleBuffer != NULL) {
- FreePool (AllHandleBuffer);
- }
- }
-@@ -1189,8 +1207,7 @@
- EFI_STATUS Status;
-
- //
-- // Check current ConIn and ConOut to ensure it is the ConsoleProxy
-- // Otherwise, the Console should not be close
-+ // Check current ConIn and ConOut to judge it is the ConsoleProxy
- //
- Status = SEnvCheckConsoleProxy (
- ST->ConsoleInHandle,
-@@ -1203,23 +1220,21 @@
- // Indicate the Console is replaced by redirection operation
- // It is not safe to connect Console here
- //
-- if (EFI_ERROR (Status)) {
-- return ;
-+ if (!EFI_ERROR (Status)) {
-+ //
-+ // It is proxy console, to prevent the proxy console form being restored to original console,
-+ // close it temporary before connect all console
-+ //
-+ SEnvCloseConsoleProxy (
-+ ST->ConsoleInHandle,
-+ &ST->ConIn,
-+ ST->ConsoleOutHandle,
-+ &ST->ConOut
-+ );
- }
-- //
-- // To prevent the proxy console form being restored to original console,
-- // close it temporary before connect all console
-- //
-- SEnvCloseConsoleProxy (
-- ST->ConsoleInHandle,
-- &ST->ConIn,
-- ST->ConsoleOutHandle,
-- &ST->ConOut
-- );
-
- SEnvConnectConsole (
- VarErrorOut,
-- &gEfiPrimaryStandardErrorDeviceGuid,
- &gEfiSimpleTextOutProtocolGuid,
- &ST->StandardErrorHandle,
- (VOID **) &ST->StdErr
-@@ -1227,7 +1242,6 @@
-
- SEnvConnectConsole (
- VarConsoleOut,
-- &gEfiPrimaryConsoleOutDeviceGuid,
- &gEfiSimpleTextOutProtocolGuid,
- &ST->ConsoleOutHandle,
- (VOID **) &ST->ConOut
-@@ -1235,7 +1249,6 @@
-
- SEnvConnectConsole (
- VarConsoleIn,
-- &gEfiPrimaryConsoleInDeviceGuid,
- &gEfiSimpleTextInProtocolGuid,
- &ST->ConsoleInHandle,
- (VOID **) &ST->ConIn
-@@ -1254,6 +1267,8 @@
- SetCrc (&ST->Hdr);
- }
-
-+
-+
- EFI_STATUS
- EFIAPI
- SEnvCmdReconnect (
-Index: SmbiosView/PrintInfo.c
-===================================================================
---- SmbiosView/PrintInfo.c (revision 30)
-+++ SmbiosView/PrintInfo.c (working copy)
-@@ -1779,7 +1779,7 @@
- //
- // MaxSize is determined by follow formula
- //
-- MaxSize = 1 << Size;
-+ MaxSize = (UINTN) 1 << Size;
- PrintToken (STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ONE_VAR_MB), HiiHandle, MaxSize);
-
- if (Option >= SHOW_DETAIL) {
-Index: SmbiosView/Smbios.h
-===================================================================
---- SmbiosView/Smbios.h (revision 30)
-+++ SmbiosView/Smbios.h (working copy)
-@@ -34,11 +34,6 @@
-
- extern EFI_HII_HANDLE HiiHandle;
-
--#define EFI_SMBIOS_TABLE_GUID \
-- { \
-- 0xeb9d2d31, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d \
-- }
-
--extern EFI_GUID gEfiSmbiosTableGuid;
-
- #endif