Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/cecil.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJb Evain <jb@evain.net>2019-10-18 19:43:07 +0300
committerGitHub <noreply@github.com>2019-10-18 19:43:07 +0300
commit99a6d0ebceae7d4394a55fd1c996c60f56a212d2 (patch)
treebf813de9889fd59a1f2fd27f723e8f3829891130
parent06da31930ff100cef48aef677c4ceeee858e6c04 (diff)
parentaeda49954b805f80dfafa5d5b971d5bfb3e73043 (diff)
Merge pull request #622 from jeromelaban/dev/jela/mvid-fix
Fix invalid ComputeHash from ByteByffer array computation
-rw-r--r--Mono.Security.Cryptography/CryptoService.cs2
-rw-r--r--Test/Mono.Cecil.Tests/PortablePdbTests.cs37
-rw-r--r--Test/Resources/assemblies/foo.dllbin0 -> 3072 bytes
-rw-r--r--Test/Resources/assemblies/hello2.exebin0 -> 3584 bytes
4 files changed, 38 insertions, 1 deletions
diff --git a/Mono.Security.Cryptography/CryptoService.cs b/Mono.Security.Cryptography/CryptoService.cs
index 013e001..dd9613f 100644
--- a/Mono.Security.Cryptography/CryptoService.cs
+++ b/Mono.Security.Cryptography/CryptoService.cs
@@ -146,7 +146,7 @@ namespace Mono.Cecil {
using (var crypto_stream = new CryptoStream (Stream.Null, sha1, CryptoStreamMode.Write)) {
for (int i = 0; i < buffers.Length; i++) {
- crypto_stream.Write (buffers [0].buffer, 0, buffers [0].length);
+ crypto_stream.Write (buffers [i].buffer, 0, buffers [i].length);
}
}
diff --git a/Test/Mono.Cecil.Tests/PortablePdbTests.cs b/Test/Mono.Cecil.Tests/PortablePdbTests.cs
index 6e1efbc..e741865 100644
--- a/Test/Mono.Cecil.Tests/PortablePdbTests.cs
+++ b/Test/Mono.Cecil.Tests/PortablePdbTests.cs
@@ -683,5 +683,42 @@ class Program
using (var module = ModuleDefinition.ReadModule (destination, new ReaderParameters { SymbolReaderProvider = new PortablePdbReaderProvider () })) {
}
}
+
+ [Test]
+ public void DoubleWriteAndReadAgainModuleWithDeterministicMvid ()
+ {
+ Guid mvid1_in, mvid1_out, mvid2_in, mvid2_out;
+
+ {
+ const string resource = "foo.dll";
+ string destination = Path.GetTempFileName ();
+
+ using (var module = GetResourceModule (resource, new ReaderParameters { })) {
+ mvid1_in = module.Mvid;
+ module.Write (destination, new WriterParameters { DeterministicMvid = true });
+ }
+
+ using (var module = ModuleDefinition.ReadModule (destination, new ReaderParameters { })) {
+ mvid1_out = module.Mvid;
+ }
+ }
+
+ {
+ const string resource = "hello2.exe";
+ string destination = Path.GetTempFileName ();
+
+ using (var module = GetResourceModule (resource, new ReaderParameters { })) {
+ mvid2_in = module.Mvid;
+ module.Write (destination, new WriterParameters { DeterministicMvid = true });
+ }
+
+ using (var module = ModuleDefinition.ReadModule (destination, new ReaderParameters { })) {
+ mvid2_out = module.Mvid;
+ }
+ }
+
+ Assert.AreNotEqual (mvid1_in, mvid2_in);
+ Assert.AreNotEqual (mvid1_out, mvid2_out);
+ }
}
}
diff --git a/Test/Resources/assemblies/foo.dll b/Test/Resources/assemblies/foo.dll
new file mode 100644
index 0000000..56b17e0
--- /dev/null
+++ b/Test/Resources/assemblies/foo.dll
Binary files differ
diff --git a/Test/Resources/assemblies/hello2.exe b/Test/Resources/assemblies/hello2.exe
new file mode 100644
index 0000000..6cc52a9
--- /dev/null
+++ b/Test/Resources/assemblies/hello2.exe
Binary files differ