From: jcarsey Date: Fri, 1 Apr 2011 22:16:01 +0000 (+0000) Subject: Comment's added and fixed. X-Git-Tag: edk2-stable201903~14980 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=ae724571beb0cff6edefe42942b7cdc7aa81ee94 Comment's added and fixed. Pointer's checked for NULL before access and after memory allocations. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11499 6f19259b-4bc3-4df7-8a09-765794883524 --- diff --git a/ShellPkg/Application/Shell/FileHandleWrappers.c b/ShellPkg/Application/Shell/FileHandleWrappers.c index 38fdb8d848..b2163bebb9 100644 --- a/ShellPkg/Application/Shell/FileHandleWrappers.c +++ b/ShellPkg/Application/Shell/FileHandleWrappers.c @@ -1547,7 +1547,7 @@ FileInterfaceFileGetInfo( /** Set information about a file - @param File Protocol instance pointer. + @param This Protocol instance pointer. @param InformationType Type of information in Buffer. @param BufferSize Size of buffer. @param Buffer The data to write. diff --git a/ShellPkg/Application/Shell/ShellParametersProtocol.c b/ShellPkg/Application/Shell/ShellParametersProtocol.c index 76935333d6..238ccd9681 100644 --- a/ShellPkg/Application/Shell/ShellParametersProtocol.c +++ b/ShellPkg/Application/Shell/ShellParametersProtocol.c @@ -415,6 +415,14 @@ CleanUpShellParametersProtocol ( return (Status); } +/** + Determin if a file name represents a unicode file. + + @param[in] FileName Pointer to the filename to open. + + @retval EFI_SUCCESS The file is a unicode file. + @return An error upon failure. +**/ EFI_STATUS EFIAPI IsUnicodeFile( diff --git a/ShellPkg/Include/Library/ShellLib.h b/ShellPkg/Include/Library/ShellLib.h index 6061262221..12cae5afeb 100644 --- a/ShellPkg/Include/Library/ShellLib.h +++ b/ShellPkg/Include/Library/ShellLib.h @@ -1191,7 +1191,7 @@ ShellPromptForResponse ( to prevent invalid answers to question. @param[in] HiiFormatStringId The format string Id for getting from Hii. @param[in] HiiFormatHandle The format string Handle for getting from Hii. - @param[out] Response The pointer to Response, which will be populated upon return. + @param[in,out] Response The pointer to Response, which will be populated upon return. @retval EFI_SUCCESS The operation was sucessful. @return other The operation failed. diff --git a/ShellPkg/Include/ShellBase.h b/ShellPkg/Include/ShellBase.h index bd0462c59c..73ef064207 100644 --- a/ShellPkg/Include/ShellBase.h +++ b/ShellPkg/Include/ShellBase.h @@ -15,7 +15,7 @@ #ifndef __SHELL_BASE__ #define __SHELL_BASE__ -#define ABS(a) (a<0)?(-(a)):(a) +#define ABS(a) ((a<0)?(-(a)):(a)) typedef VOID *SHELL_FILE_HANDLE; diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/Compress.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/Compress.c index afe3ec0858..01321d1ed6 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/Compress.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/Compress.c @@ -237,8 +237,7 @@ FreeMemory ( } /** - Initialize String Info Log data structures - + Initialize String Info Log data structures. **/ VOID EFIAPI @@ -1043,8 +1042,7 @@ WritePTLen ( } /** - Outputs the code length array for Char&Length Set - + Outputs the code length array for Char&Length Set. **/ VOID EFIAPI diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/FileBuffer.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/FileBuffer.c index fcd0de5cb5..8223847924 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/FileBuffer.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/FileBuffer.c @@ -357,7 +357,7 @@ FileBufferRestoreMousePosition ( CurrentLine = FileBuffer.CurrentLine; Line = MoveLine (FRow - FileBuffer.FilePosition.Row); - if (FColumn > Line->Size) { + if (Line == NULL || FColumn > Line->Size) { HasCharacter = FALSE; } @@ -1367,7 +1367,7 @@ GetNewLine ( Change a Unicode string to an ASCII string. @param[in] UStr The Unicode string. - @param[in] Lenght The maximum size of AStr. + @param[in] Length The maximum size of AStr. @param[out] AStr ASCII string to pass out. @return The actuall length. @@ -1375,9 +1375,9 @@ GetNewLine ( UINTN EFIAPI UnicodeToAscii ( - IN CONST CHAR16 *UStr, - IN CONST UINTN Length, - OUT CHAR8 *AStr + IN CONST CHAR16 *UStr, + IN CONST UINTN Length, + OUT CHAR8 *AStr ) { UINTN Index; @@ -1621,7 +1621,7 @@ FileBufferSave ( // // now everything is ready , you can set the new file name to filebuffer // - if (StrCmp (FileName, FileBuffer.FileName) != 0) { + if (FileName != NULL && FileBuffer.FileName != NULL && StrCmp (FileName, FileBuffer.FileName) != 0) { // // not the same // diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/MainTextEditor.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/MainTextEditor.c index a82fdb9bb8..713332ea0d 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/MainTextEditor.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/MainTextEditor.c @@ -91,7 +91,7 @@ MainCommandSearch ( VOID ); -/* +/** search string in file buffer, and replace it with another str @retval EFI_SUCCESS The operation was successful. @@ -589,8 +589,8 @@ MainCommandSearch ( return EFI_SUCCESS; } -/* - search string in file buffer, and replace it with another str +/** + Search string in file buffer, and replace it with another str. @retval EFI_SUCCESS The operation was successful. @retval EFI_OUT_OF_RESOURCES A memory allocation failed. @@ -1589,7 +1589,6 @@ GetTextY ( @retval EFI_SUCCESS The operation was successful. @retval EFI_NOT_FOUND There was no mouse support found. **/ -STATIC EFI_STATUS EFIAPI MainEditorHandleMouseInput ( diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/BufferImage.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/BufferImage.c index 675850cff4..8aa75b419a 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/BufferImage.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/BufferImage.c @@ -78,22 +78,19 @@ EFI_STATUS HBufferImageInit ( VOID ) -/*++ - -Routine Description: - +/** Initialization function for HBufferImage -Arguments: + None -Returns: + EFI_SUCCESS EFI_LOAD_ERROR ---*/ +**/ { EFI_STATUS Status; @@ -151,24 +148,21 @@ EFI_STATUS HBufferImageBackup ( VOID ) -/*++ - -Routine Description: - +/** Backup function for HBufferImage Only a few fields need to be backup. This is for making the file buffer refresh as few as possible. -Arguments: + None -Returns: + EFI_SUCCESS ---*/ +**/ { HBufferImageBackupVar.MousePosition = HBufferImage.MousePosition; @@ -207,10 +201,7 @@ EFI_STATUS HBufferImageFreeLines ( VOID ) -/*++ - -Routine Description: - +/** Free all the lines in HBufferImage Fields affected: Lines @@ -218,15 +209,15 @@ Routine Description: NumLines ListHead -Arguments: + None -Returns: + EFI_SUCCESS ---*/ +**/ { HFreeLines (HBufferImage.ListHead, HBufferImage.Lines); @@ -241,21 +232,18 @@ EFI_STATUS HBufferImageCleanup ( VOID ) -/*++ - -Routine Description: - +/** Cleanup function for HBufferImage -Arguments: + None -Returns: + EFI_SUCCESS ---*/ +**/ { EFI_STATUS Status; @@ -284,13 +272,10 @@ HBufferImagePrintLine ( IN HEFI_EDITOR_COLOR_UNION New ) -/*++ - -Routine Description: - +/** Print Line on Row -Arguments: + Line - Line to print Row - Row on screen ( begin from 1 ) @@ -298,11 +283,11 @@ Arguments: Orig - Orig New - Light display -Returns: + EFI_SUCCESS ---*/ +**/ { UINTN Index; @@ -691,7 +676,7 @@ HBufferImageRestoreMousePosition ( CurrentLine = HBufferImage.CurrentLine; Line = HMoveLine (FRow - HBufferImage.BufferPosition.Row); - if (FColumn > Line->Size) { + if (Line == NULL || FColumn > Line->Size) { HasCharacter = FALSE; } @@ -738,21 +723,18 @@ EFI_STATUS HBufferImageRestorePosition ( VOID ) -/*++ - -Routine Description: - +/** Set cursor position according to HBufferImage.DisplayPosition. -Arguments: + None -Returns: + EFI_SUCCESS ---*/ +**/ { // // set cursor position @@ -766,26 +748,17 @@ Returns: return EFI_SUCCESS; } +/** + Refresh function for HBufferImage. + + @retval EFI_SUCCESS The operation was successful. + @retval EFI_LOAD_ERROR A Load error occured. + +**/ EFI_STATUS HBufferImageRefresh ( VOID ) -/*++ - -Routine Description: - - Refresh function for HBufferImage - -Arguments: - - None - -Returns: - - EFI_SUCCESS - EFI_LOAD_ERROR - ---*/ { LIST_ENTRY *Link; HEFI_EDITOR_LINE *Line; @@ -811,8 +784,8 @@ Returns: // no definite required refresh // and file position displayed on screen has not been changed // - if (HBufferImageNeedRefresh == FALSE && - HBufferImageOnlyLineNeedRefresh == FALSE && + if (!HBufferImageNeedRefresh && + !HBufferImageOnlyLineNeedRefresh && HBufferImageBackupVar.LowVisibleRow == HBufferImage.LowVisibleRow ) { HBufferImageRestoreMousePosition (); @@ -826,7 +799,7 @@ Returns: // // only need to refresh current line // - if (HBufferImageOnlyLineNeedRefresh == TRUE && HBufferImageBackupVar.LowVisibleRow == HBufferImage.LowVisibleRow) { + if (HBufferImageOnlyLineNeedRefresh && HBufferImageBackupVar.LowVisibleRow == HBufferImage.LowVisibleRow) { HBufferImagePrintLine ( HBufferImage.CurrentLine, @@ -935,7 +908,22 @@ Returns: return EFI_SUCCESS; } +/** + Read an image into a buffer friom a source. + + @param[in] FileName Pointer to the file name. OPTIONAL and ignored if not FileTypeFileBuffer. + @param[in] DiskName Pointer to the disk name. OPTIONAL and ignored if not FileTypeDiskBuffer. + @param[in] DiskOffset Offset into the disk. OPTIONAL and ignored if not FileTypeDiskBuffer. + @param[in] DiskSize Size of the disk buffer. OPTIONAL and ignored if not FileTypeDiskBuffer. + @param[in] MemoryOffset Offset into the Memory. OPTIONAL and ignored if not FileTypeMemBuffer. + @param[in] MemorySize Size of the Memory buffer. OPTIONAL and ignored if not FileTypeMemBuffer. + @param[in] BufferType The type of buffer to save. IGNORED. + @param[in] Recover TRUE for recovermode, FALSE otherwise. + + @return EFI_SUCCESS The operation was successful. +**/ EFI_STATUS +EFIAPI HBufferImageRead ( IN CONST CHAR16 *FileName, IN CONST CHAR16 *DiskName, @@ -985,6 +973,19 @@ HBufferImageRead ( return Status; } +/** + Save the current image. + + @param[in] FileName Pointer to the file name. OPTIONAL and ignored if not FileTypeFileBuffer. + @param[in] DiskName Pointer to the disk name. OPTIONAL and ignored if not FileTypeDiskBuffer. + @param[in] DiskOffset Offset into the disk. OPTIONAL and ignored if not FileTypeDiskBuffer. + @param[in] DiskSize Size of the disk buffer. OPTIONAL and ignored if not FileTypeDiskBuffer. + @param[in] MemoryOffset Offset into the Memory. OPTIONAL and ignored if not FileTypeMemBuffer. + @param[in] MemorySize Size of the Memory buffer. OPTIONAL and ignored if not FileTypeMemBuffer. + @param[in] BufferType The type of buffer to save. IGNORED. + + @return EFI_SUCCESS The operation was successful. +**/ EFI_STATUS HBufferImageSave ( IN CHAR16 *FileName, @@ -1035,29 +1036,20 @@ HBufferImageSave ( return Status; } -HEFI_EDITOR_LINE * -HBufferImageCreateLine ( - VOID - ) -/*++ - -Routine Description: - - Create a new line and append it to the line list +/** + Create a new line and append it to the line list. Fields affected: NumLines Lines -Arguments: + @retval NULL create line failed. + @return the line created. - None - -Returns: - - NULL -- create line failed - Not NULL -- the line created - ---*/ +**/ +HEFI_EDITOR_LINE * +HBufferImageCreateLine ( + VOID + ) { HEFI_EDITOR_LINE *Line; @@ -1091,26 +1083,15 @@ Returns: return Line; } +/** + Free the current image. + + @retval EFI_SUCCESS The operation was successful. +**/ EFI_STATUS HBufferImageFree ( VOID ) -/*++ - -Routine Description: - - Function called when load a new file in. It will free all the old lines - and set FileModified field to FALSE - -Arguments: - - None - -Returns: - - EFI_SUCCESS - ---*/ { // // free all lines @@ -1120,33 +1101,25 @@ Returns: return EFI_SUCCESS; } +/** + Dispatch input to different handler + + @param[in] Key The input key: + the keys can be: + ASCII KEY + Backspace/Delete + Direction key: up/down/left/right/pgup/pgdn + Home/End + INS + + @retval EFI_SUCCESS The operation was successful. + @retval EFI_LOAD_ERROR A load error occured. + @retval EFI_OUT_OF_RESOURCES A Memory allocation failed. +**/ EFI_STATUS HBufferImageHandleInput ( IN EFI_INPUT_KEY *Key ) -/*++ - -Routine Description: - - Dispatch input to different handler - -Arguments: - - Key -- input key - the keys can be: - ASCII KEY - Backspace/Delete - Direction key: up/down/left/right/pgup/pgdn - Home/End - INS - -Returns: - - EFI_SUCCESS - EFI_LOAD_ERROR - EFI_OUT_OF_RESOURCES - ---*/ { EFI_STATUS Status; @@ -1231,27 +1204,20 @@ Returns: return Status; } +/** + ASCII key + Backspace + return. + + @param[in] Char The input char. + + @retval EFI_SUCCESS The operation was successful. + @retval EFI_LOAD_ERROR A load error occured. + @retval EFI_OUT_OF_RESOURCES A memory allocation failed. +**/ EFI_STATUS +EFIAPI HBufferImageDoCharInput ( IN CHAR16 Char ) -/*++ - -Routine Description: - - ASCII key + Backspace + return - -Arguments: - - Char -- input char - -Returns: - - EFI_SUCCESS - EFI_LOAD_ERROR - EFI_OUT_OF_RESOURCES - ---*/ { EFI_STATUS Status; @@ -1289,26 +1255,19 @@ Returns: return Status; } +/** + change char to int value based on Hex. + + @param[in] Char The input char. + + @return The character's index value. + @retval -1 The operation failed. +**/ INTN +EFIAPI HBufferImageCharToHex ( IN CHAR16 Char ) -/*++ - -Routine Description: - - change char to int value based on Hex - -Arguments: - - Char -- input char - -Returns: - - int value; - - ---*/ { // // change the character to hex @@ -1328,26 +1287,19 @@ Returns: return -1; } +/** + Add character. + + @param[in] Char -- input char. + + @retval EFI_SUCCESS The operation was successful. + @retval EFI_OUT_OF_RESOURCES A memory allocation failed. +**/ EFI_STATUS +EFIAPI HBufferImageAddChar ( IN CHAR16 Char ) -/*++ - -Routine Description: - - Add character - -Arguments: - - Char -- input char - -Returns: - - EFI_SUCCESS - EFI_OUT_OF_RESOURCES - ---*/ { HEFI_EDITOR_LINE *Line; HEFI_EDITOR_LINE *NewLine; @@ -1403,7 +1355,7 @@ Returns: // at the low 4 bits of the last character of a full line // so if no next line, need to create a new line // - if (High == FALSE && FCol == 0x10) { + if (!High && FCol == 0x10) { HBufferImageOnlyLineNeedRefresh = FALSE; HBufferImageNeedRefresh = TRUE; @@ -1431,7 +1383,7 @@ Returns: // // if already at end of this line, scroll it to the start of next line // - if (FCol == 0x10 && High == FALSE) { + if (FCol == 0x10 && !High) { // // definitely has next line // @@ -1469,27 +1421,18 @@ Returns: return EFI_SUCCESS; } +/** + Check user specified FileRow and FileCol is in current screen. + + @param[in] FileRow Row of file position ( start from 1 ). + + @retval TRUE It's on the current screen. + @retval FALSE It's not on the current screen. +**/ BOOLEAN HInCurrentScreen ( IN UINTN FileRow ) -/*++ - -Routine Description: - - Check user specified FileRow and FileCol is in current screen - -Arguments: - - FileRow -- Row of file position ( start from 1 ) - - -Returns: - - TRUE - FALSE - ---*/ { if (FileRow >= HBufferImage.LowVisibleRow && FileRow <= HBufferImage.LowVisibleRow + (HMainEditor.ScreenSize.Row - 5) - 1) { return TRUE; @@ -1498,26 +1441,19 @@ Returns: return FALSE; } +/** + Check user specified FileRow is above current screen. + + @param[in] FileRow Row of file position ( start from 1 ). + + @retval TRUE It is above the current screen. + @retval FALSE It is not above the current screen. + +**/ BOOLEAN HAboveCurrentScreen ( IN UINTN FileRow ) -/*++ - -Routine Description: - - Check user specified FileRow is above current screen - -Arguments: - - FileRow -- Row of file position ( start from 1 ) - -Returns: - - TRUE - FALSE - ---*/ { if (FileRow < HBufferImage.LowVisibleRow) { return TRUE; @@ -1526,26 +1462,19 @@ Returns: return FALSE; } +/** + Check user specified FileRow is under current screen. + + @param[in] FileRow Row of file position ( start from 1 ). + + @retval TRUE It is under the current screen. + @retval FALSE It is not under the current screen. + +**/ BOOLEAN HUnderCurrentScreen ( IN UINTN FileRow ) -/*++ - -Routine Description: - - Check user specified FileRow is under current screen - -Arguments: - - FileRow -- Row of file position ( start from 1 ) - -Returns: - - TRUE - FALSE - ---*/ { if (FileRow > HBufferImage.LowVisibleRow + (HMainEditor.ScreenSize.Row - 5) - 1) { return TRUE; @@ -1554,29 +1483,20 @@ Returns: return FALSE; } +/** + According to cursor's file position, adjust screen display. + + @param[in] NewFilePosRow Row of file position ( start from 1 ). + @param[in] NewFilePosCol Column of file position ( start from 1 ). + @param[in] HighBits Cursor will on high4 bits or low4 bits. +**/ VOID HBufferImageMovePosition ( IN UINTN NewFilePosRow, IN UINTN NewFilePosCol, IN BOOLEAN HighBits ) -/*++ - -Routine Description: - - According to cursor's file position, adjust screen display -Arguments: - - NewFilePosRow -- Row of file position ( start from 1 ) - NewFilePosCol -- Column of file position ( start from 1 ) - HighBits -- cursor will on high4 bits or low4 bits - -Returns: - - None - ---*/ { INTN RowGap; UINTN Abs; @@ -1641,7 +1561,7 @@ Returns: NewDisplayCol++; } - if (HighBits == FALSE) { + if (!HighBits) { NewDisplayCol++; } @@ -1654,25 +1574,15 @@ Returns: } +/** + Scroll cursor to right. + + @retval EFI_SUCCESS The operation was successful. +**/ EFI_STATUS HBufferImageScrollRight ( VOID ) -/*++ - -Routine Description: - - Scroll cursor to right - -Arguments: - - None - -Returns: - - EFI_SUCCESS - ---*/ { HEFI_EDITOR_LINE *Line; UINTN FRow; @@ -1722,25 +1632,15 @@ Returns: return EFI_SUCCESS; } +/** + Scroll cursor to left. + + @retval EFI_SUCCESS The operation was successful. +**/ EFI_STATUS HBufferImageScrollLeft ( VOID ) -/*++ - -Routine Description: - - Scroll cursor to left - -Arguments: - - None - -Returns: - - EFI_SUCCESS - ---*/ { HEFI_EDITOR_LINE *Line; @@ -1781,25 +1681,15 @@ Returns: return EFI_SUCCESS; } +/** + Scroll cursor to the next line + + @retval EFI_SUCCESS The operation was successful. +**/ EFI_STATUS HBufferImageScrollDown ( VOID ) -/*++ - -Routine Description: - - Scroll cursor to the next line - -Arguments: - - None - -Returns: - - EFI_SUCCESS - ---*/ { HEFI_EDITOR_LINE *Line; UINTN FRow; @@ -1836,25 +1726,15 @@ Returns: return EFI_SUCCESS; } +/** + Scroll cursor to previous line + + @retval EFI_SUCCESS The operation was successful. +**/ EFI_STATUS HBufferImageScrollUp ( VOID ) -/*++ - -Routine Description: - - Scroll cursor to previous line - -Arguments: - - None - -Returns: - - EFI_SUCCESS - ---*/ { HEFI_EDITOR_LINE *Line; UINTN FRow; @@ -1880,25 +1760,15 @@ Returns: return EFI_SUCCESS; } +/** + Scroll cursor to next page + + @retval EFI_SUCCESS The operation was successful. +**/ EFI_STATUS HBufferImagePageDown ( VOID ) -/*++ - -Routine Description: - - Scroll cursor to next page - -Arguments: - - None - -Returns: - - EFI_SUCCESS - ---*/ { HEFI_EDITOR_LINE *Line; UINTN FRow; @@ -1943,25 +1813,15 @@ Returns: return EFI_SUCCESS; } +/** + Scroll cursor to previous page + + @retval EFI_SUCCESS The operation was successful. +**/ EFI_STATUS HBufferImagePageUp ( VOID ) -/*++ - -Routine Description: - - Scroll cursor to previous page - -Arguments: - - None - -Returns: - - EFI_SUCCESS - ---*/ { HEFI_EDITOR_LINE *Line; UINTN FRow; @@ -2001,25 +1861,15 @@ Returns: return EFI_SUCCESS; } +/** + Scroll cursor to start of line + + @retval EFI_SUCCESS The operation was successful. +**/ EFI_STATUS HBufferImageHome ( VOID ) -/*++ - -Routine Description: - - Scroll cursor to start of line - -Arguments: - - None - -Returns: - - EFI_SUCCESS - ---*/ { HEFI_EDITOR_LINE *Line; UINTN FRow; @@ -2043,25 +1893,15 @@ Returns: return EFI_SUCCESS; } +/** + Scroll cursor to end of line. + + @retval EFI_SUCCESS Teh operation was successful. +**/ EFI_STATUS HBufferImageEnd ( VOID ) -/*++ - -Routine Description: - - Scroll cursor to end of line - -Arguments: - - None - -Returns: - - EFI_SUCCESS - ---*/ { HEFI_EDITOR_LINE *Line; UINTN FRow; @@ -2092,6 +1932,11 @@ Returns: return EFI_SUCCESS; } +/** + Get the size of the open buffer. + + @retval The size in bytes. +**/ UINTN HBufferImageGetTotalSize ( VOID @@ -2122,28 +1967,21 @@ HBufferImageGetTotalSize ( return Size; } +/** + Delete character from buffer. + + @param[in] Pos Position, Pos starting from 0. + @param[in] Count The Count of characters to delete. + @param[OUT] DeleteBuffer The DeleteBuffer. + + @retval EFI_SUCCESS Success +**/ EFI_STATUS HBufferImageDeleteCharacterFromBuffer ( IN UINTN Pos, IN UINTN Count, OUT UINT8 *DeleteBuffer ) -/*++ -Routine Description: - - Delete character from buffer - -Arguments: - - Pos - Position, Pos starting from 0 - Count - Count - DeleteBuffer - DeleteBuffer - -Returns: - - EFI_SUCCESS Success - ---*/ { UINTN Index; @@ -2264,28 +2102,21 @@ Returns: return EFI_SUCCESS; } +/** + Add character to buffer, add before pos. + + @param[in] Pos Position, Pos starting from 0. + @param[in] Count Count of characters to add. + @param[in] AddBuffer Add buffer. + + @retval EFI_SUCCESS Success. +**/ EFI_STATUS HBufferImageAddCharacterToBuffer ( IN UINTN Pos, IN UINTN Count, IN UINT8 *AddBuffer ) -/*++' -Routine Description: - - Add character to buffer, add before pos - -Arguments: - - Pos - Position, Pos starting from 0 - Count - Count - AddBuffer - Add buffer - -Returns: - - EFI_SUCCESS Success - ---*/ { INTN Index; @@ -2378,25 +2209,16 @@ Returns: return EFI_SUCCESS; } +/** + Delete the previous character. + + @retval EFI_SUCCESS The operationw as successful. +**/ EFI_STATUS +EFIAPI HBufferImageDoBackspace ( VOID ) -/*++ - -Routine Description: - - delete the previous character - -Arguments: - - None - -Returns: - - EFI_SUCCESS - ---*/ { HEFI_EDITOR_LINE *Line; @@ -2447,25 +2269,16 @@ Returns: return EFI_SUCCESS; } +/** + Delete current character from line. + + @retval EFI_SUCCESS The operationw as successful. +**/ EFI_STATUS +EFIAPI HBufferImageDoDelete ( VOID ) -/*++ - -Routine Description: - - Delete current character from line - -Arguments: - - None - -Returns: - - EFI_SUCCESS - ---*/ { HEFI_EDITOR_LINE *Line; @@ -2513,30 +2326,40 @@ Returns: return EFI_SUCCESS; } +/** + Change the raw buffer to a list of lines for the UI. + + @param[in] Buffer The pointer to the buffer to fill. + @param[in] Bytes The size of the buffer in bytes. + + @retval EFI_SUCCESS The operation was successful. + @retval EFI_OUT_OF_RESOURCES A memory allocation failed. +**/ EFI_STATUS +EFIAPI HBufferImageBufferToList ( IN VOID *Buffer, IN UINTN Bytes ) { - UINTN i; - UINTN j; + UINTN TempI; + UINTN TempJ; UINTN Left; HEFI_EDITOR_LINE *Line; UINT8 *BufferPtr; - i = 0; + TempI = 0; Left = 0; BufferPtr = (UINT8 *) Buffer; // // parse file content line by line // - while (i < Bytes) { - if (Bytes - i >= 0x10) { + while (TempI < Bytes) { + if (Bytes - TempI >= 0x10) { Left = 0x10; } else { - Left = Bytes - i; + Left = Bytes - TempI; } // @@ -2549,9 +2372,9 @@ HBufferImageBufferToList ( Line->Size = Left; - for (j = 0; j < Left; j++) { - Line->Buffer[j] = BufferPtr[i]; - i++; + for (TempJ = 0; TempJ < Left; TempJ++) { + Line->Buffer[TempJ] = BufferPtr[TempI]; + TempI++; } } @@ -2569,7 +2392,16 @@ HBufferImageBufferToList ( return EFI_SUCCESS; } +/** + Change the list of lines from the UI to a raw buffer. + + @param[in] Buffer The pointer to the buffer to fill. + @param[in] Bytes The size of the buffer in bytes. + + @retval EFI_SUCCESS The operation was successful. +**/ EFI_STATUS +EFIAPI HBufferImageListToBuffer ( IN VOID *Buffer, IN UINTN Bytes @@ -2599,6 +2431,7 @@ HBufferImageListToBuffer ( Line = CR (Link, HEFI_EDITOR_LINE, Link, EFI_EDITOR_LINE_LIST); + //@todo shouldn't this be an error??? if (Count + Line->Size > Bytes) { return EFI_SUCCESS; } @@ -2616,14 +2449,21 @@ HBufferImageListToBuffer ( return EFI_SUCCESS; } +/** + Move the mouse in the image buffer. + + @param[in] TextX The x-coordinate. + @param[in] TextY The y-coordinate. +**/ VOID +EFIAPI HBufferImageAdjustMousePosition ( IN INT32 TextX, IN INT32 TextY ) { - UINTN X; - UINTN Y; + UINTN TempX; + UINTN TempY; UINTN AbsX; UINTN AbsY; @@ -2632,7 +2472,7 @@ HBufferImageAdjustMousePosition ( // This function will change it to MousePosition // // - // get absolute X value + // get absolute TempX value // if (TextX >= 0) { AbsX = TextX; @@ -2640,7 +2480,7 @@ HBufferImageAdjustMousePosition ( AbsX = -TextX; } // - // get absolute Y value + // get absolute TempY value // if (TextY >= 0) { AbsY = TextY; @@ -2648,48 +2488,48 @@ HBufferImageAdjustMousePosition ( AbsY = -TextY; } - X = HBufferImage.MousePosition.Column; - Y = HBufferImage.MousePosition.Row; + TempX = HBufferImage.MousePosition.Column; + TempY = HBufferImage.MousePosition.Row; if (TextX >= 0) { - X += TextX; + TempX += TextX; } else { - if (X >= AbsX) { - X -= AbsX; + if (TempX >= AbsX) { + TempX -= AbsX; } else { - X = 0; + TempX = 0; } } if (TextY >= 0) { - Y += TextY; + TempY += TextY; } else { - if (Y >= AbsY) { - Y -= AbsY; + if (TempY >= AbsY) { + TempY -= AbsY; } else { - Y = 0; + TempY = 0; } } // // check whether new mouse column position is beyond screen // if not, adjust it // - if (X >= 10 && X <= (10 + 0x10 * 3 - 1)) { - HBufferImage.MousePosition.Column = X; - } else if (X < 10) { + if (TempX >= 10 && TempX <= (10 + 0x10 * 3 - 1)) { + HBufferImage.MousePosition.Column = TempX; + } else if (TempX < 10) { HBufferImage.MousePosition.Column = 10; - } else if (X > (10 + 0x10 * 3 - 1)) { + } else if (TempX > (10 + 0x10 * 3 - 1)) { HBufferImage.MousePosition.Column = 10 + 0x10 * 3 - 1; } // // check whether new mouse row position is beyond screen // if not, adjust it // - if (Y >= 2 && Y <= (HMainEditor.ScreenSize.Row - 4)) { - HBufferImage.MousePosition.Row = Y; - } else if (Y < 2) { + if (TempY >= 2 && TempY <= (HMainEditor.ScreenSize.Row - 4)) { + HBufferImage.MousePosition.Row = TempY; + } else if (TempY < 2) { HBufferImage.MousePosition.Row = 2; - } else if (Y > (HMainEditor.ScreenSize.Row - 4)) { + } else if (TempY > (HMainEditor.ScreenSize.Row - 4)) { HBufferImage.MousePosition.Row = (HMainEditor.ScreenSize.Row - 4); } diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/BufferImage.h b/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/BufferImage.h index d661e50524..5e637ce700 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/BufferImage.h +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/BufferImage.h @@ -188,10 +188,15 @@ HBufferImageReplace ( UINTN ); +/** + Free the current image. + + @retval EFI_SUCCESS The operation was successful. +**/ EFI_STATUS HBufferImageFree ( VOID - ) ; + ); EFI_STATUS HBufferImageDeleteCharacterFromBuffer ( diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/FileImage.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/FileImage.c index fd6387a20a..5397071b3b 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/FileImage.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/FileImage.c @@ -489,7 +489,8 @@ Returns: // // now everything is ready , you can set the new file name to filebuffer // - if (BufferTypeBackup != FileTypeFileBuffer || StringNoCaseCompare (&FileName, &HFileImage.FileName) != 0) { + if ((BufferTypeBackup != FileTypeFileBuffer && FileName != NULL) || + (FileName != NULL && HFileImage.FileName != NULL && StringNoCaseCompare (&FileName, &HFileImage.FileName) != 0)){ // // not the same // diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/HexEdit.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/HexEdit.c index 53718c7751..36c913939b 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/HexEdit.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/HexEdit.c @@ -135,8 +135,8 @@ ShellCommandRunHexEdit ( Size = ShellStrToUintn(ShellCommandLineGetRawValue(Package, 2)); } } - if (WhatToDo == FileTypeNone && ShellCommandLineGetRawValue(Package, 1) != NULL) { - Name = ShellCommandLineGetRawValue(Package, 1); + Name = ShellCommandLineGetRawValue(Package, 1); + if (WhatToDo == FileTypeNone && Name != NULL) { if (!IsValidFileName(Name)) { ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, Name); ShellStatus = SHELL_INVALID_PARAMETER; diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/MainHexEditor.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/MainHexEditor.c index 961e0cca68..58c25f81d4 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/MainHexEditor.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/MainHexEditor.c @@ -1868,9 +1868,9 @@ Returns: || ReadChange ) { MainTitleBarRefresh ( - HMainEditor.BufferImage->BufferType == FileTypeFileBuffer?HMainEditor.BufferImage->FileImage->FileName:HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Name:NULL, + HMainEditor.BufferImage->BufferType == FileTypeFileBuffer&&HMainEditor.BufferImage->FileImage!=NULL?HMainEditor.BufferImage->FileImage->FileName:HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer&&HMainEditor.BufferImage->DiskImage!=NULL?HMainEditor.BufferImage->DiskImage->Name:NULL, HMainEditor.BufferImage->BufferType, - HMainEditor.BufferImage->FileImage->ReadOnly, + (BOOLEAN)(HMainEditor.BufferImage->FileImage!=NULL?HMainEditor.BufferImage->FileImage->ReadOnly:FALSE), HMainEditor.BufferImage->Modified, HMainEditor.ScreenSize.Column, HMainEditor.ScreenSize.Row, diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/QueryTable.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/QueryTable.c index 7b7e5928bd..f3e3f5f37b 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/QueryTable.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/QueryTable.c @@ -2969,7 +2969,7 @@ QueryTable ( // if (High > Low && Key >= Low && Key <= High) { StrnCpy (Info, Table[Index].Info, InfoLen-1); - StrCat (Info, L"\n"); + StrnCat (Info, L"\n", InfoLen - StrLen(Info)); return Key; } // @@ -2977,7 +2977,7 @@ QueryTable ( // if (Table[Index].Key == Key) { StrnCpy (Info, Table[Index].Info, InfoLen-1); - StrCat (Info, L"\n"); + StrnCat (Info, L"\n", InfoLen - StrLen(Info)); return Key; } } diff --git a/ShellPkg/Library/UefiShellLevel1CommandsLib/For.c b/ShellPkg/Library/UefiShellLevel1CommandsLib/For.c index ddcfd45de3..64110099d3 100644 --- a/ShellPkg/Library/UefiShellLevel1CommandsLib/For.c +++ b/ShellPkg/Library/UefiShellLevel1CommandsLib/For.c @@ -69,6 +69,7 @@ ShellCommandRunEndFor ( { EFI_STATUS Status; BOOLEAN Found; + SCRIPT_FILE *CurrentScriptFile; Status = CommandInit(); ASSERT_EFI_ERROR(Status); @@ -86,6 +87,7 @@ ShellCommandRunEndFor ( Found = MoveToTag(GetPreviousNode, L"for", L"endfor", NULL, ShellCommandGetCurrentScriptFile(), FALSE, FALSE, FALSE); if (!Found) { + CurrentScriptFile = ShellCommandGetCurrentScriptFile(); ShellPrintHiiEx( -1, -1, @@ -94,9 +96,9 @@ ShellCommandRunEndFor ( gShellLevel1HiiHandle, L"For", L"EndFor", - ShellCommandGetCurrentScriptFile()!=NULL - &&ShellCommandGetCurrentScriptFile()->CurrentCommand!=NULL - ?ShellCommandGetCurrentScriptFile()->CurrentCommand->Line:0); + CurrentScriptFile!=NULL + && CurrentScriptFile->CurrentCommand!=NULL + ? CurrentScriptFile->CurrentCommand->Line:0); return (SHELL_NOT_FOUND); } return (SHELL_SUCCESS); @@ -421,7 +423,16 @@ ShellCommandRunFor ( Info->CurrentValue = NULL; ArgSetWalker = ArgSet; if (ArgSetWalker[0] != L'(') { - ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), gShellLevel1HiiHandle, ArgSet, ShellCommandGetCurrentScriptFile()->CurrentCommand->Line); + ShellPrintHiiEx( + -1, + -1, + NULL, + STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), + gShellLevel1HiiHandle, + ArgSet, + CurrentScriptFile!=NULL + && CurrentScriptFile->CurrentCommand!=NULL + ? CurrentScriptFile->CurrentCommand->Line:0); ShellStatus = SHELL_INVALID_PARAMETER; } else { TempSpot = StrStr(ArgSetWalker, L")"); @@ -437,7 +448,15 @@ ShellCommandRunFor ( } } if (TempSpot == NULL) { - ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), gShellLevel1HiiHandle, ArgSet, ShellCommandGetCurrentScriptFile()->CurrentCommand->Line); + ShellPrintHiiEx( + -1, + -1, + NULL, + STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), + gShellLevel1HiiHandle, + CurrentScriptFile!=NULL + && CurrentScriptFile->CurrentCommand!=NULL + ? CurrentScriptFile->CurrentCommand->Line:0); ShellStatus = SHELL_INVALID_PARAMETER; } else { *TempSpot = CHAR_NULL; @@ -446,7 +465,16 @@ ShellCommandRunFor ( ArgSetWalker++; } if (!ShellIsValidForNumber(ArgSetWalker)) { - ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), gShellLevel1HiiHandle, ArgSet, ShellCommandGetCurrentScriptFile()->CurrentCommand->Line); + ShellPrintHiiEx( + -1, + -1, + NULL, + STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), + gShellLevel1HiiHandle, + ArgSet, + CurrentScriptFile!=NULL + && CurrentScriptFile->CurrentCommand!=NULL + ? CurrentScriptFile->CurrentCommand->Line:0); ShellStatus = SHELL_INVALID_PARAMETER; } else { if (ArgSetWalker[0] == L'-') { @@ -459,7 +487,16 @@ ShellCommandRunFor ( ArgSetWalker++; } if (ArgSetWalker == NULL || *ArgSetWalker == CHAR_NULL || !ShellIsValidForNumber(ArgSetWalker)){ - ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), gShellLevel1HiiHandle, ArgSet, ShellCommandGetCurrentScriptFile()->CurrentCommand->Line); + ShellPrintHiiEx( + -1, + -1, + NULL, + STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), + gShellLevel1HiiHandle, + ArgSet, + CurrentScriptFile!=NULL + && CurrentScriptFile->CurrentCommand!=NULL + ? CurrentScriptFile->CurrentCommand->Line:0); ShellStatus = SHELL_INVALID_PARAMETER; } else { if (ArgSetWalker[0] == L'-') { @@ -479,7 +516,16 @@ ShellCommandRunFor ( } if (ArgSetWalker != NULL && *ArgSetWalker != CHAR_NULL) { if (ArgSetWalker == NULL || *ArgSetWalker == CHAR_NULL || !ShellIsValidForNumber(ArgSetWalker)){ - ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), gShellLevel1HiiHandle, ArgSet, ShellCommandGetCurrentScriptFile()->CurrentCommand->Line); + ShellPrintHiiEx( + -1, + -1, + NULL, + STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), + gShellLevel1HiiHandle, + ArgSet, + CurrentScriptFile!=NULL + && CurrentScriptFile->CurrentCommand!=NULL + ? CurrentScriptFile->CurrentCommand->Line:0); ShellStatus = SHELL_INVALID_PARAMETER; } else { if (*ArgSetWalker == L')') { @@ -492,7 +538,16 @@ ShellCommandRunFor ( } if (StrStr(ArgSetWalker, L" ") != NULL) { - ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), gShellLevel1HiiHandle, ArgSet, ShellCommandGetCurrentScriptFile()->CurrentCommand->Line); + ShellPrintHiiEx( + -1, + -1, + NULL, + STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), + gShellLevel1HiiHandle, + ArgSet, + CurrentScriptFile!=NULL + && CurrentScriptFile->CurrentCommand!=NULL + ? CurrentScriptFile->CurrentCommand->Line:0); ShellStatus = SHELL_INVALID_PARAMETER; } } @@ -512,7 +567,16 @@ ShellCommandRunFor ( } CurrentScriptFile->CurrentCommand->Data = Info; } else { - ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), gShellLevel1HiiHandle, ArgSet, ShellCommandGetCurrentScriptFile()->CurrentCommand->Line); + ShellPrintHiiEx( + -1, + -1, + NULL, + STRING_TOKEN (STR_GEN_PROBLEM_SCRIPT), + gShellLevel1HiiHandle, + ArgSet, + CurrentScriptFile!=NULL + && CurrentScriptFile->CurrentCommand!=NULL + ? CurrentScriptFile->CurrentCommand->Line:0); ShellStatus = SHELL_INVALID_PARAMETER; } } else { @@ -553,7 +617,17 @@ ShellCommandRunFor ( // find the matching endfor (we're done with the loop) // if (!MoveToTag(GetNextNode, L"endfor", L"for", NULL, CurrentScriptFile, TRUE, FALSE, FALSE)) { - ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_NO_MATCHING), gShellLevel1HiiHandle, L"EndFor", L"For", ShellCommandGetCurrentScriptFile()->CurrentCommand->Line); + ShellPrintHiiEx( + -1, + -1, + NULL, + STRING_TOKEN (STR_SYNTAX_NO_MATCHING), + gShellLevel1HiiHandle, + L"EndFor", + L"For", + CurrentScriptFile!=NULL + && CurrentScriptFile->CurrentCommand!=NULL + ? CurrentScriptFile->CurrentCommand->Line:0); ShellStatus = SHELL_DEVICE_ERROR; } if (Info->RemoveSubstAlias) { @@ -611,7 +685,17 @@ ShellCommandRunFor ( // find the matching endfor (we're done with the loop) // if (!MoveToTag(GetNextNode, L"endfor", L"for", NULL, CurrentScriptFile, TRUE, FALSE, FALSE)) { - ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_NO_MATCHING), gShellLevel1HiiHandle, L"EndFor", L"For", ShellCommandGetCurrentScriptFile()->CurrentCommand->Line); + ShellPrintHiiEx( + -1, + -1, + NULL, + STRING_TOKEN (STR_SYNTAX_NO_MATCHING), + gShellLevel1HiiHandle, + L"EndFor", + L"For", + CurrentScriptFile!=NULL + && CurrentScriptFile->CurrentCommand!=NULL + ? CurrentScriptFile->CurrentCommand->Line:0); ShellStatus = SHELL_DEVICE_ERROR; } if (Info->RemoveSubstAlias) { diff --git a/ShellPkg/Library/UefiShellLevel1CommandsLib/Goto.c b/ShellPkg/Library/UefiShellLevel1CommandsLib/Goto.c index 3e5a59c575..4d48c7f1e9 100644 --- a/ShellPkg/Library/UefiShellLevel1CommandsLib/Goto.c +++ b/ShellPkg/Library/UefiShellLevel1CommandsLib/Goto.c @@ -33,6 +33,7 @@ ShellCommandRunGoto ( SHELL_STATUS ShellStatus; CHAR16 *CompareString; UINTN Size; + SCRIPT_FILE *CurrentScriptFile; ShellStatus = SHELL_SUCCESS; CompareString = NULL; @@ -79,6 +80,7 @@ ShellCommandRunGoto ( // Check forwards and then backwards for a label... // if (!MoveToTag(GetNextNode, L"endfor", L"for", CompareString, ShellCommandGetCurrentScriptFile(), FALSE, FALSE, TRUE)) { + CurrentScriptFile = ShellCommandGetCurrentScriptFile(); ShellPrintHiiEx( -1, -1, @@ -87,9 +89,9 @@ ShellCommandRunGoto ( gShellLevel1HiiHandle, CompareString, L"Goto", - ShellCommandGetCurrentScriptFile()!=NULL - &&ShellCommandGetCurrentScriptFile()->CurrentCommand!=NULL - ?ShellCommandGetCurrentScriptFile()->CurrentCommand->Line:0); + CurrentScriptFile!=NULL + && CurrentScriptFile->CurrentCommand!=NULL + ? CurrentScriptFile->CurrentCommand->Line:0); ShellStatus = SHELL_NOT_FOUND; } FreePool(CompareString); diff --git a/ShellPkg/Library/UefiShellLevel1CommandsLib/If.c b/ShellPkg/Library/UefiShellLevel1CommandsLib/If.c index a3c4482bb3..1d83f8a246 100644 --- a/ShellPkg/Library/UefiShellLevel1CommandsLib/If.c +++ b/ShellPkg/Library/UefiShellLevel1CommandsLib/If.c @@ -825,7 +825,7 @@ ShellCommandRunIf ( BOOLEAN CurrentValue; END_TAG_TYPE Ending; END_TAG_TYPE PreviousEnding; - + SCRIPT_FILE *CurrentScriptFile; Status = CommandInit(); ASSERT_EFI_ERROR(Status); @@ -843,7 +843,8 @@ ShellCommandRunIf ( // // Make sure that an End exists. // - if (!MoveToTag(GetNextNode, L"endif", L"if", NULL, ShellCommandGetCurrentScriptFile(), TRUE, TRUE, FALSE)) { + CurrentScriptFile = ShellCommandGetCurrentScriptFile(); + if (!MoveToTag(GetNextNode, L"endif", L"if", NULL, CurrentScriptFile, TRUE, TRUE, FALSE)) { ShellPrintHiiEx( -1, -1, @@ -852,9 +853,9 @@ ShellCommandRunIf ( gShellLevel1HiiHandle, L"EnfIf", L"If", - ShellCommandGetCurrentScriptFile()!=NULL - &&ShellCommandGetCurrentScriptFile()->CurrentCommand!=NULL - ?ShellCommandGetCurrentScriptFile()->CurrentCommand->Line:0); + CurrentScriptFile!=NULL + && CurrentScriptFile->CurrentCommand!=NULL + ? CurrentScriptFile->CurrentCommand->Line:0); return (SHELL_DEVICE_ERROR); } @@ -928,7 +929,18 @@ ShellCommandRunIf ( // build up the next statement for analysis // if (!BuildNextStatement(CurrentParameter, &EndParameter, &Ending)) { - ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SYNTAX_NO_MATCHING), gShellLevel1HiiHandle, L"Then", L"If", ShellCommandGetCurrentScriptFile()->CurrentCommand->Line); + CurrentScriptFile = ShellCommandGetCurrentScriptFile(); + ShellPrintHiiEx( + -1, + -1, + NULL, + STRING_TOKEN (STR_SYNTAX_NO_MATCHING), + gShellLevel1HiiHandle, + L"Then", + L"If", + CurrentScriptFile!=NULL + && CurrentScriptFile->CurrentCommand!=NULL + ? CurrentScriptFile->CurrentCommand->Line:0); ShellStatus = SHELL_INVALID_PARAMETER; } else { // @@ -979,6 +991,7 @@ ShellCommandRunElse ( IN EFI_SYSTEM_TABLE *SystemTable ) { + SCRIPT_FILE *CurrentScriptFile; ASSERT_EFI_ERROR(CommandInit()); if (gEfiShellParametersProtocol->Argc > 1) { @@ -991,8 +1004,9 @@ ShellCommandRunElse ( return (SHELL_UNSUPPORTED); } + CurrentScriptFile = ShellCommandGetCurrentScriptFile(); - if (!MoveToTag(GetPreviousNode, L"if", L"endif", NULL, ShellCommandGetCurrentScriptFile(), FALSE, TRUE, FALSE)) { + if (!MoveToTag(GetPreviousNode, L"if", L"endif", NULL, CurrentScriptFile, FALSE, TRUE, FALSE)) { ShellPrintHiiEx( -1, -1, @@ -1001,12 +1015,12 @@ ShellCommandRunElse ( gShellLevel1HiiHandle, L"If", L"Else", - ShellCommandGetCurrentScriptFile()!=NULL - &&ShellCommandGetCurrentScriptFile()->CurrentCommand!=NULL - ?ShellCommandGetCurrentScriptFile()->CurrentCommand->Line:0); + CurrentScriptFile!=NULL + && CurrentScriptFile->CurrentCommand!=NULL + ? CurrentScriptFile->CurrentCommand->Line:0); return (SHELL_DEVICE_ERROR); } - if (!MoveToTag(GetPreviousNode, L"if", L"else", NULL, ShellCommandGetCurrentScriptFile(), FALSE, TRUE, FALSE)) { + if (!MoveToTag(GetPreviousNode, L"if", L"else", NULL, CurrentScriptFile, FALSE, TRUE, FALSE)) { ShellPrintHiiEx( -1, -1, @@ -1015,13 +1029,13 @@ ShellCommandRunElse ( gShellLevel1HiiHandle, L"If", L"Else", - ShellCommandGetCurrentScriptFile()!=NULL - &&ShellCommandGetCurrentScriptFile()->CurrentCommand!=NULL - ?ShellCommandGetCurrentScriptFile()->CurrentCommand->Line:0); + CurrentScriptFile!=NULL + && CurrentScriptFile->CurrentCommand!=NULL + ? CurrentScriptFile->CurrentCommand->Line:0); return (SHELL_DEVICE_ERROR); } - if (!MoveToTag(GetNextNode, L"endif", L"if", NULL, ShellCommandGetCurrentScriptFile(), FALSE, FALSE, FALSE)) { + if (!MoveToTag(GetNextNode, L"endif", L"if", NULL, CurrentScriptFile, FALSE, FALSE, FALSE)) { ShellPrintHiiEx( -1, -1, @@ -1030,9 +1044,9 @@ ShellCommandRunElse ( gShellLevel1HiiHandle, L"EndIf", "Else", - ShellCommandGetCurrentScriptFile()!=NULL - &&ShellCommandGetCurrentScriptFile()->CurrentCommand!=NULL - ?ShellCommandGetCurrentScriptFile()->CurrentCommand->Line:0); + CurrentScriptFile!=NULL + && CurrentScriptFile->CurrentCommand!=NULL + ? CurrentScriptFile->CurrentCommand->Line:0); return (SHELL_DEVICE_ERROR); } @@ -1052,6 +1066,7 @@ ShellCommandRunEndIf ( IN EFI_SYSTEM_TABLE *SystemTable ) { + SCRIPT_FILE *CurrentScriptFile; ASSERT_EFI_ERROR(CommandInit()); if (gEfiShellParametersProtocol->Argc > 1) { @@ -1064,7 +1079,8 @@ ShellCommandRunEndIf ( return (SHELL_UNSUPPORTED); } - if (!MoveToTag(GetPreviousNode, L"if", L"endif", NULL, ShellCommandGetCurrentScriptFile(), FALSE, TRUE, FALSE)) { + CurrentScriptFile = ShellCommandGetCurrentScriptFile(); + if (!MoveToTag(GetPreviousNode, L"if", L"endif", NULL, CurrentScriptFile, FALSE, TRUE, FALSE)) { ShellPrintHiiEx( -1, -1, @@ -1073,9 +1089,9 @@ ShellCommandRunEndIf ( gShellLevel1HiiHandle, L"If", L"EndIf", - ShellCommandGetCurrentScriptFile()!=NULL - &&ShellCommandGetCurrentScriptFile()->CurrentCommand!=NULL - ?ShellCommandGetCurrentScriptFile()->CurrentCommand->Line:0); + CurrentScriptFile!=NULL + && CurrentScriptFile->CurrentCommand!=NULL + ? CurrentScriptFile->CurrentCommand->Line:0); return (SHELL_DEVICE_ERROR); } diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c index e7d19c9bed..68130d4db8 100644 --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c @@ -650,7 +650,7 @@ PerformMappingDisplay( &BufferSize, HandleBuffer); } - if (!EFI_ERROR(Status)) { + if (!EFI_ERROR(Status) && HandleBuffer != NULL) { // // Get the map name(s) for each one. // diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Vol.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/Vol.c index 53b7770dfe..51cf33f1ba 100644 --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Vol.c +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Vol.c @@ -30,7 +30,7 @@ EFIAPI HandleVol( IN CONST CHAR16 *Path, IN CONST BOOLEAN Delete, - IN CONST CHAR16 *Name + IN CONST CHAR16 *Name OPTIONAL ) { EFI_STATUS Status; @@ -45,6 +45,7 @@ HandleVol( ShellStatus = SHELL_SUCCESS; if ( + Name != NULL && ( StrStr(Name, L"%") != NULL || StrStr(Name, L"^") != NULL || StrStr(Name, L"*") != NULL || @@ -60,7 +61,7 @@ HandleVol( StrStr(Name, L">") != NULL || StrStr(Name, L"?") != NULL || StrStr(Name, L"/") != NULL || - StrStr(Name, L" ") != NULL + StrStr(Name, L" ") != NULL ) ){ ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel2HiiHandle, Name); return (SHELL_INVALID_PARAMETER); @@ -150,6 +151,8 @@ HandleVol( } gEfiShellProtocol->CloseFile(ShellFileHandle); + + ASSERT(SysInfo != NULL); // // print VolumeInfo table @@ -200,6 +203,7 @@ ShellCommandRunVol ( CHAR16 *FullPath; CHAR16 *TempSpot; UINTN Length; + CONST CHAR16 *NewName; Length = 0; ProblemParam = NULL; @@ -266,20 +270,21 @@ ShellCommandRunVol ( StrnCatGrow(&FullPath, &Length, PathName, 0); StrnCatGrow(&FullPath, &Length, L":\\", 0); DeleteMode = ShellCommandLineGetFlag(Package, L"-d"); + NewName = ShellCommandLineGetValue(Package, L"-n"); if (DeleteMode && ShellCommandLineGetFlag(Package, L"-n")) { ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CON), gShellLevel2HiiHandle); ShellStatus = SHELL_INVALID_PARAMETER; - } else if (ShellCommandLineGetFlag(Package, L"-n") && ShellCommandLineGetValue(Package, L"-n") == NULL) { + } else if (ShellCommandLineGetFlag(Package, L"-n") && NewName == NULL) { ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellLevel2HiiHandle, L"-n"); ShellStatus = SHELL_INVALID_PARAMETER; - } else if (ShellCommandLineGetValue(Package, L"-n") != NULL && StrLen(ShellCommandLineGetValue(Package, L"-n")) > 11) { + } else if (NewName != NULL && StrLen(NewName) > 11) { ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_VAL), gShellLevel2HiiHandle, L"-n"); ShellStatus = SHELL_INVALID_PARAMETER; } else if (ShellStatus == SHELL_SUCCESS) { ShellStatus = HandleVol( FullPath, DeleteMode, - ShellCommandLineGetValue(Package, L"-n") + NewName ); } } diff --git a/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ifconfig.c b/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ifconfig.c index 3bfdf847de..d4326448f6 100644 --- a/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ifconfig.c +++ b/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ifconfig.c @@ -781,9 +781,14 @@ IfconfigSetNicAddrByHii ( if (ConfigHdr != NULL) { Length = StrLen (ConfigHdr); } else { - Length = 0; + ShellStatus = SHELL_OUT_OF_RESOURCES; + goto ON_EXIT; } ConfigResp = AllocateZeroPool ((Length + NIC_ITEM_CONFIG_SIZE * 2 + 100) * sizeof (CHAR16)); + if (ConfigResp == NULL) { + ShellStatus = SHELL_OUT_OF_RESOURCES; + goto ON_EXIT; + } if (ConfigHdr != NULL) { StrCpy (ConfigResp, ConfigHdr); }