]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDebug1CommandsLib/Bcfg.c
ShellPkg: Fixed build error 'variable set but not used'
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / Bcfg.c
index d6c3ef4e1536f3850ba7f0b64a7d6709cfeabaae..c26fad7b38b2b52ed55e9f400b45c59fc59824df 100644 (file)
@@ -47,6 +47,16 @@ typedef struct {
   CONST CHAR16          *OptData;\r
 } BGFG_OPERATION;\r
 \r
+/**\r
+  Get the actual number of entries in EFI_KEY_OPTION.Keys, from 0-3.\r
+\r
+  @param   KeyOption  Pointer to the EFI_KEY_OPTION structure. \r
+\r
+  @return  Actual number of entries in EFI_KEY_OPTION.Keys.\r
+**/\r
+#define KEY_OPTION_INPUT_KEY_COUNT(KeyOption) \\r
+  (((KeyOption)->KeyData & EFI_KEY_OPTION_INPUT_KEY_COUNT_MASK) >> LowBitSet32 (EFI_KEY_OPTION_INPUT_KEY_COUNT_MASK))\r
+\r
 /**\r
   Update the optional data for a boot or driver option.\r
 \r
@@ -107,6 +117,7 @@ UpdateOptionalDataDebug1(
     //\r
     // Allocate new struct and discard old optional data.\r
     //\r
+    ASSERT (OriginalData != NULL);\r
     OriginalOptionDataSize  = sizeof(UINT32) + sizeof(UINT16) + StrSize(((CHAR16*)(OriginalData + sizeof(UINT32) + sizeof(UINT16))));\r
     OriginalOptionDataSize += (*(UINT16*)(OriginalData + sizeof(UINT32)));\r
     OriginalOptionDataSize -= OriginalSize;\r
@@ -139,8 +150,8 @@ UpdateOptionalDataDebug1(
 /**\r
   This function will get a CRC for a boot option.\r
 \r
-  @param[in, out] Crc     The CRC value to return.\r
-  @param[in]      Index   The boot option index to CRC.\r
+  @param[in, out] Crc         The CRC value to return.\r
+  @param[in]      BootIndex   The boot option index to CRC.\r
 \r
   @retval EFI_SUCCESS           The CRC was sucessfully returned.\r
   @retval other                 A error occured.\r
@@ -282,7 +293,7 @@ BcfgAddDebug1(
   EFI_STATUS                Status;\r
   EFI_DEVICE_PATH_PROTOCOL  *DevicePath;\r
   EFI_DEVICE_PATH_PROTOCOL  *FilePath;\r
-  EFI_DEVICE_PATH_PROTOCOL  *FileNode;\r
+  /* EFI_DEVICE_PATH_PROTOCOL  *FileNode; */\r
   CHAR16                    *Str;\r
   UINT8                     *TempByteBuffer;\r
   UINT8                     *TempByteStart;\r
@@ -317,7 +328,7 @@ BcfgAddDebug1(
 \r
   Str             = NULL;\r
   FilePath        = NULL;\r
-  FileNode        = NULL;\r
+  /* FileNode        = NULL; */\r
   FileList        = NULL;\r
   Handles         = NULL;\r
   ShellStatus     = SHELL_SUCCESS;\r
@@ -779,6 +790,11 @@ BcfgAddOptDebug1(
       ShellStatus = SHELL_INVALID_PARAMETER;\r
     } else {\r
       FileName = StrnCatGrow(&FileName, NULL, Walker+1, 0);\r
+      if (FileName == NULL) {\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellDebug1HiiHandle);\r
+        ShellStatus = SHELL_OUT_OF_RESOURCES;\r
+        return (ShellStatus);\r
+      }\r
       Temp2 = StrStr(FileName, L"\"");\r
       ASSERT(Temp2 != NULL);\r
       Temp2[0] = CHAR_NULL;\r
@@ -826,7 +842,7 @@ BcfgAddOptDebug1(
           ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, Walker);\r
           ShellStatus = SHELL_INVALID_PARAMETER;\r
         }\r
