]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Fixed potential security issue introduced by SmramCpuNvs variable.
authorShifei Lu <shifeix.a.lu@intel.com>
Tue, 23 Jun 2015 07:22:23 +0000 (07:22 +0000)
committerzwei4 <zwei4@Edk2>
Tue, 23 Jun 2015 07:22:23 +0000 (07:22 +0000)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Shifei Lu <shifeix.a.lu@intel.com>
Reviewed-by: David Wei <david.wei@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17683 6f19259b-4bc3-4df7-8a09-765794883524

Vlv2TbltDevicePkg/PlatformPkgGccX64.dsc
Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
Vlv2TbltDevicePkg/PlatformPkgX64.dsc
Vlv2TbltDevicePkg/SmramSaveInfoHandlerSmm/SmramSaveInfoHandlerSmm.c
Vlv2TbltDevicePkg/SmramSaveInfoHandlerSmm/SmramSaveInfoHandlerSmm.inf

index 7daf86cbb13e19c8c68d3cfd72b0b60022dcf05e..b3f47ddfd546dbde97e1566f4ec7f4d954976eab 100644 (file)
   gEfiCpuTokenSpaceGuid.PcdCpuHotPlugDataAddress|0
   gEfiCpuTokenSpaceGuid.PcdCpuCallbackSignal|0
   gEfiCpuTokenSpaceGuid.PcdCpuConfigContextBuffer|0
+  gEfiVLVTokenSpaceGuid.PcdCpuLockBoxDataAddress|0
+  gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0
+  gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0
 
 [Components.IA32]
 
index f582abb5e544d158391869fef5f2a78cfb144626..90ead2e79d9422438f3d7df48d381c88572e1f8a 100644 (file)
   gEfiCpuTokenSpaceGuid.PcdCpuHotPlugDataAddress|0
   gEfiCpuTokenSpaceGuid.PcdCpuCallbackSignal|0
   gEfiCpuTokenSpaceGuid.PcdCpuConfigContextBuffer|0
+  gEfiVLVTokenSpaceGuid.PcdCpuLockBoxDataAddress|0
+  gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0
+  gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0
 
 [Components.IA32]
 
index c5777eddfb1e2c0c6ab48af8b5f9b8d2660630ad..344bbc9a4820b01d077abf2199dbff133fc3dd7a 100644 (file)
   gEfiCpuTokenSpaceGuid.PcdCpuHotPlugDataAddress|0
   gEfiCpuTokenSpaceGuid.PcdCpuCallbackSignal|0
   gEfiCpuTokenSpaceGuid.PcdCpuConfigContextBuffer|0
+  gEfiVLVTokenSpaceGuid.PcdCpuLockBoxDataAddress|0
+  gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0
+  gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0
 
 [Components.IA32]
 
index a48de262dbcea028b049a64f88fef14757779276..790c10c32974603eec40b7505071eb865a8653ca 100644 (file)
@@ -3,7 +3,7 @@
 \r
   This driver is for ECP platforms.\r
 \r
-  Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.<BR>\r
                                                                                    \r\r
   This program and the accompanying materials are licensed and made available under\r\r
   the terms and conditions of the BSD License that accompanies this distribution.  \r\r
@@ -27,6 +27,7 @@
 #include <Protocol/SmmSwDispatch.h>\r
 #include <Protocol/SmmReadyToLock.h>\r
 #include <Protocol/SmmControl.h>\r
+#include <Guid/Vlv2DeviceRefCodePkgTokenSpace.h>\r
 \r
 #define SMM_FROM_SMBASE_DRIVER        0x55\r
 #define SMM_FROM_CPU_DRIVER_SAVE_INFO 0x81\r
@@ -61,29 +62,15 @@ SmramSaveInfoHandler (
   IN  EFI_SMM_SW_DISPATCH_CONTEXT   *DispatchContext\r
   )\r
 {\r
-  EFI_STATUS Status;\r
-  UINT64     VarData[3];\r
-  UINTN      VarSize;\r
-\r
   ASSERT (DispatchContext != NULL);\r
   ASSERT (DispatchContext->SwSmiInputValue == SMM_FROM_SMBASE_DRIVER);\r
 \r
   if (!mLocked && IoRead8 (mSmiDataRegister) == SMM_FROM_CPU_DRIVER_SAVE_INFO) {\r
-    VarSize = sizeof (VarData);\r
-    Status = gRT->GetVariable (\r
-                    L"SmramCpuNvs",\r
-                    &mSmramCpuNvsHeaderGuid,\r
-                    NULL,\r
-                    &VarSize,\r
-                    VarData\r
-                    );\r
-    if (!EFI_ERROR (Status) && VarSize == sizeof (VarData)) {\r
       CopyMem (\r
-        (VOID *)(UINTN)(VarData[0]),\r
-        (VOID *)(UINTN)(VarData[1]),\r
-        (UINTN)(VarData[2])\r
+        (VOID *)(UINTN)(PcdGetEx64 (&gEfiVLVTokenSpaceGuid, PcdCpuLockBoxDataAddress)),\r
+        (VOID *)(UINTN)(PcdGetEx64 (&gEfiVLVTokenSpaceGuid, PcdCpuSmramCpuDataAddress)),\r
+        (UINTN)(PcdGetEx64 (&gEfiVLVTokenSpaceGuid, PcdCpuLockBoxSize))\r
         );\r
-    }\r
   }\r
 }\r
 \r
index 82eec0152b9e1daa84d185f22c07a332b5ca0593..1d19b78e20bd8a1b4dbe92dcd5b7e4c775b9a9cf 100644 (file)
@@ -2,7 +2,7 @@
 #\r
 #  A helper driver to save information to SMRAM after SMRR is enabled.\r
 #\r
-#  Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>\r
+#  Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.<BR>\r
 #                                                                                  \r\r
 # This program and the accompanying materials are licensed and made available under\r\r
 # the terms and conditions of the BSD License that accompanies this distribution.  \r\r
@@ -39,6 +39,7 @@
 [Packages]\r
   MdePkg/MdePkg.dec\r
   IntelFrameworkPkg/IntelFrameworkPkg.dec\r
+  Vlv2DeviceRefCodePkg/Vlv2DeviceRefCodePkg.dec\r
 \r
 [LibraryClasses]\r
   UefiDriverEntryPoint\r
   gEfiSmmControlProtocolGuid         ## CONSUMED\r
   gEfiSmmReadyToLockProtocolGuid     ## CONSUMED\r
 \r
+[Pcd.common]\r
+  gEfiVLVTokenSpaceGuid.PcdCpuLockBoxDataAddress\r
+  gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress\r
+  gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize\r
+  \r
 [Depex]\r
   gEfiSmmSwDispatchProtocolGuid AND\r
   gEfiSmmControlProtocolGuid\r