]> git.proxmox.com Git - mirror_edk2.git/commitdiff
check memory allocations for success.
authorjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 4 Apr 2011 21:41:24 +0000 (21:41 +0000)
committerjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 4 Apr 2011 21:41:24 +0000 (21:41 +0000)
check pointer before access.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11503 6f19259b-4bc3-4df7-8a09-765794883524

ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/FileBuffer.c
ShellPkg/Library/UefiShellDebug1CommandsLib/SetVar.c
ShellPkg/Library/UefiShellLevel1CommandsLib/For.c
ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.uni
ShellPkg/Library/UefiShellLevel2CommandsLib/Vol.c

index 82238479244a594070ec00b2137748e11f511c76..8f7c870bb12cfa5a951a6a920c031638ce383d88 100644 (file)
@@ -2760,7 +2760,7 @@ FileBufferMovePosition (
       //\r
       FileBuffer.FilePosition.Column = NewFilePosCol;\r
       if (ColGap < 0) {\r
-        Abs = -ColGap;\r
+        Abs = (UINTN)(-ColGap);\r
         FileBuffer.DisplayPosition.Column -= Abs;\r
       } else {\r
         FileBuffer.DisplayPosition.Column += ColGap;\r
index afccf7bd5821aa0a7740ae73225e5fb87387a1c5..34eb6af8ac80c77051fbcd3420b71f0999ecd694 100644 (file)
@@ -205,15 +205,20 @@ ShellCommandRunSetVar (
           Data++;\r
           Data++;\r
           Buffer = AllocateZeroPool(StrSize(Data));\r
-          UnicodeSPrint(Buffer, StrSize(Data), L"%s", Data);\r
-          ((CHAR16*)Buffer)[StrLen(Buffer)-1] = CHAR_NULL;\r
-\r
-          Status = gRT->SetVariable((CHAR16*)VariableName, &Guid, Attributes, StrSize(Buffer)-sizeof(CHAR16), Buffer);\r
-          if (EFI_ERROR(Status)) {\r
-            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SETVAR_ERROR_SET), gShellDebug1HiiHandle, &Guid, VariableName, Status);\r
-            ShellStatus = SHELL_ACCESS_DENIED;\r
+          if (Buffer == NULL) {\r
+            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellDebug1HiiHandle);\r
+            ShellStatus = SHELL_OUT_OF_RESOURCES;\r
           } else {\r
-            ASSERT(ShellStatus == SHELL_SUCCESS);\r
+            UnicodeSPrint(Buffer, StrSize(Data), L"%s", Data);\r
+            ((CHAR16*)Buffer)[StrLen(Buffer)-1] = CHAR_NULL;\r
+\r
+            Status = gRT->SetVariable((CHAR16*)VariableName, &Guid, Attributes, StrSize(Buffer)-sizeof(CHAR16), Buffer);\r
+            if (EFI_ERROR(Status)) {\r
+              ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SETVAR_ERROR_SET), gShellDebug1HiiHandle, &Guid, VariableName, Status);\r
+              ShellStatus = SHELL_ACCESS_DENIED;\r
+            } else {\r
+              ASSERT(ShellStatus == SHELL_SUCCESS);\r
+            }\r
           }\r
         } else if (StrnCmp(Data, L"--", 2) == 0) {\r
           //\r
index 64110099d36d8f39f08db98bbd0cd77a9103c6e9..b8e4805d922e4a81068271a527ad90ad1c7cc7a5 100644 (file)
@@ -565,7 +565,9 @@ ShellCommandRunFor (
           Info->RemoveSubstAlias  = TRUE;\r
         }\r
       }\r
-      CurrentScriptFile->CurrentCommand->Data = Info;\r
+      if (CurrentScriptFile->CurrentCommand != NULL) {\r
+        CurrentScriptFile->CurrentCommand->Data = Info;\r
+      }\r
     } else {\r
       ShellPrintHiiEx(\r
         -1, \r
index f9c11811da2d78f41c9238cc26a4b28a517525c4..428d8ddaecbd8fd4431b7cdba744f513d3a8d511 100644 (file)
Binary files a/ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.uni and b/ShellPkg/Library/UefiShellLevel2CommandsLib/UefiShellLevel2CommandsLib.uni differ
index 51cf33f1ba788aaa8e137affd423cf87809aea3e..9300d5ec35a1f46cec9594b90ac5e7d92705d185 100644 (file)
@@ -113,14 +113,20 @@ HandleVol(
     Size2 = StrSize(SysInfo->VolumeLabel);\r
     if (Size1 > Size2) {\r
       SysInfo = ReallocatePool((UINTN)SysInfo->Size, (UINTN)SysInfo->Size + Size1 - Size2, SysInfo);\r
+      if (SysInfo == NULL) {\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellLevel2HiiHandle);\r
+        ShellStatus = SHELL_OUT_OF_RESOURCES;\r
+      } \r
+    }\r
+    if (SysInfo != NULL) {\r
+      StrCpy ((CHAR16 *) SysInfo->VolumeLabel, Name);\r
+      SysInfo->Size = SIZE_OF_EFI_FILE_SYSTEM_INFO + Size1;\r
+      Status = EfiFpHandle->SetInfo(\r
+        EfiFpHandle,\r
+        &gEfiFileSystemInfoGuid,\r
+        (UINTN)SysInfo->Size,\r
+        SysInfo);\r
     }\r
-    StrCpy ((CHAR16 *) SysInfo->VolumeLabel, Name);\r
-    SysInfo->Size = SIZE_OF_EFI_FILE_SYSTEM_INFO + Size1;\r
-    Status = EfiFpHandle->SetInfo(\r
-      EfiFpHandle,\r
-      &gEfiFileSystemInfoGuid,\r
-      (UINTN)SysInfo->Size,\r
-      SysInfo);\r
   }  \r
 \r
   FreePool(SysInfo);\r
@@ -154,22 +160,24 @@ HandleVol(
   \r
   ASSERT(SysInfo != NULL);\r
 \r
-  //\r
-  // print VolumeInfo table\r
-  //\r
-  ShellPrintHiiEx (\r
-    0,\r
-    gST->ConOut->Mode->CursorRow,\r
-    NULL,\r
-    STRING_TOKEN (STR_VOL_VOLINFO),\r
-    gShellLevel2HiiHandle,\r
-    SysInfo->VolumeLabel,\r
-    SysInfo->ReadOnly?L"r":L"rw",\r
-    SysInfo->VolumeSize,\r
-    SysInfo->FreeSpace,\r
-    SysInfo->BlockSize\r
-   );\r
-  SHELL_FREE_NON_NULL(SysInfo);\r
+  if (SysInfo != NULL) {\r
+    //\r
+    // print VolumeInfo table\r
+    //\r
+    ShellPrintHiiEx (\r
+      0,\r
+      gST->ConOut->Mode->CursorRow,\r
+      NULL,\r
+      STRING_TOKEN (STR_VOL_VOLINFO),\r
+      gShellLevel2HiiHandle,\r
+      SysInfo->VolumeLabel,\r
+      SysInfo->ReadOnly?L"r":L"rw",\r
+      SysInfo->VolumeSize,\r
+      SysInfo->FreeSpace,\r
+      SysInfo->BlockSize\r
+     );\r
+    SHELL_FREE_NON_NULL(SysInfo);\r
+  }\r
 \r
   return (ShellStatus);\r
 }\r