Corrected alignment failure because of incorrect type

definition on MDB struct.

git-svn-id: svn://claunia.com/FileSystemIDandChk@32 17725271-3d32-4980-a8cb-9ff532f270ba
This commit is contained in:
2014-04-17 02:58:08 +00:00
parent ddad70068f
commit c42a5bdf27
2 changed files with 35 additions and 29 deletions

View File

@@ -1,3 +1,9 @@
2014-04-17 Natalia Portillo <claunia@claunia.com>
* Plugins/AppleMFS.cs:
Corrected alignment failure because of incorrect type
definition on MDB struct.
2014-04-17 Natalia Portillo <claunia@claunia.com> 2014-04-17 Natalia Portillo <claunia@claunia.com>
* ImagePlugins/DiskCopy42.cs: * ImagePlugins/DiskCopy42.cs:

View File

@@ -48,20 +48,20 @@ namespace FileSystemIDandChk.Plugins
return; return;
MDB.drCrDate = BigEndianBitConverter.ToUInt32(mdb_sector, 0x002); MDB.drCrDate = BigEndianBitConverter.ToUInt32(mdb_sector, 0x002);
MDB.drLsBkUp = BigEndianBitConverter.ToUInt32(mdb_sector, 0x00A); MDB.drLsBkUp = BigEndianBitConverter.ToUInt32(mdb_sector, 0x006);
MDB.drAtrb = BigEndianBitConverter.ToUInt16(mdb_sector, 0x012); MDB.drAtrb = BigEndianBitConverter.ToUInt16(mdb_sector, 0x00A);
MDB.drNmFls = BigEndianBitConverter.ToUInt16(mdb_sector, 0x014); MDB.drNmFls = BigEndianBitConverter.ToUInt16(mdb_sector, 0x00C);
MDB.drDirSt = BigEndianBitConverter.ToUInt16(mdb_sector, 0x016); MDB.drDirSt = BigEndianBitConverter.ToUInt16(mdb_sector, 0x00E);
MDB.drBlLen = BigEndianBitConverter.ToUInt16(mdb_sector, 0x018); MDB.drBlLen = BigEndianBitConverter.ToUInt16(mdb_sector, 0x010);
MDB.drNmAlBlks = BigEndianBitConverter.ToUInt16(mdb_sector, 0x01A); MDB.drNmAlBlks = BigEndianBitConverter.ToUInt16(mdb_sector, 0x012);
MDB.drAlBlkSiz = BigEndianBitConverter.ToUInt32(mdb_sector, 0x01C); MDB.drAlBlkSiz = BigEndianBitConverter.ToUInt32(mdb_sector, 0x014);
MDB.drClpSiz = BigEndianBitConverter.ToUInt32(mdb_sector, 0x020); MDB.drClpSiz = BigEndianBitConverter.ToUInt32(mdb_sector, 0x018);
MDB.drAlBlSt = BigEndianBitConverter.ToUInt16(mdb_sector, 0x024); MDB.drAlBlSt = BigEndianBitConverter.ToUInt16(mdb_sector, 0x01C);
MDB.drNxtFNum = BigEndianBitConverter.ToUInt32(mdb_sector, 0x026); MDB.drNxtFNum = BigEndianBitConverter.ToUInt32(mdb_sector, 0x01E);
MDB.drFreeBks = BigEndianBitConverter.ToUInt16(mdb_sector, 0x02A); MDB.drFreeBks = BigEndianBitConverter.ToUInt16(mdb_sector, 0x022);
MDB.drVNSiz = mdb_sector[0x02C]; MDB.drVNSiz = mdb_sector[0x024];
variable_size = new byte[MDB.drVNSiz]; variable_size = new byte[MDB.drVNSiz];
Array.Copy(mdb_sector, 0x02D, variable_size, 0, MDB.drVNSiz); Array.Copy(mdb_sector, 0x025, variable_size, 0, MDB.drVNSiz);
MDB.drVN = Encoding.ASCII.GetString(variable_size); MDB.drVN = Encoding.ASCII.GetString(variable_size);
BB.signature = BigEndianBitConverter.ToUInt16(bb_sector, 0x000); BB.signature = BigEndianBitConverter.ToUInt16(bb_sector, 0x000);
@@ -160,36 +160,36 @@ namespace FileSystemIDandChk.Plugins
struct MFS_MasterDirectoryBlock // Should be offset 0x0400 bytes in volume struct MFS_MasterDirectoryBlock // Should be offset 0x0400 bytes in volume
{ {
public UInt16 drSigWord;
// 0x000, Signature, 0xD2D7 // 0x000, Signature, 0xD2D7
public ulong drCrDate; public UInt16 drSigWord;
// 0x002, Volume creation date // 0x002, Volume creation date
public ulong drLsBkUp; public UInt32 drCrDate;
// 0x00A, Volume last backup date // 0x006, Volume last backup date
public UInt32 drLsBkUp;
// 0x00A, Volume attributes
public UInt16 drAtrb; public UInt16 drAtrb;
// 0x012, Volume attributes // 0x00C, Volume number of files
public UInt16 drNmFls; public UInt16 drNmFls;
// 0x014, Volume number of files // 0x00E, First directory block
public UInt16 drDirSt; public UInt16 drDirSt;
// 0x016, First directory block // 0x010, Length of directory in blocks
public UInt16 drBlLen; public UInt16 drBlLen;
// 0x018, Length of directory in blocks // 0x012, Volume allocation blocks
public UInt16 drNmAlBlks; public UInt16 drNmAlBlks;
// 0x01A, Volume allocation blocks // 0x014, Size of allocation blocks
public UInt32 drAlBlkSiz; public UInt32 drAlBlkSiz;
// 0x01C, Size of allocation blocks // 0x018, Number of bytes to allocate
public UInt32 drClpSiz; public UInt32 drClpSiz;
// 0x020, Number of bytes to allocate // 0x01C, First allocation block in block map
public UInt16 drAlBlSt; public UInt16 drAlBlSt;
// 0x024, First allocation block in block map // 0x01E. Next unused file number
public UInt32 drNxtFNum; public UInt32 drNxtFNum;
// 0x026. Next unused file number // 0x022, Number of unused allocation blocks
public UInt16 drFreeBks; public UInt16 drFreeBks;
// 0x02A, Number of unused allocation blocks // 0x024, Length of volume name
public byte drVNSiz; public byte drVNSiz;
// 0x02C, Length of volume name // 0x025, Characters of volume name
public string drVN; public string drVN;
// 0x02D, Characters of volume name
} }
struct MFS_BootBlock // Should be offset 0x0000 bytes in volume struct MFS_BootBlock // Should be offset 0x0000 bytes in volume