Commit Graph

37 Commits

Author SHA1 Message Date
Hao Wu aa5f60ae41 IntelFrameworkModulePkg: Refine casting expression result to bigger size
There are cases that the operands of an expression are all with rank less
than UINT64/INT64 and the result of the expression is explicitly cast to
UINT64/INT64 to fit the target size.

An example will be:
UINT32 a,b;
// a and b can be any unsigned int type with rank less than UINT64, like
// UINT8, UINT16, etc.
UINT64 c;
c = (UINT64) (a + b);

Some static code checkers may warn that the expression result might
overflow within the rank of "int" (integer promotions) and the result is
then cast to a bigger size.

The commit refines codes by the following rules:
1). When the expression is possible to overflow the range of unsigned int/
int:
c = (UINT64)a + b;

2). When the expression will not overflow within the rank of "int", remove
the explicit type casts:
c = a + b;

3). When the expression will be cast to pointer of possible greater size:
UINT32 a,b;
VOID *c;
c = (VOID *)(UINTN)(a + b); --> c = (VOID *)((UINTN)a + b);

4). When one side of a comparison expression contains only operands with
rank less than UINT32:
UINT8 a;
UINT16 b;
UINTN c;
if ((UINTN)(a + b) > c) {...} --> if (((UINT32)a + b) > c) {...}

For rule 4), if we remove the 'UINTN' type cast like:
if (a + b > c) {...}
The VS compiler will complain with warning C4018 (signed/unsigned
mismatch, level 3 warning) due to promoting 'a + b' to type 'int'.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Jeff Fan <jeff.fan@intel.com>
2017-03-06 14:33:22 +08:00
Hao Wu 4ff5fd203c IntelFrameworkModulePkg: Refine type cast for pointer subtraction
For pointer subtraction, the result is of type "ptrdiff_t". According to
the C11 standard (Committee Draft - April 12, 2011):

"When two pointers are subtracted, both shall point to elements of the
same array object, or one past the last element of the array object; the
result is the difference of the subscripts of the two array elements. The
size of the result is implementation-defined, and its type (a signed
integer type) is ptrdiff_t defined in the <stddef.h> header. If the result
is not representable in an object of that type, the behavior is
undefined."

In our codes, there are cases that the pointer subtraction is not
performed by pointers to elements of the same array object. This might
lead to potential issues, since the behavior is undefined according to C11
standard.

Also, since the size of type "ptrdiff_t" is implementation-defined. Some
static code checkers may warn that the pointer subtraction might underflow
first and then being cast to a bigger size. For example:

UINT8  *Ptr1, *Ptr2;
UINTN  PtrDiff;
...
PtrDiff = (UINTN) (Ptr1 - Ptr2);

The commit will refine the pointer subtraction expressions by casting each
pointer to UINTN first and then perform the subtraction:

PtrDiff = (UINTN) Ptr1 - (UINTN) Ptr2;

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Acked-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jeff Fan <jeff.fan@intel.com>
2017-03-06 14:14:46 +08:00
Hao Wu 885c3060c1 IntelFrameworkModulePkg GenericBdsLib: Potential read over memory boudary
This commit will resolve the issue brought by r17733.

StringBuffer1 = AllocateCopyPool (
                  MAX_STRING_LEN * sizeof (CHAR16),
                  L"Configuration changed. Reset to apply it Now."
                  );

