From 7a3d20af028f37749eff5641b02654ed598366d0 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Wed, 16 Jun 2021 18:44:28 +0100 Subject: [PATCH] Fix exception when dumping DVD disc with no CMI. --- Aaru.Core/Devices/Dumping/Sbc/Dump.cs | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/Aaru.Core/Devices/Dumping/Sbc/Dump.cs b/Aaru.Core/Devices/Dumping/Sbc/Dump.cs index 4f3c8000f..0dd21cc92 100644 --- a/Aaru.Core/Devices/Dumping/Sbc/Dump.cs +++ b/Aaru.Core/Devices/Dumping/Sbc/Dump.cs @@ -52,10 +52,10 @@ using Aaru.Decoders.SCSI.MMC; using Aaru.Devices; using Schemas; using DeviceReport = Aaru.Core.Devices.Report.DeviceReport; +using DVDDecryption = Aaru.Decryption.DVD.Dump; using MediaType = Aaru.CommonTypes.MediaType; using TrackType = Aaru.CommonTypes.Enums.TrackType; using Version = Aaru.CommonTypes.Interop.Version; -using DVDDecryption = Aaru.Decryption.DVD.Dump; // ReSharper disable JoinDeclarationAndInitializer @@ -669,11 +669,10 @@ namespace Aaru.Core.Devices.Dumping bool newTrim = false; - mediaTags.TryGetValue(MediaTagType.DVD_CMI, out byte[] cmi); - - if(Settings.Settings.Current.EnableDecryption && - _titleKeys && - dskType == MediaType.DVDROM && + if(mediaTags.TryGetValue(MediaTagType.DVD_CMI, out byte[] cmi) && + Settings.Settings.Current.EnableDecryption && + _titleKeys && + dskType == MediaType.DVDROM && (CopyrightType)cmi[0] == CopyrightType.CSS) { UpdateStatus?.Invoke("Title keys dumping is enabled. This will be very slow."); @@ -700,18 +699,18 @@ namespace Aaru.Core.Devices.Dumping UpdateStatus?.Invoke($"Dump finished in {(end - start).TotalSeconds} seconds."); UpdateStatus?. - Invoke($"Average dump speed {(double)blockSize * (double)(blocks + 1) / 1024 / (totalDuration / 1000):F3} KiB/sec."); + Invoke($"Average dump speed {blockSize * (double)(blocks + 1) / 1024 / (totalDuration / 1000):F3} KiB/sec."); UpdateStatus?. - Invoke($"Average write speed {(double)blockSize * (double)(blocks + 1) / 1024 / imageWriteDuration:F3} KiB/sec."); + Invoke($"Average write speed {blockSize * (double)(blocks + 1) / 1024 / imageWriteDuration:F3} KiB/sec."); _dumpLog.WriteLine("Dump finished in {0} seconds.", (end - start).TotalSeconds); _dumpLog.WriteLine("Average dump speed {0:F3} KiB/sec.", - (double)blockSize * (double)(blocks + 1) / 1024 / (totalDuration / 1000)); + blockSize * (double)(blocks + 1) / 1024 / (totalDuration / 1000)); _dumpLog.WriteLine("Average write speed {0:F3} KiB/sec.", - (double)blockSize * (double)(blocks + 1) / 1024 / imageWriteDuration); + blockSize * (double)(blocks + 1) / 1024 / imageWriteDuration); #region Trimming if(_resume.BadBlocks.Count > 0 && @@ -987,12 +986,12 @@ namespace Aaru.Core.Devices.Dumping UpdateStatus?.Invoke($"Sidecar created in {(end - chkStart).TotalSeconds} seconds."); UpdateStatus?. - Invoke($"Average checksum speed {(double)blockSize * (double)(blocks + 1) / 1024 / (totalChkDuration / 1000):F3} KiB/sec."); + Invoke($"Average checksum speed {blockSize * (double)(blocks + 1) / 1024 / (totalChkDuration / 1000):F3} KiB/sec."); _dumpLog.WriteLine("Sidecar created in {0} seconds.", (end - chkStart).TotalSeconds); _dumpLog.WriteLine("Average checksum speed {0:F3} KiB/sec.", - (double)blockSize * (double)(blocks + 1) / 1024 / (totalChkDuration / 1000)); + blockSize * (double)(blocks + 1) / 1024 / (totalChkDuration / 1000)); if(_preSidecar != null) { @@ -1201,7 +1200,7 @@ namespace Aaru.Core.Devices.Dumping Invoke($"Took a total of {(end - start).TotalSeconds:F3} seconds ({totalDuration / 1000:F3} processing commands, {totalChkDuration / 1000:F3} checksumming, {imageWriteDuration:F3} writing, {(closeEnd - closeStart).TotalSeconds:F3} closing)."); UpdateStatus?. - Invoke($"Average speed: {(double)blockSize * (double)(blocks + 1) / 1048576 / (totalDuration / 1000):F3} MiB/sec."); + Invoke($"Average speed: {blockSize * (double)(blocks + 1) / 1048576 / (totalDuration / 1000):F3} MiB/sec."); if(maxSpeed > 0) UpdateStatus?.Invoke($"Fastest speed burst: {maxSpeed:F3} MiB/sec.");