|
@@ -313,14 +313,14 @@ namespace Google.Protobuf
|
|
|
[Test]
|
|
|
public void MaliciousRecursion()
|
|
|
{
|
|
|
- ByteString data64 = MakeRecursiveMessage(64).ToByteString();
|
|
|
- ByteString data65 = MakeRecursiveMessage(65).ToByteString();
|
|
|
+ ByteString atRecursiveLimit = MakeRecursiveMessage(CodedInputStream.DefaultRecursionLimit).ToByteString();
|
|
|
+ ByteString beyondRecursiveLimit = MakeRecursiveMessage(CodedInputStream.DefaultRecursionLimit + 1).ToByteString();
|
|
|
|
|
|
- AssertMessageDepth(TestRecursiveMessage.Parser.ParseFrom(data64), 64);
|
|
|
+ AssertMessageDepth(TestRecursiveMessage.Parser.ParseFrom(atRecursiveLimit), CodedInputStream.DefaultRecursionLimit);
|
|
|
|
|
|
- Assert.Throws<InvalidProtocolBufferException>(() => TestRecursiveMessage.Parser.ParseFrom(data65));
|
|
|
+ Assert.Throws<InvalidProtocolBufferException>(() => TestRecursiveMessage.Parser.ParseFrom(beyondRecursiveLimit));
|
|
|
|
|
|
- CodedInputStream input = CodedInputStream.CreateWithLimits(new MemoryStream(data64.ToByteArray()), 1000000, 63);
|
|
|
+ CodedInputStream input = CodedInputStream.CreateWithLimits(new MemoryStream(atRecursiveLimit.ToByteArray()), 1000000, CodedInputStream.DefaultRecursionLimit - 1);
|
|
|
Assert.Throws<InvalidProtocolBufferException>(() => TestRecursiveMessage.Parser.ParseFrom(input));
|
|
|
}
|
|
|
|