mirror of
https://github.com/Thealexbarney/LibHac.git
synced 2024-11-14 10:49:41 +01:00
Fix bktr crypto regression
This commit is contained in:
parent
d7929fc458
commit
f5d0e547e2
2 changed files with 26 additions and 8 deletions
|
@ -1,4 +1,5 @@
|
||||||
using System.Collections.Generic;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using libhac.XTSSharp;
|
using libhac.XTSSharp;
|
||||||
|
@ -69,14 +70,26 @@ namespace libhac
|
||||||
|
|
||||||
public override int Read(byte[] buffer, int offset, int count)
|
public override int Read(byte[] buffer, int offset, int count)
|
||||||
{
|
{
|
||||||
var ret = base.Read(buffer, offset, count);
|
int totalBytesRead = 0;
|
||||||
if (Position >= CurrentEntry.OffsetEnd)
|
var outPos = offset;
|
||||||
|
|
||||||
|
while (count > 0)
|
||||||
{
|
{
|
||||||
CurrentEntry = CurrentEntry.Next;
|
int bytesToRead = (int)Math.Min(CurrentEntry.OffsetEnd - Position, count);
|
||||||
UpdateCounterSubsection(CurrentEntry.Counter);
|
int bytesRead = base.Read(buffer, outPos, bytesToRead);
|
||||||
|
|
||||||
|
outPos += bytesRead;
|
||||||
|
totalBytesRead += bytesRead;
|
||||||
|
count -= bytesRead;
|
||||||
|
|
||||||
|
if (Position >= CurrentEntry.OffsetEnd)
|
||||||
|
{
|
||||||
|
CurrentEntry = CurrentEntry.Next;
|
||||||
|
UpdateCounterSubsection(CurrentEntry.Counter);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return totalBytesRead;
|
||||||
}
|
}
|
||||||
|
|
||||||
private SubsectionEntry GetSubsectionEntry(long offset)
|
private SubsectionEntry GetSubsectionEntry(long offset)
|
||||||
|
@ -93,5 +106,10 @@ namespace libhac
|
||||||
Counter[5] = (byte)(value >> 16);
|
Counter[5] = (byte)(value >> 16);
|
||||||
Counter[4] = (byte)(value >> 24);
|
Counter[4] = (byte)(value >> 24);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// todo: Make SectorStream play nicer with reading multiple
|
||||||
|
// blocks at a time to remove the need for this hack
|
||||||
|
protected override void ValidateSize(int value) { }
|
||||||
|
protected override void ValidateSize(long value) { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -154,7 +154,7 @@ namespace libhac.XTSSharp
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Validates that the size is equal to the sector size
|
/// Validates that the size is equal to the sector size
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected void ValidateSize(long value)
|
protected virtual void ValidateSize(long value)
|
||||||
{
|
{
|
||||||
if (value != SectorSize)
|
if (value != SectorSize)
|
||||||
throw new ArgumentException(string.Format("Value needs to be {0}", SectorSize));
|
throw new ArgumentException(string.Format("Value needs to be {0}", SectorSize));
|
||||||
|
@ -163,7 +163,7 @@ namespace libhac.XTSSharp
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Validates that the size is equal to the sector size
|
/// Validates that the size is equal to the sector size
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected void ValidateSize(int value)
|
protected virtual void ValidateSize(int value)
|
||||||
{
|
{
|
||||||
if (value != SectorSize)
|
if (value != SectorSize)
|
||||||
throw new ArgumentException(string.Format("Value needs to be {0}", SectorSize));
|
throw new ArgumentException(string.Format("Value needs to be {0}", SectorSize));
|
||||||
|
|
Loading…
Reference in a new issue