mirror of
https://github.com/aaru-dps/Aaru.Server.git
synced 2025-12-16 19:24:27 +00:00
Corrected modes 02h ahd 04h that are smaller than expected.
This commit is contained in:
@@ -2337,7 +2337,7 @@ namespace DiscImageChef.Decoders.SCSI
|
|||||||
if(pageResponse[1] + 2 != pageResponse.Length)
|
if(pageResponse[1] + 2 != pageResponse.Length)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
if(pageResponse.Length < 16)
|
if(pageResponse.Length < 12)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
ModePage_02 decoded = new ModePage_02();
|
ModePage_02 decoded = new ModePage_02();
|
||||||
@@ -2349,11 +2349,17 @@ namespace DiscImageChef.Decoders.SCSI
|
|||||||
decoded.DisconnectTimeLimit = (ushort)((pageResponse[6] << 8) + pageResponse[7]);
|
decoded.DisconnectTimeLimit = (ushort)((pageResponse[6] << 8) + pageResponse[7]);
|
||||||
decoded.ConnectTimeLimit = (ushort)((pageResponse[8] << 8) + pageResponse[9]);
|
decoded.ConnectTimeLimit = (ushort)((pageResponse[8] << 8) + pageResponse[9]);
|
||||||
decoded.MaxBurstSize = (ushort)((pageResponse[10] << 8) + pageResponse[11]);
|
decoded.MaxBurstSize = (ushort)((pageResponse[10] << 8) + pageResponse[11]);
|
||||||
decoded.FirstBurstSize = (ushort)((pageResponse[14] << 8) + pageResponse[15]);
|
|
||||||
decoded.EMDP |= (pageResponse[12] & 0x80) == 0x80;
|
if(pageResponse.Length >= 13)
|
||||||
decoded.DIMM |= (pageResponse[12] & 0x08) == 0x08;
|
{
|
||||||
decoded.FairArbitration = (byte)((pageResponse[12] & 0x70) >> 4);
|
decoded.EMDP |= (pageResponse[12] & 0x80) == 0x80;
|
||||||
decoded.DTDC = (byte)(pageResponse[12] & 0x07);
|
decoded.DIMM |= (pageResponse[12] & 0x08) == 0x08;
|
||||||
|
decoded.FairArbitration = (byte)((pageResponse[12] & 0x70) >> 4);
|
||||||
|
decoded.DTDC = (byte)(pageResponse[12] & 0x07);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(pageResponse.Length >= 16)
|
||||||
|
decoded.FirstBurstSize = (ushort)((pageResponse[14] << 8) + pageResponse[15]);
|
||||||
|
|
||||||
return decoded;
|
return decoded;
|
||||||
}
|
}
|
||||||
@@ -3476,7 +3482,7 @@ namespace DiscImageChef.Decoders.SCSI
|
|||||||
if(pageResponse[1] + 2 != pageResponse.Length)
|
if(pageResponse[1] + 2 != pageResponse.Length)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
if(pageResponse.Length < 24)
|
if(pageResponse.Length < 20)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
ModePage_04 decoded = new ModePage_04();
|
ModePage_04 decoded = new ModePage_04();
|
||||||
@@ -3490,7 +3496,9 @@ namespace DiscImageChef.Decoders.SCSI
|
|||||||
decoded.LandingCylinder = ((pageResponse[14] << 16) + (pageResponse[15] << 8) + pageResponse[16]);
|
decoded.LandingCylinder = ((pageResponse[14] << 16) + (pageResponse[15] << 8) + pageResponse[16]);
|
||||||
decoded.RPL = (byte)(pageResponse[17] & 0x03);
|
decoded.RPL = (byte)(pageResponse[17] & 0x03);
|
||||||
decoded.RotationalOffset = pageResponse[18];
|
decoded.RotationalOffset = pageResponse[18];
|
||||||
decoded.MediumRotationRate = (ushort)((pageResponse[20] << 8) + pageResponse[21]);
|
|
||||||
|
if(pageResponse.Length >= 22)
|
||||||
|
decoded.MediumRotationRate = (ushort)((pageResponse[20] << 8) + pageResponse[21]);
|
||||||
|
|
||||||
return decoded;
|
return decoded;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user