diff options
author | Jon Skeet <jonskeet@google.com> | 2017-02-06 14:48:22 +0000 |
---|---|---|
committer | Jon Skeet <skeet@pobox.com> | 2017-02-06 18:24:19 +0000 |
commit | bd29f86804407c583cd02fbf310191408176c0f4 (patch) | |
tree | f35d64af8dc5406369142b7cbfe9b602bd98fa5d /csharp | |
parent | 39756643df2f88805649595e651b719c8f5a4dea (diff) |
Fix CopyTo argument validation
Fixes #2669.
Diffstat (limited to 'csharp')
-rw-r--r-- | csharp/src/Google.Protobuf.Test/Collections/MapFieldTest.cs | 16 | ||||
-rw-r--r-- | csharp/src/Google.Protobuf/Collections/MapField.cs | 4 |
2 files changed, 18 insertions, 2 deletions
diff --git a/csharp/src/Google.Protobuf.Test/Collections/MapFieldTest.cs b/csharp/src/Google.Protobuf.Test/Collections/MapFieldTest.cs index 9c845907..9d3d69af 100644 --- a/csharp/src/Google.Protobuf.Test/Collections/MapFieldTest.cs +++ b/csharp/src/Google.Protobuf.Test/Collections/MapFieldTest.cs @@ -499,6 +499,14 @@ namespace Google.Protobuf.Collections } [Test] + public void KeysCopyTo() + { + var map = new MapField<string, string> { { "foo", "bar" }, { "x", "y" } }; + var keys = map.Keys.ToArray(); // Uses CopyTo internally + CollectionAssert.AreEquivalent(new[] { "foo", "x" }, keys); + } + + [Test] public void ValuesContains() { var map = new MapField<string, string> { { "foo", "bar" }, { "x", "y" } }; @@ -511,6 +519,14 @@ namespace Google.Protobuf.Collections } [Test] + public void ValuesCopyTo() + { + var map = new MapField<string, string> { { "foo", "bar" }, { "x", "y" } }; + var values = map.Values.ToArray(); // Uses CopyTo internally + CollectionAssert.AreEquivalent(new[] { "bar", "y" }, values); + } + + [Test] public void ToString_StringToString() { var map = new MapField<string, string> { { "foo", "bar" }, { "x", "y" } }; diff --git a/csharp/src/Google.Protobuf/Collections/MapField.cs b/csharp/src/Google.Protobuf/Collections/MapField.cs index 537ce261..ef5651c9 100644 --- a/csharp/src/Google.Protobuf/Collections/MapField.cs +++ b/csharp/src/Google.Protobuf/Collections/MapField.cs @@ -715,7 +715,7 @@ namespace Google.Protobuf.Collections { throw new ArgumentOutOfRangeException(nameof(arrayIndex)); } - if (arrayIndex + Count >= array.Length) + if (arrayIndex + Count > array.Length) { throw new ArgumentException("Not enough space in the array", nameof(array)); } @@ -746,7 +746,7 @@ namespace Google.Protobuf.Collections { throw new ArgumentOutOfRangeException(nameof(index)); } - if (index + Count >= array.Length) + if (index + Count > array.Length) { throw new ArgumentException("Not enough space in the array", nameof(array)); } |