lzeng14
5e5bb2a9ba
1. Fix TOCTOU issue in VariableSmm, FtwSmm, FpdtSmm, SmmCorePerformance SMM handler. For VariableSmm, pre-allocate a mVariableBufferPayload buffer with mVariableBufferPayloadSize(match with mVariableBufferPayloadSize in VariableSmmRuntimeDxe) to hold communicate buffer payload to avoid TOCTOU issue.
...
2. Add check to ensure CommBufferPayloadSize not exceed mVariableBufferPayloadSize or is enough to hold function structure in VariableSmm and FtwSmm.
3. Align FtwGetLastWrite() in FaultTolerantWriteSmmDxe.c to FtwGetLastWrite() in FaultTolerantWrite.c.
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14325 6f19259b-4bc3-4df7-8a09-765794883524
2013-05-07 05:38:32 +00:00
lzeng14
9d00d20ed4
1. Use the check IsAddressValid() to prevent SMM communication buffer overflow in SmmVariable, FtwSmm, FpdtSmm, SmmCorePerformance and SmmBaseHelper, and add check to prevent InfoSize overflows in SmmVariableHandler.
...
2. Refine the debug message.
3. Add check to make sure the input VariableName is A Null-terminated string.
4. Use local variable to hold StrSize (VariableName) to avoid duplicated StrSize calculation.
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Chao Zhang <chao.b.zhang@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14317 6f19259b-4bc3-4df7-8a09-765794883524
2013-04-25 10:49:45 +00:00
czhang46
56251c669f
Fix potential overflow for SetVariable interface
...
Signed-off-by: Chao Zhang <chao.b.zhang@intel.com>
Reviewed-by : Guo Dong <dong.guo@intel.com>
Reviewed-by : Siyuan Fu <siyuan.fu@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14305 6f19259b-4bc3-4df7-8a09-765794883524
2013-04-22 08:52:58 +00:00
czhang46
d17c4eac56
Fix a potential SMM memory dump issue. If pass communication buffer with DataBuffer to SMM SetVariable which is big enough to cover SMM range. Then GetVariable can dump SMM memory contents. Add more range check for SetVariable
...
Signed-off-by: Chao Zhang <chao.b.zhang@intel.com>
Reviewed-by : Dong Guo <guo.dong@intel.com>
Reviewed-by : Jiewen Yao <jiewen.yao@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14292 6f19259b-4bc3-4df7-8a09-765794883524
2013-04-19 01:35:02 +00:00
czhang46
3a146f2a7d
Fix SMM Variable driver stack GetVariable return INVALID_PARAMETER when DataSize is bigger than SMM communication buffer.
...
Signed-off-by: Chao Zhang <chao.b.zhang@intel.com>
Reviewed-by : Dong Guo <guo.dong@intel.com>
Reviewed-by : Fu Siyuan <siyuan.fu@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14276 6f19259b-4bc3-4df7-8a09-765794883524
2013-04-15 01:56:31 +00:00
czhang46
0c55190f40
Update SMM variable DXE driver GetNextVariable interface to comply with UEFI spec
...
VariableNameSize is the returned buffer size. GetNextVariable should behavior correct if it is bigger than SMM communication buffer or less than string size of VariableName.
Signed-off-by: Chao Zhang <chao.b.zhang@intel.com>
Reviewed-by : Dong Guo <guo.dong@intel.com>
Reviewed-by : Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by : Zeng Star <star.zeng@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14258 6f19259b-4bc3-4df7-8a09-765794883524
2013-04-12 05:59:11 +00:00
lzeng14
3588bb3529
If DataSize or VariableNameSize is near MAX_ADDRESS, this can cause the computed PayLoadSize to overflow to a small value and pass the check in InitCommunicateBuffer(). To protect against this vulnerability, check DataSize and VariableNameSize to make sure PayloadSize doesn't overflow.
...
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14252 6f19259b-4bc3-4df7-8a09-765794883524
2013-04-08 06:56:08 +00:00
lzeng14
932e0f6628
Variables with state VAR_ADDED&VAR_IN_DELETED_TRANSITION should be considered as valid variables if there is no duplicated ones with VAR_ADDED state.
...
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14085 6f19259b-4bc3-4df7-8a09-765794883524
2013-01-25 06:17:43 +00:00
lzeng14
0cc565deac
Add NULL pointer check.
...
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14084 6f19259b-4bc3-4df7-8a09-765794883524
2013-01-25 04:48:41 +00:00
lzeng14
23b0693579
1. Update the logic of UpdateVariable() for updating variable from:
...
set old variable to IN_DELETED_TRANSITION -> check if reclaim is needed(If yes, do reclaim) -> add new variable -> set old variable to DELETED if no reclaim happened.
to:
set old variable to IN_DELETED_TRANSITION -> check if reclaim is needed(If yes, do reclaim) -> add new variable -> set old variable to DELETED.
2. Update UpdateVariable() to correctly handle the case "both ADDED and IN_DELETED_TRANSITION variable are present", and delete both old ADDED and IN_DELETED_TRANSITION variable when deleting or updating variable.
3. Update VariableServiceGetNextVariableName() to return the valid IN_DELETED_TRANSITION variable if only IN_DELETED_TRANSITION variable is present.
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14065 6f19259b-4bc3-4df7-8a09-765794883524
2013-01-18 01:12:32 +00:00
lzeng14
aab9212fa9
Fix the issue that RuntimeServiceQueryVariableInfo() in VariableSmmRuntimeDxe always return EFI_SUCCESS.
...
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14050 6f19259b-4bc3-4df7-8a09-765794883524
2013-01-15 06:43:24 +00:00
lzeng14
6ed1ec5946
Add the TPL raise/restore code for VariableSmmRuntimeDxe to avoid variable services reentry.
...
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14038 6f19259b-4bc3-4df7-8a09-765794883524
2013-01-08 02:07:14 +00:00
lzeng14
335e268133
1. Don't assume that flush the HOB variable to flash must be successful.
...
2. When no DELETED variable found, no variable space could be reclaimed, so just give some debug info and return EFI_SUCCESS.
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14029 6f19259b-4bc3-4df7-8a09-765794883524
2013-01-04 12:21:59 +00:00
lzeng14
3f5c168fa8
Use SMM_VARIABLE_COMMUNICATE_HEADER_SIZE instead of OFFSET_OF (SMM_VARIABLE_COMMUNICATE_HEADER, Data).
...
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Ting Ye <ting.ye@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13993 6f19259b-4bc3-4df7-8a09-765794883524
2012-12-12 14:12:49 +00:00
erictian
a326830d70
MdeModulePkg: eliminate all implicit library dependencies for all modules in MdeModulePkg on PcdLib
...
Signed-off-by: Tian Feng <feng.tian@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13909 6f19259b-4bc3-4df7-8a09-765794883524
2012-11-01 06:59:25 +00:00
erictian
d294b9a4b7
MdeModulePkg/VariableSmm: Fix a VariableSmm bug when reading variable with size 0.
...
Signed-off-by: Tian, Feng <feng.tian@intel.com>
Reviewed-by: Zhang, Chao <chao.b.zhang@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13725 6f19259b-4bc3-4df7-8a09-765794883524
2012-09-12 08:24:10 +00:00
lzeng14
8f3a9e5862
LastVariableOffset is wrongly set to 0 when FtwVariableSpace() fails. Recalculate the HwErrVariableTotalSize, HwErrVariableTotalSize and LastVariableOffset when FtwVariableSpace() fails.
...
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Guo Dong <guo.dong@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13593 6f19259b-4bc3-4df7-8a09-765794883524
2012-08-06 03:20:10 +00:00
sfu5
876ac39540
Return EFI_UNSUPPORTED if READY_TO_BOOT function is invoked at SMM runtime.
...
Signed-off-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Dong Guo <guo.dong@intel.com>
Reviewed-by: Ye Ting <ting.ye@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13535 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-17 08:21:42 +00:00
sfu5
eb96e4f281
Fix a buffer overflow bug in VariableSmm driver.
...
Signed-off-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Dong Guo <guo.dong@intel.com>
Reviewed-by: Zhang, Chao <chao.b.zhang@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13534 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-17 08:07:29 +00:00
czhang46
2445a70e62
Add SMRAM range check to variable SMM SMI handler.
...
Signed-off-by: Chao Zhang <chao.b.zhang@intel.com>
Reviewed-by: Fu, Siyuan<siyuan.fu@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13530 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-13 05:15:06 +00:00
ydong10
96277f7402
Include read data buffer in CommBufferSize when calculate the buffer size.
...
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Chao Zhang <chao.b.zhang@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13512 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-09 02:03:47 +00:00
lzeng14
a5f15e3025
According to UEFI spec 2.3.1a. hardware error record variable should use the EFI_HARDWARE_ERROR_VARIABLE VendorGuid and have the L"HwErrRec####" name convention, #### is a printed hex value and no 0x or h is included in the hex value.
...
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Guo Dong <guo.dong@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13373 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-30 02:53:10 +00:00
lzeng14
021a1af927
Return EFI_WRITE_PROTECTED when setting HwErrRecSupport Global Variable at runtime.
...
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Guo Dong <guo.dong@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13372 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-30 02:42:26 +00:00
lzeng14
9622df63df
If setting variable in Runtime and there has been a same GUID and name variable existed in system without RT attribute, return EFI_WRITE_PROTECTED.
...
Signed-off-by: lzeng14
Reviewed-by: tye
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13156 6f19259b-4bc3-4df7-8a09-765794883524
2012-03-30 07:19:44 +00:00
niruiyu
222f8505cb
Missing declaration of the GUID gEfiSystemNvDataFvGuid.
...
Signed-off-by: oliviermartin
Reviewed-by: rsun3
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12837 6f19259b-4bc3-4df7-8a09-765794883524
2011-12-13 06:00:27 +00:00
oliviermartin
d65502601e
MdeModulePkg/Variable: Check if there is a NV Variable Storage header prior to use its attributes
...
The Variable PEI and RuntimeDxe drivers were using the attribute 'HeaderLength' of
EFI_FIRMWARE_VOLUME_HEADER without checking if a Firmware Volume Header was existing at
the base address.
In case the Firmware Volume Header does not exist or is corrupted, the attribute 'HeaderLength'
is a non valid value that can lead to a non valid physical address when accessing produces an
access error.
Signed-off-by: oliviermartin
Reviewed-by: niruiyu
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12836 6f19259b-4bc3-4df7-8a09-765794883524
2011-12-12 19:00:59 +00:00
niruiyu
4efa9e594a
Fix a typo in the comments
...
Signed-off-by: niruiyu
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12689 6f19259b-4bc3-4df7-8a09-765794883524
2011-11-14 02:41:04 +00:00
niruiyu
fb849d0dc0
Add the missing (UINTN) type cast when calculating the end of variable store.
...
Signed-off-by: niruiyu
Reviewed-by: erictian
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12672 6f19259b-4bc3-4df7-8a09-765794883524
2011-11-08 08:42:34 +00:00
niruiyu
8cb3ed513e
Roll back an incorrect change that causes EmuGetVariable always return EFI_NOT_FOUND.
...
Signed-off-by: niruiyu
Reviewed-by: lgao4
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12667 6f19259b-4bc3-4df7-8a09-765794883524
2011-11-08 03:00:56 +00:00
niruiyu
d26727de5f
Add the missing HEADER_ALIGN macro.
...
Signed-off-by: niruiyu
Reviewed-by: erictian
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12597 6f19259b-4bc3-4df7-8a09-765794883524
2011-10-28 09:35:10 +00:00
niruiyu
f68af18ee9
Support Variable driver (EmuRuntimeDxe) to support the default variable data stored in HOB.
...
Signed-off-by: niruiyu
Reviewed-by: lgao4
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12553 6f19259b-4bc3-4df7-8a09-765794883524
2011-10-19 09:30:43 +00:00
niruiyu
e3d5b59a65
Fix GCC build failure.
...
Signed-off-by: niruiyu
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12546 6f19259b-4bc3-4df7-8a09-765794883524
2011-10-18 07:12:35 +00:00
niruiyu
de2a15eebb
Fix the clang compilation failure to handle all the values in a case statement for enum type value.
...
Signed-off-by: Andrew Fish
Reviewed-by: niruiyu
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12539 6f19259b-4bc3-4df7-8a09-765794883524
2011-10-14 07:46:15 +00:00
niruiyu
0f7aff7249
Change Variable driver (Pei/RuntimeDxe) to support the default variable data stored in HOB.
...
Signed-off-by: niruiyu
Reviewed-by: erictian
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12538 6f19259b-4bc3-4df7-8a09-765794883524
2011-10-14 05:19:39 +00:00
ydong10
04eb20aa85
Add pointer check for NULL before dereference it.
...
Signed-off-by: ydong10
Reviewed-by: rsun3, lgao4
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12472 6f19259b-4bc3-4df7-8a09-765794883524
2011-09-29 06:33:23 +00:00
sfu5
9725730b65
Remove duplicated definitions EFI_VARIABLE_INDEX_TABLE_GUID in variable PEI drivers.
...
Reviewed-by: lgao4, gdong1
Signed-off-by: sfu5
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11755 6f19259b-4bc3-4df7-8a09-765794883524
2011-06-07 04:49:10 +00:00
erictian
3b4253677e
Solve a wrong pointer reference in QueryVariableInfo().
...
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11593 6f19259b-4bc3-4df7-8a09-765794883524
2011-04-27 05:43:09 +00:00
erictian
4249fa760f
judge recovery mode at ReadOnlyVariable2Ppi interface. if yes, then return EFI_NOT_FOUND
...
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11397 6f19259b-4bc3-4df7-8a09-765794883524
2011-03-14 09:57:55 +00:00
erictian
27ee669c69
if it's in recovery mode, variable region is unreliable, so the ReadOnlyVariable2Ppi should return EFI_NOT_FOUND
...
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11387 6f19259b-4bc3-4df7-8a09-765794883524
2011-03-14 05:53:05 +00:00
gdong1
d00ed85e0a
Puts SMM variable common definitions in SmmVariableCommon.h.
...
Fixed a bug that SMM_VARIABLE_COMMUNICATE_VARIABLE_INFO_ENTRY was misused as SMM_VARIABLE_COMMUNICATE_QUERY_VARIABLE_INFO.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11339 6f19259b-4bc3-4df7-8a09-765794883524
2011-02-28 07:31:45 +00:00
erictian
b7bc11a4ff
correct Intel's copyright date as the changes checked-in at r11273 & r11272 are contributed by third party.
...
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11311 6f19259b-4bc3-4df7-8a09-765794883524
2011-02-12 03:29:24 +00:00
erictian
d9303576cd
fix word typo
...
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11273 6f19259b-4bc3-4df7-8a09-765794883524
2011-01-26 04:30:22 +00:00
erictian
858939cbda
fix arm gcc build error
...
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11272 6f19259b-4bc3-4df7-8a09-765794883524
2011-01-26 04:24:54 +00:00
gdong1
b59ad7519f
Fix an K9 issue in variable driver.
...
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11245 6f19259b-4bc3-4df7-8a09-765794883524
2011-01-12 04:35:39 +00:00
gdong1
9ae0edbfa9
1. Invoke InstallConfigurationTable () in OnReadyToBoot() to avoid the new registered table may be NULL.
...
2. For SMM variable driver, it doesn’t need to mark the variable storage region of the FLASH as RUNTIME, so only keep it for non-SMM variable driver.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11212 6f19259b-4bc3-4df7-8a09-765794883524
2010-12-31 04:31:42 +00:00
gdong1
a81b1409f9
Remove ASSERT here for the zero attributes means deleting preexisting variable.
...
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11199 6f19259b-4bc3-4df7-8a09-765794883524
2010-12-24 07:03:25 +00:00
gdong1
5456306fcf
Fix a potential bug that SetVariable is invoked for NV variable prior to the installation of EFI_VARIABLE_WRITE_ARCH_PROTOCOL.
...
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11190 6f19259b-4bc3-4df7-8a09-765794883524
2010-12-22 07:33:13 +00:00
gdong1
32732a333a
Update inappropriate comments.
...
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11170 6f19259b-4bc3-4df7-8a09-765794883524
2010-12-15 01:51:46 +00:00
gdong1
e90f27600f
Remove the unnecessary package from VariableSmmRuntimeDxe.inf.
...
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11157 6f19259b-4bc3-4df7-8a09-765794883524
2010-12-12 10:18:47 +00:00
gdong1
5c7fa42941
Add typecast to remove warning with ICC.
...
VariableSmm.inf: Remove SmmLib
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11156 6f19259b-4bc3-4df7-8a09-765794883524
2010-12-11 11:17:47 +00:00