From 3e332ba6b0dfe6821e65f371b85e250bbea432eb Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Thu, 1 Feb 2018 17:56:51 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9BFix=20CRC64=20endian=20problem.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DiscImageChef.Checksums/CRC64Context.cs | 9 +++++---- DiscImageChef.DiscImages/DiscImageChef.cs | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/DiscImageChef.Checksums/CRC64Context.cs b/DiscImageChef.Checksums/CRC64Context.cs index ae0416c1c..35f3be4c9 100644 --- a/DiscImageChef.Checksums/CRC64Context.cs +++ b/DiscImageChef.Checksums/CRC64Context.cs @@ -30,6 +30,7 @@ // Copyright © 2011-2018 Natalia Portillo // ****************************************************************************/ +using System; using System.IO; using System.Text; @@ -89,7 +90,7 @@ namespace DiscImageChef.Checksums /// public byte[] Final() { - BigEndianBitConverter.IsLittleEndian = BigEndianBitConverter.IsLittleEndian; + BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian; return BigEndianBitConverter.GetBytes(hashInt ^= CRC64_SEED); } @@ -100,7 +101,7 @@ namespace DiscImageChef.Checksums { StringBuilder crc64Output = new StringBuilder(); - BigEndianBitConverter.IsLittleEndian = BigEndianBitConverter.IsLittleEndian; + BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian; for(int i = 0; i < BigEndianBitConverter.GetBytes(hashInt ^= CRC64_SEED).Length; i++) crc64Output.Append(BigEndianBitConverter.GetBytes(hashInt ^= CRC64_SEED)[i].ToString("x2")); @@ -144,7 +145,7 @@ namespace DiscImageChef.Checksums localhashInt = (localhashInt >> 8) ^ localTable[(ulong)fileStream.ReadByte() ^ (localhashInt & 0xffL)]; localhashInt ^= CRC64_SEED; - BigEndianBitConverter.IsLittleEndian = BigEndianBitConverter.IsLittleEndian; + BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian; hash = BigEndianBitConverter.GetBytes(localhashInt); StringBuilder crc64Output = new StringBuilder(); @@ -196,7 +197,7 @@ namespace DiscImageChef.Checksums localhashInt = (localhashInt >> 8) ^ localTable[data[i] ^ (localhashInt & 0xff)]; localhashInt ^= CRC64_SEED; - BigEndianBitConverter.IsLittleEndian = BigEndianBitConverter.IsLittleEndian; + BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian; hash = BigEndianBitConverter.GetBytes(localhashInt); StringBuilder crc64Output = new StringBuilder(); diff --git a/DiscImageChef.DiscImages/DiscImageChef.cs b/DiscImageChef.DiscImages/DiscImageChef.cs index de404085d..a235c2ea7 100644 --- a/DiscImageChef.DiscImages/DiscImageChef.cs +++ b/DiscImageChef.DiscImages/DiscImageChef.cs @@ -2209,7 +2209,7 @@ namespace DiscImageChef.DiscImages } Crc64Context.Data(data, out byte[] blockCrc); - blockCrc = blockCrc.Reverse().ToArray(); + blockCrc = blockCrc.ToArray(); if(BitConverter.ToUInt64(blockCrc, 0) != blockHeader.crc64) { DicConsole.DebugWriteLine("DiscImageChef format plugin",