-        NewKeyOption.KeyData.PackedValue = (UINT32)Intermediate;\r
+        NewKeyOption.KeyData = (UINT32)Intermediate;\r
         Temp = StrStr(Walker, L" ");\r
         if (Temp != NULL) {\r
           Walker = Temp;\r
@@ -841,13 +857,13 @@ BcfgAddOptDebug1(
         // Now we know how many EFI_INPUT_KEY structs we need to attach to the end of the EFI_KEY_OPTION struct.  \r
         // Re-allocate with the added information.\r
         //\r
-        KeyOptionBuffer = AllocateCopyPool(sizeof(EFI_KEY_OPTION) + (sizeof(EFI_KEY_DATA) * NewKeyOption.KeyData.Options.InputKeyCount), &NewKeyOption);\r
+        KeyOptionBuffer = AllocateCopyPool(sizeof(EFI_KEY_OPTION) + (sizeof(EFI_KEY_DATA) * KEY_OPTION_INPUT_KEY_COUNT (&NewKeyOption)), &NewKeyOption);\r
         if (KeyOptionBuffer == NULL) {\r
           ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_MEM), gShellDebug1HiiHandle);\r
           ShellStatus = SHELL_OUT_OF_RESOURCES;\r
         }\r
       }\r
-      for (LoopCounter = 0 ; ShellStatus == SHELL_SUCCESS && LoopCounter < KeyOptionBuffer->KeyData.Options.InputKeyCount; LoopCounter++) {\r
+      for (LoopCounter = 0 ; ShellStatus == SHELL_SUCCESS && LoopCounter < KEY_OPTION_INPUT_KEY_COUNT (&NewKeyOption); LoopCounter++) {\r
         //\r
         // ScanCode\r
         //\r
@@ -913,7 +929,7 @@ BcfgAddOptDebug1(
           VariableName,\r
           (EFI_GUID*)&gEfiGlobalVariableGuid,\r
           EFI_VARIABLE_NON_VOLATILE|EFI_VARIABLE_BOOTSERVICE_ACCESS|EFI_VARIABLE_RUNTIME_ACCESS,\r
-          sizeof(EFI_KEY_OPTION) + (sizeof(EFI_KEY_DATA) * NewKeyOption.KeyData.Options.InputKeyCount),\r
+          sizeof(EFI_KEY_OPTION) + (sizeof(EFI_KEY_DATA) * KEY_OPTION_INPUT_KEY_COUNT (&NewKeyOption)),\r
           KeyOptionBuffer);\r
         if (EFI_ERROR(Status)) {\r
           ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellDebug1HiiHandle, VariableName, Status);\r
@@ -934,33 +950,37 @@ BcfgAddOptDebug1(
       //\r
       // Open the file and populate the data buffer.\r
       //\r
-      ShellStatus = ShellOpenFileByName(\r
+      Status = ShellOpenFileByName(\r
         FileName,\r
         &FileHandle,\r
         EFI_FILE_MODE_READ,\r
         0);\r
-      if (ShellStatus == SHELL_SUCCESS) {\r
-        ShellStatus = ShellGetFileSize(FileHandle, &Intermediate);\r
+      if (!EFI_ERROR(Status)) {\r
+        Status = ShellGetFileSize(FileHandle, &Intermediate);\r
       }\r
       Data = AllocateZeroPool((UINTN)Intermediate);\r
       if (Data == NULL) {\r
         ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_MEM), gShellDebug1HiiHandle);\r
         ShellStatus = SHELL_OUT_OF_RESOURCES;\r
       }\r
-      if (ShellStatus == SHELL_SUCCESS) {\r
-        ShellStatus = ShellReadFile(FileHandle, (UINTN *)&Intermediate, Data);\r
+      if (!EFI_ERROR(Status)) {\r
+        Status = ShellReadFile(FileHandle, (UINTN *)&Intermediate, Data);\r
       }\r
     } else {\r
       Intermediate = StrSize(Data);\r
     }\r
 \r
-    if (ShellStatus == SHELL_SUCCESS && Data != NULL) {\r
+    if (!EFI_ERROR(Status) && ShellStatus == SHELL_SUCCESS && Data != NULL) {\r
       Status = UpdateOptionalDataDebug1(CurrentOrder[OptionIndex], (UINTN)Intermediate, (UINT8*)Data, Target);\r
       if (EFI_ERROR(Status)) {\r
         ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellDebug1HiiHandle, VariableName, Status);\r
         ShellStatus = SHELL_INVALID_PARAMETER;\r
       }   \r
     }\r
+    if (EFI_ERROR(Status) && ShellStatus == SHELL_SUCCESS) {\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_BCFG_SET_VAR_FAIL), gShellDebug1HiiHandle, VariableName, Status);\r
+      ShellStatus = SHELL_INVALID_PARAMETER;\r
+    }   \r
   }\r
 \r
   SHELL_FREE_NON_NULL(Data);\r