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 <jbevain@gmail.com>2015-09-29 18:21:27 +0300
committerJb Evain <jbevain@gmail.com>2015-09-29 18:22:11 +0300
commit25612a0d936eaa217dfe700d101f0c81ef87965e (patch)
treeb9ce4fbf766c1a2bf716ed0750b051de636b2d19 /Mono.Cecil.Metadata
parente29433cee4382084e2c35b77e3949b331e6b9d85 (diff)
Prevent exception on invalid blob index
Diffstat (limited to 'Mono.Cecil.Metadata')
-rw-r--r--Mono.Cecil.Metadata/BlobHeap.cs3
1 files changed, 3 insertions, 0 deletions
diff --git a/Mono.Cecil.Metadata/BlobHeap.cs b/Mono.Cecil.Metadata/BlobHeap.cs
index 527d042..6a07fc6 100644
--- a/Mono.Cecil.Metadata/BlobHeap.cs
+++ b/Mono.Cecil.Metadata/BlobHeap.cs
@@ -31,6 +31,9 @@ namespace Mono.Cecil.Metadata {
int position = (int) (index + Offset);
int length = (int) data.ReadCompressedUInt32 (ref position);
+ if (length > data.Length - position)
+ return Empty<byte>.Array;
+
var buffer = new byte [length];
Buffer.BlockCopy (data, position, buffer, 0, length);