The above using of AllocateCopyPool() will read contents out of the scope
of the constant string. Potential risk for the constant string allocated
at the boundary of memory region.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Qiu Shumin <shumin.qiu@intel.com>
Reviewed-by: Jeff Fan <jeff.fan@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17929 6f19259b-4bc3-4df7-8a09-765794883524
2015-07-13 01:22:21 +00:00
Hao Wu ed6d22e0f2 IntelFrameworkModulePkg GenericBdsLib: Use safe string functions
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Jeff Fan <jeff.fan@intel.com>
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17733 6f19259b-4bc3-4df7-8a09-765794883524
2015-06-30 06:25:54 +00:00
Chen Fan 46737a64d0 IntelFrameworkModulePkg BdsLib: Fix potential memory leak when calling BdsLibGetVariableAndSize
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Ruiyu Ni<ruiyu.ni@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15732 6f19259b-4bc3-4df7-8a09-765794883524
2014-08-01 02:45:45 +00:00
Ruiyu Ni c4571f0479 Add check to avoid null pointer deference.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15410 6f19259b-4bc3-4df7-8a09-765794883524
2014-03-28 02:50:47 +00:00
Ruiyu Ni 69fc8f080e Report the setting variable failure to platform through the status code when core cannot handle the error.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15385 6f19259b-4bc3-4df7-8a09-765794883524
2014-03-25 02:38:54 +00:00
Ruiyu Ni e609aef97a Do not reset system when the MemoryTypeInformation variable cannot be written.
Remove the RT attribute for the MemoryTypeInformation variable because it’s not necessary.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15333 6f19259b-4bc3-4df7-8a09-765794883524
2014-03-17 08:24:07 +00:00
niruiyu 3999f1feef Reset system only when the pre-allocated memory is more than 1.5 of needed memory and boot mode is BOOT_WITH_DEFAULT_SETTING, or less than the needed memory.
Signed-off-by: Ruiyu Ni<ruiyu.ni@intel.com>
Reviewed-by: Elvin Li<elvin.li@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13748 6f19259b-4bc3-4df7-8a09-765794883524
2012-09-27 02:57:01 +00:00
ydong10 6e7ba5e34a Refine the message for Reset request.
Signed-off-by: Eric Dong <eric.dong@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13508 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-06 01:51:43 +00:00
ydong10 63588e6106 Update the logic to force user to reset when change configuration which need to reset.
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13507 6f19259b-4bc3-4df7-8a09-765794883524
2012-07-06 00:59:08 +00:00
niruiyu 2d1f3dd497 Fix memory leak issues.
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13428 6f19259b-4bc3-4df7-8a09-765794883524
2012-06-06 08:41:58 +00:00
niruiyu 16e5944abd Refine BdsDxe driver and GenericBdsLib library so that the GenericBdsLib doesn't depend on the BdsDxe implementation.
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13418 6f19259b-4bc3-4df7-8a09-765794883524
2012-06-01 03:39:39 +00:00
ydong10 97627ad45a Fix build failed
Signed-off-by: Eric Dong <eric.dong@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13363 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-28 02:39:50 +00:00
ydong10 3e8670718d Refine logic about validate boot option.
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13362 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-25 05:04:13 +00:00
ydong10 7c9fbd79d1 Fix memory leak issues.
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Reviewed-by: Li Elvin <elvin.li@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13288 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-07 08:51:42 +00:00
ydong10 8c08a567c6 Add code to check boot option variable before use it
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Ni Ruiyu <ruiyu.ni@intel.com>

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13203 6f19259b-4bc3-4df7-8a09-765794883524
2012-04-19 09:57:11 +00:00
ydong10 c1e2752c99 When transfer from Unicode to hex number, current code only consider the 0-9 case, not include the A-F case, now update code to consider all.
Signed-off-by: Dong Eric <eric.dong@intel.com>
Reviewed-by: Ni Ruiyu <ruiyu.ni@intel.com>


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13159 6f19259b-4bc3-4df7-8a09-765794883524
2012-04-01 07:28:09 +00:00
ydong10 5f595f14be Update copyright.
Signed-off-by: ydong10

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12928 6f19259b-4bc3-4df7-8a09-765794883524
2012-01-12 07:18:08 +00:00
ydong10 b16cc38bf3 Add check when get boot option variable to avoid system hang.
Signed-off-by: ydong10
Reviewed-by: niruiyu

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12927 6f19259b-4bc3-4df7-8a09-765794883524
2012-01-12 05:32:59 +00:00
niruiyu a97a859621 Enhance BDS to avoid the additional reset when the platform pre-allocated memory is large enough.
Signed-off-by: niruiyu
Reviewed-by: mdkinney
Reviewed-by: lgao4

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11983 6f19259b-4bc3-4df7-8a09-765794883524
2011-07-06 03:23:15 +00:00
andrewfish 5817d50862 IntelFrameworkModulePkg: Fix clang compielr warning.
Clang complains about if (()) constructs as it thinks you may be doing a compare and assign in the same if structure. 

