From: jcarsey Date: Thu, 7 Apr 2011 17:12:12 +0000 (+0000) Subject: ShellParametersProtocol - remove parsing from within quoted parameters. X-Git-Tag: edk2-stable201903~14968 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=d8f8021cbe89187c443e6a9ee89eb3edc8248ab4 ShellParametersProtocol - remove parsing from within quoted parameters. Pci - Add missing enumeration in switch statement. For - Verify parameter before dereferencing. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11511 6f19259b-4bc3-4df7-8a09-765794883524 --- diff --git a/ShellPkg/Application/Shell/ShellParametersProtocol.c b/ShellPkg/Application/Shell/ShellParametersProtocol.c index b90a2c32bb..5d2792ba30 100644 --- a/ShellPkg/Application/Shell/ShellParametersProtocol.c +++ b/ShellPkg/Application/Shell/ShellParametersProtocol.c @@ -69,9 +69,7 @@ GetNextParameter( if ((*Walker)[0] == L'\"') { NextDelim = NULL; for (TempLoc = *Walker + 1 ; TempLoc != NULL && *TempLoc != CHAR_NULL ; TempLoc++) { - if (*TempLoc == L'^' && *(TempLoc+1) == L'^') { - TempLoc++; - } else if (*TempLoc == L'^' && *(TempLoc+1) == L'\"') { + if (*TempLoc == L'^' && *(TempLoc+1) == L'\"') { TempLoc++; } else if (*TempLoc == L'\"') { NextDelim = TempLoc; @@ -96,10 +94,7 @@ GetNextParameter( *Walker = NULL; } for (TempLoc = *TempParameter ; TempLoc != NULL && *TempLoc != CHAR_NULL ; TempLoc++) { - if ((*TempLoc == L'^' && *(TempLoc+1) == L'^') - || (*TempLoc == L'^' && *(TempLoc+1) == L'|') - || (*TempLoc == L'^' && *(TempLoc+1) == L'\"') - ){ + if (*TempLoc == L'^' && *(TempLoc+1) == L'\"') { CopyMem(TempLoc, TempLoc+1, StrSize(TempLoc) - sizeof(TempLoc[0])); } } @@ -123,9 +118,7 @@ GetNextParameter( for (NextDelim = *TempParameter ; NextDelim != NULL && *NextDelim != CHAR_NULL ; NextDelim++) { if (*NextDelim == L'^' && *(NextDelim+1) == L'^') { CopyMem(NextDelim, NextDelim+1, StrSize(NextDelim) - sizeof(NextDelim[0])); - }/* else if (*NextDelim == L'^') { - *NextDelim = L' '; - }*/ + } } while ((*TempParameter)[StrLen(*TempParameter)-1] == L' ') { (*TempParameter)[StrLen(*TempParameter)-1] = CHAR_NULL; diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/Pci.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/Pci.c index c6e4a32f6f..65effc731f 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/Pci.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/Pci.c @@ -2781,6 +2781,9 @@ PciExplainData ( ); CapPtr = ConfigSpace->NonCommon.CardBus.CapabilitiesPtr; break; + case PciUndefined: + default: + break; } // // If Status bit4 is 1, dump or explain capability structure @@ -3405,7 +3408,7 @@ PciExplainCardBusData ( INDEX_OF (&(CardBus->IoBase0)), Io32Bit ? L" 32 bit" : L" 16 bit", CardBus->IoBase0 & (Io32Bit ? 0xfffffffc : 0x0000fffc), - CardBus->IoLimit0 & (Io32Bit ? 0xffffffff : 0x0000ffff) | 0x00000003 + (CardBus->IoLimit0 & (Io32Bit ? 0xffffffff : 0x0000ffff)) | 0x00000003 ); Io32Bit = (BOOLEAN) (CardBus->IoBase1 & PCI_BIT_0); @@ -3415,7 +3418,7 @@ PciExplainCardBusData ( INDEX_OF (&(CardBus->IoBase1)), Io32Bit ? L" 32 bit" : L" 16 bit", CardBus->IoBase1 & (Io32Bit ? 0xfffffffc : 0x0000fffc), - CardBus->IoLimit1 & (Io32Bit ? 0xffffffff : 0x0000ffff) | 0x00000003 + (CardBus->IoLimit1 & (Io32Bit ? 0xffffffff : 0x0000ffff)) | 0x00000003 ); // @@ -4690,14 +4693,16 @@ PciExplainPciExpress ( // Print (L"\n%HStart dumping PCIex extended configuration space (0x100 - 0xFFF).%N\n\n"); - DumpHex ( - 2, - 0x100, - ExtendRegSize, - (VOID *) (ExRegBuffer) - ); + if (ExRegBuffer != NULL) { + DumpHex ( + 2, + 0x100, + ExtendRegSize, + (VOID *) (ExRegBuffer) + ); - FreePool ((VOID *) ExRegBuffer); + FreePool ((VOID *) ExRegBuffer); + } Done: return EFI_SUCCESS; diff --git a/ShellPkg/Library/UefiShellLevel1CommandsLib/For.c b/ShellPkg/Library/UefiShellLevel1CommandsLib/For.c index b8e4805d92..bc26ed31bc 100644 --- a/ShellPkg/Library/UefiShellLevel1CommandsLib/For.c +++ b/ShellPkg/Library/UefiShellLevel1CommandsLib/For.c @@ -589,11 +589,16 @@ ShellCommandRunFor ( ASSERT(ArgSet == NULL); } - Info = (SHELL_FOR_INFO*)CurrentScriptFile->CurrentCommand->Data; - if (CurrentScriptFile->CurrentCommand->Reset) { - Info->CurrentValue = (CHAR16*)Info->Set; - FirstPass = TRUE; - CurrentScriptFile->CurrentCommand->Reset = FALSE; + if (CurrentScriptFile != NULL && CurrentScriptFile->CurrentCommand != NULL) { + Info = (SHELL_FOR_INFO*)CurrentScriptFile->CurrentCommand->Data; + if (CurrentScriptFile->CurrentCommand->Reset) { + Info->CurrentValue = (CHAR16*)Info->Set; + FirstPass = TRUE; + CurrentScriptFile->CurrentCommand->Reset = FALSE; + } + } else { + ShellStatus = SHELL_UNSUPPORTED; + Info = NULL; } if (ShellStatus == SHELL_SUCCESS) { ASSERT(Info != NULL);