mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
* DiscImageChef.Decoders/SCSI/Modes.cs:
Check for vendor pages not following page format (even if they must). * DiscImageChef.Devices/Device/Constructor.cs: Some devices (at least smsc usb-floppy) crash and reset when receiving ata over the ATA PASS-THROUGH scsi command. This will check for SCSI compliance first giving devices time to reset. * DiscImageChef.Devices/Device/ScsiCommands.cs: Some devices (smsc usb floppies) return the real command result size disregarding allocation length and generating a buffer overflow. * DiscImageChef.Devices/Enums.cs: Added some vendor commands for Plextor and HL-DT-ST devices. * DiscImageChef/Commands/DeviceInfo.cs: Mode sense should be written even if it can't be decoded.
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
|
2015-11-05 Natalia Portillo <claunia@claunia.com>
|
||||||
|
|
||||||
|
* SCSI/Modes.cs:
|
||||||
|
Check for vendor pages not following page format (even if
|
||||||
|
they must).
|
||||||
|
|
||||||
2015-11-02 Natalia Portillo <claunia@claunia.com>
|
2015-11-02 Natalia Portillo <claunia@claunia.com>
|
||||||
|
|
||||||
* DiscImageChef.Decoders.csproj:
|
* DiscImageChef.Decoders.csproj:
|
||||||
|
|||||||
@@ -5904,6 +5904,10 @@ namespace DiscImageChef.Decoders.SCSI
|
|||||||
if (isSubpage)
|
if (isSubpage)
|
||||||
{
|
{
|
||||||
pg.PageResponse = new byte[(modeResponse[offset + 2] << 8) + modeResponse[offset + 3] + 4];
|
pg.PageResponse = new byte[(modeResponse[offset + 2] << 8) + modeResponse[offset + 3] + 4];
|
||||||
|
|
||||||
|
if((pg.PageResponse.Length + offset) > modeResponse.Length)
|
||||||
|
return decoded;
|
||||||
|
|
||||||
Array.Copy(modeResponse, offset, pg.PageResponse, 0, pg.PageResponse.Length);
|
Array.Copy(modeResponse, offset, pg.PageResponse, 0, pg.PageResponse.Length);
|
||||||
pg.Page = (byte)(modeResponse[offset] & 0x3F);
|
pg.Page = (byte)(modeResponse[offset] & 0x3F);
|
||||||
pg.Subpage = modeResponse[offset + 1];
|
pg.Subpage = modeResponse[offset + 1];
|
||||||
@@ -5912,6 +5916,10 @@ namespace DiscImageChef.Decoders.SCSI
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
pg.PageResponse = new byte[modeResponse[offset + 1] + 2];
|
pg.PageResponse = new byte[modeResponse[offset + 1] + 2];
|
||||||
|
|
||||||
|
if((pg.PageResponse.Length + offset) > modeResponse.Length)
|
||||||
|
return decoded;
|
||||||
|
|
||||||
Array.Copy(modeResponse, offset, pg.PageResponse, 0, pg.PageResponse.Length);
|
Array.Copy(modeResponse, offset, pg.PageResponse, 0, pg.PageResponse.Length);
|
||||||
pg.Page = (byte)(modeResponse[offset] & 0x3F);
|
pg.Page = (byte)(modeResponse[offset] & 0x3F);
|
||||||
pg.Subpage = 0;
|
pg.Subpage = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user