signed-off-by: vanjeff



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11923 6f19259b-4bc3-4df7-8a09-765794883524
2011-06-28 23:11:25 +00:00
erictian 8c716296fa in Recovery path, doesn't warm reset even if MemoryTypeInfo data is changed.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11225 6f19259b-4bc3-4df7-8a09-765794883524
2011-01-05 02:33:47 +00:00
niruiyu 7caf72a907 Use PcdResetOnMemoryTypeInformationChange in MdeModulePkg to control whether to reset system when memory type information changes.
Check memory type information after signaling the ReadyToBoot event.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11080 6f19259b-4bc3-4df7-8a09-765794883524
2010-11-22 05:25:03 +00:00
niruiyu fefefa4cb1 Remove unnecessary mBdsImageHandle.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11012 6f19259b-4bc3-4df7-8a09-765794883524
2010-11-08 06:56:57 +00:00
niruiyu 7bee5a761f Add additional reset when Memory Type Information settings change.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10879 6f19259b-4bc3-4df7-8a09-765794883524
2010-09-16 01:14:51 +00:00
xli24 13314ba32a Add explicit type cast to suppress possible warning of precession loss.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10786 6f19259b-4bc3-4df7-8a09-765794883524
2010-08-10 07:47:20 +00:00
mdkinney a4e9b4f6e3 Allow gEfiMemoryTypeInformation bins to shrink if boot mode is BOOT_WITH_DEFAULT_SETTINGS or the gEfiMemoryTypeInformation variable does not exist.
Update BdsSetMemoryTypeInformationVariable() to use DEBUG() prints to show the Previous, Current, and Next sizes of each memory bin type.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10580 6f19259b-4bc3-4df7-8a09-765794883524
2010-06-14 23:23:58 +00:00
hhtian 180a5a35cb Update the copyright notice format
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10414 6f19259b-4bc3-4df7-8a09-765794883524
2010-04-23 16:28:26 +00:00
gdong1 337661bb8c Add BdsLibUserIdentify API in GenericBdsLib
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9897 6f19259b-4bc3-4df7-8a09-765794883524
2010-02-01 06:13:04 +00:00
rsun3 7490e2bed8 GenericBdsLib: Remove a un-reasonable ASSERT when BdsLibVariableToOption() returns NULL because it is possible for BdsLibVariableToOption() to return NULL if the boot option variable does not exist or the boot option is not active.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9805 6f19259b-4bc3-4df7-8a09-765794883524
2010-01-25 05:20:44 +00:00
xli24 da166a5dbd Minor code enhancement.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9711 6f19259b-4bc3-4df7-8a09-765794883524
2010-01-12 03:30:58 +00:00
gikidy 8d3b5aff68 Use UNI file string to display Boot Option for language localization.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8655 6f19259b-4bc3-4df7-8a09-765794883524
2009-06-25 04:44:45 +00:00
eric_tian 31b440cfa6 fix a bug of incorrectly judge the end of variable arguments.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8386 6f19259b-4bc3-4df7-8a09-765794883524
2009-05-26 07:27:13 +00:00
lgao4 e3b236c8ee Use UefiLib CreatePopUp API
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8014 6f19259b-4bc3-4df7-8a09-765794883524
2009-04-02 09:22:18 +00:00
klu2 8c81cb83b9 1, Change name of PcdPlatformBootTimeoutDefault to PcdPlatformBootTimeout, now this PCD is *not* only hold default value of Bds timeout, but it is associated with a HII type PCD to hold persistent value for BDS timeout. Platform integrator will establish this mapping in platform DSC file.
2, Move PcdPlatformBootTimeout to IntelFrameworkModulePkg.
3, Remove BdsLibGetTimeout() interface from GenericBdsLib, because the PCD PcdPlatformBootTimeout will take care of persistent for time out value.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7707 6f19259b-4bc3-4df7-8a09-765794883524
2009-02-26 07:18:21 +00:00
klu2 5c08e11737 Move BdsDxe and GenericBdsLib to IntelFrameworkModulePkg, these modules need dependent on gEfiLegacyBiosProtocol to provide legacy boot support. But legacy boot is not described by PI/UEFI specification.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7354 6f19259b-4bc3-4df7-8a09-765794883524
2009-01-23 07:24:55 +00:00