From 155a2a61ee57eee7735d031c489c90255b39797b Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Mon, 14 Dec 2020 14:30:27 -0600 Subject: WIXBUG:6299 - Fix OverflowException in ReadUInt32. --- src/WixToolset.Core.Burn/Bundles/BurnCommon.cs | 10 +++++----- src/WixToolset.Core.Burn/WixToolset.Core.Burn.csproj | 3 +++ 2 files changed, 8 insertions(+), 5 deletions(-) (limited to 'src/WixToolset.Core.Burn') diff --git a/src/WixToolset.Core.Burn/Bundles/BurnCommon.cs b/src/WixToolset.Core.Burn/Bundles/BurnCommon.cs index 5cff0b5a..01c9f9ca 100644 --- a/src/WixToolset.Core.Burn/Bundles/BurnCommon.cs +++ b/src/WixToolset.Core.Burn/Bundles/BurnCommon.cs @@ -354,7 +354,7 @@ namespace WixToolset.Core.Burn.Bundles /// Array from which to read. /// Beginning offset from which to read. /// value at offset - private static UInt16 ReadUInt16(byte[] bytes, UInt32 offset) + internal static UInt16 ReadUInt16(byte[] bytes, UInt32 offset) { Debug.Assert(offset + 2 <= bytes.Length); return (UInt16)(bytes[offset] + (bytes[offset + 1] << 8)); @@ -366,10 +366,10 @@ namespace WixToolset.Core.Burn.Bundles /// Array from which to read. /// Beginning offset from which to read. /// value at offset - private static UInt32 ReadUInt32(byte[] bytes, UInt32 offset) + internal static UInt32 ReadUInt32(byte[] bytes, UInt32 offset) { Debug.Assert(offset + 4 <= bytes.Length); - return (UInt32)(bytes[offset] + (bytes[offset + 1] << 8) + (bytes[offset + 2] << 16) + (bytes[offset + 3] << 24)); + return BurnCommon.ReadUInt16(bytes, offset) + ((UInt32)BurnCommon.ReadUInt16(bytes, offset + 2) << 16); } /// @@ -378,10 +378,10 @@ namespace WixToolset.Core.Burn.Bundles /// Array from which to read. /// Beginning offset from which to read. /// value at offset - private static UInt64 ReadUInt64(byte[] bytes, UInt32 offset) + internal static UInt64 ReadUInt64(byte[] bytes, UInt32 offset) { Debug.Assert(offset + 8 <= bytes.Length); - return BurnCommon.ReadUInt32(bytes, offset) + ((UInt64)(BurnCommon.ReadUInt32(bytes, offset + 4)) << 32); + return BurnCommon.ReadUInt32(bytes, offset) + ((UInt64)BurnCommon.ReadUInt32(bytes, offset + 4) << 32); } } } diff --git a/src/WixToolset.Core.Burn/WixToolset.Core.Burn.csproj b/src/WixToolset.Core.Burn/WixToolset.Core.Burn.csproj index 77e0856a..b0be1d3b 100644 --- a/src/WixToolset.Core.Burn/WixToolset.Core.Burn.csproj +++ b/src/WixToolset.Core.Burn/WixToolset.Core.Burn.csproj @@ -15,6 +15,9 @@ <_Parameter1>WixToolset.Core.TestPackage, PublicKey=0024000004800000940000000602000000240000525341310004000001000100a9967ec28982f42ee51a47dd5204315975a6ed69294b982146a99a70130a2fa13e226aaddde14c17d1bf3af69e8956d69a86585e74d208efcc5ac98a0686055327b2e87960d3c39bf3a6bc1e572863327d19dbf4fd2616dda124dbea260755a2d1d39d3cf1049ea526493eb2bf996b8ad985e3012308529e5b9b0f5cd5fa04bd + + <_Parameter1>WixToolsetTest.Core.Burn, PublicKey=0024000004800000940000000602000000240000525341310004000001000100a9967ec28982f42ee51a47dd5204315975a6ed69294b982146a99a70130a2fa13e226aaddde14c17d1bf3af69e8956d69a86585e74d208efcc5ac98a0686055327b2e87960d3c39bf3a6bc1e572863327d19dbf4fd2616dda124dbea260755a2d1d39d3cf1049ea526493eb2bf996b8ad985e3012308529e5b9b0f5cd5fa04bd + -- cgit v1.2.3-55-g6feb