Hi all,

Please review this patch when you're free, thanks.

Regards
Wenyi

On 2020/9/1 18:58, Wenyi Xie wrote:
> REF:https://bugzilla.tianocore.org/show_bug.cgi?id=2947
> 
> When calculating memory regions and store the information in the
> gSystemMemory in file WinHost.c, the code below will cause overflow,
> because _wtoi (MemorySizeStr) return an int value and SIZE_1MB is
> also an int value, if MemorySizeStr is lager for example 2048, then
> result of multiplication will overflow.
> 
> for (Index = 0, Done = FALSE; !Done; Index++) {
>   //
>   // Save the size of the memory and make a Unicode filename SystemMemory00
>   //
>   gSystemMemory[Index].Size = _wtoi (MemorySizeStr) * SIZE_1MB;
> 
> Cc: Jordan Justen <jordan.l.jus...@intel.com>
> Cc: Andrew Fish <af...@apple.com>
> Cc: Ray Ni <ray...@intel.com>
> Signed-off-by: Wenyi Xie <xiewen...@huawei.com>
> ---
>  EmulatorPkg/Win/Host/WinHost.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/EmulatorPkg/Win/Host/WinHost.c b/EmulatorPkg/Win/Host/WinHost.c
> index 0838c56ddea8..876cb8d4be8b 100644
> --- a/EmulatorPkg/Win/Host/WinHost.c
> +++ b/EmulatorPkg/Win/Host/WinHost.c
> @@ -577,7 +577,7 @@ Returns:
>      //
>      // Save the size of the memory and make a Unicode filename 
> SystemMemory00, ...
>      //
> -    gSystemMemory[Index].Size = _wtoi (MemorySizeStr) * SIZE_1MB;
> +    gSystemMemory[Index].Size = ((UINT64)_wtoi (MemorySizeStr)) * 
> ((UINT64)SIZE_1MB);
>  
>      //
>      // Find the next region
> 


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#65425): https://edk2.groups.io/g/devel/message/65425
Mute This Topic: https://groups.io/mt/76553535/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to