Fix working with VirtualBox disk images bigger than 4GiB.

This commit is contained in:
2021-07-26 12:43:37 +01:00
parent 483ab29ca2
commit de6a39519f
3 changed files with 5 additions and 5 deletions

View File

@@ -209,7 +209,7 @@ namespace Aaru.DiscImages
if(ibmOff == VDI_EMPTY)
return new byte[_vHdr.sectorSize];
ulong imageOff = _vHdr.offsetData + (ibmOff * _vHdr.blockSize);
ulong imageOff = _vHdr.offsetData + ((ulong)ibmOff * _vHdr.blockSize);
byte[] cluster = new byte[_vHdr.blockSize];
_imageStream.Seek((long)imageOff, SeekOrigin.Begin);

View File

@@ -42,7 +42,7 @@ namespace Aaru.DiscImages
// TODO: Support fixed images
public sealed partial class Vdi : IWritableImage
{
uint _currentWritingPosition;
ulong _currentWritingPosition;
uint[] _ibm;
ImageInfo _imageInfo;
Stream _imageStream;

View File

@@ -110,7 +110,7 @@ namespace Aaru.DiscImages
headerSize = Marshal.SizeOf<Header>() - 72,
imageType = VdiImageType.Normal,
offsetBlocks = sectorSize,
offsetData = _currentWritingPosition,
offsetData = (uint)_currentWritingPosition,
sectorSize = sectorSize,
size = sectors * sectorSize,
blockSize = DEFAULT_BLOCK_SIZE,
@@ -169,13 +169,13 @@ namespace Aaru.DiscImages
if(ibmOff == VDI_EMPTY)
{
ibmOff = (_currentWritingPosition - _vHdr.offsetData) / _vHdr.blockSize;
ibmOff = (uint)((_currentWritingPosition - _vHdr.offsetData) / _vHdr.blockSize);
_ibm[index] = ibmOff;
_currentWritingPosition += _vHdr.blockSize;
_vHdr.allocatedBlocks++;
}
ulong imageOff = _vHdr.offsetData + (ibmOff * _vHdr.blockSize);
ulong imageOff = _vHdr.offsetData + ((ulong)ibmOff * _vHdr.blockSize);
_writingStream.Seek((long)imageOff, SeekOrigin.Begin);
_writingStream.Seek((long)secOff, SeekOrigin.Current);