Beispiel #1
0
        public void MaliciousRecursion()
        {
            string data64 = CodedInputStreamTest.MakeRecursiveMessage(64).ToString();
            string data65 = CodedInputStreamTest.MakeRecursiveMessage(65).ToString();

            var parser64 = new JsonParser(new JsonParser.Settings(64));

            CodedInputStreamTest.AssertMessageDepth(parser64.Parse <TestRecursiveMessage>(data64), 64);
            Assert.Throws <InvalidProtocolBufferException>(() => parser64.Parse <TestRecursiveMessage>(data65));

            var parser63 = new JsonParser(new JsonParser.Settings(63));

            Assert.Throws <InvalidProtocolBufferException>(() => parser63.Parse <TestRecursiveMessage>(data64));
        }
        public void Any_Nested()
        {
            var registry            = TypeRegistry.FromMessages(TestWellKnownTypes.Descriptor, TestAllTypes.Descriptor);
            var formatter           = new JsonFormatter(new JsonFormatter.Settings(false, registry));
            var parser              = new JsonParser(new JsonParser.Settings(10, registry));
            var doubleNestedMessage = new TestAllTypes {
                SingleInt32 = 20
            };
            var nestedMessage = Any.Pack(doubleNestedMessage);
            var message       = new TestWellKnownTypes {
                AnyField = Any.Pack(nestedMessage)
            };
            var json = formatter.Format(message);

            // Use the descriptor-based parser just for a change.
            Assert.AreEqual(message, parser.Parse(json, TestWellKnownTypes.Descriptor));
        }