From bcc3583885fe21bdca73f1fb1096d6b9c607fd4f Mon Sep 17 00:00:00 2001 From: morkt Date: Mon, 23 Nov 2015 21:29:35 +0400 Subject: [PATCH] (MrgOpener.Decrypt): added array range parameters. --- ArcFormats/FC01/ArcMRG.cs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/ArcFormats/FC01/ArcMRG.cs b/ArcFormats/FC01/ArcMRG.cs index 048e4b6e..0d17a86a 100644 --- a/ArcFormats/FC01/ArcMRG.cs +++ b/ArcFormats/FC01/ArcMRG.cs @@ -75,7 +75,7 @@ namespace GameRes.Formats.FC01 var key = GuessKey (file, index); if (null == key) throw new UnknownEncryptionScheme(); - Decrypt (index, key.Value); + Decrypt (index, 0, index.Length, key.Value); int current_offset = 0; uint next_offset = LittleEndian.ToUInt32 (index, current_offset+0x1C); @@ -132,14 +132,13 @@ namespace GameRes.Formats.FC01 return input; } - static public void Decrypt (byte[] data, int key) + static public void Decrypt (byte[] data, int index, int length, int key) { - int remaining = data.Length; - for (int i = 0; i < data.Length; ++i) + while (length > 0) { - var v = data[i]; - data[i] = (byte)((v << 1 | v >> 7) ^ key); - key += remaining--; + var v = data[index]; + data[index++] = (byte)((v << 1 | v >> 7) ^ key); + key += length--; } }