From ddc6d41d128c57dec8e79a0ad1eae7a80ec0280b Mon Sep 17 00:00:00 2001 From: Jiaxin Wu Date: Tue, 16 Oct 2018 13:34:00 +0800 Subject: NetworkPkg: Correct the time stamp and fix the integer overflow issue. Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=883. Cc: Fu Siyuan Cc: Ye Ting Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Wu Jiaxin Reviewed-by: Ye Ting --- NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c') diff --git a/NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c b/NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c index 10a99a0..9c7459c 100644 --- a/NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c +++ b/NetworkPkg/Dhcp6Dxe/Dhcp6Utility.c @@ -123,7 +123,7 @@ Dhcp6GenerateClientId ( gRT->GetTime (&Time, NULL); Stamp = (UINT32) ( - (((((Time.Year - 2000) * 360 + (Time.Month - 1)) * 30 + (Time.Day - 1)) * 24 + Time.Hour) * 60 + Time.Minute) * + ((((UINT32)(Time.Year - 2000) * 360 + (Time.Month - 1) * 30 + (Time.Day - 1)) * 24 + Time.Hour) * 60 + Time.Minute) * 60 + Time.Second ); @@ -881,14 +881,14 @@ SetElapsedTime ( // Generate a time stamp of the centiseconds from 2000/1/1, assume 30day/month. // gRT->GetTime (&Time, NULL); - CurrentStamp = (UINT64) - ( - ((((((Time.Year - 2000) * 360 + - (Time.Month - 1)) * 30 + - (Time.Day - 1)) * 24 + Time.Hour) * 60 + - Time.Minute) * 60 + Time.Second) * 100 - + DivU64x32(Time.Nanosecond, 10000000) - ); + CurrentStamp = MultU64x32 ( + ((((UINT32)(Time.Year - 2000) * 360 + (Time.Month - 1) * 30 + (Time.Day - 1)) * 24 + Time.Hour) * 60 + Time.Minute) * 60 + Time.Second, + 100 + ) + + DivU64x32( + Time.Nanosecond, + 10000000 + ); // // Sentinel value of 0 means that this is the first DHCP packet that we are -- cgit v1.1