From 591307a880b422a9d98a19ea98cf8635370a1b77 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sun, 5 Aug 2018 01:09:43 +0100 Subject: [PATCH] Fix overflow on SecureDigital CSD v2.0 size calculation. --- SecureDigital/CSD.cs | 2 +- SecureDigital/VendorString.cs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/SecureDigital/CSD.cs b/SecureDigital/CSD.cs index cc7e5cd0d..f40041156 100644 --- a/SecureDigital/CSD.cs +++ b/SecureDigital/CSD.cs @@ -359,7 +359,7 @@ namespace DiscImageChef.Decoders.SecureDigital else { sb.AppendFormat("\tDevice has {0} blocks", (csd.Size + 1) * 1024).AppendLine(); - result = (csd.Size + 1) * 1024 * 512; + result = ((ulong)csd.Size + 1) * 1024 * 512; if(result > 1099511627776) sb.AppendFormat("\tDevice has {0} TiB", result / 1099511627776.0).AppendLine(); else if(result > 1073741824) diff --git a/SecureDigital/VendorString.cs b/SecureDigital/VendorString.cs index 538fa7d99..14a65dbfb 100644 --- a/SecureDigital/VendorString.cs +++ b/SecureDigital/VendorString.cs @@ -40,6 +40,7 @@ namespace DiscImageChef.Decoders.SecureDigital { case 0x02: return "Kingston"; case 0x03: return "Sandisk"; + case 0x27: return "CnMemory"; case 0xAA: return "QEMU"; default: return $"Unknown manufacturer ID 0x{sdVendorId:X2}"; }