1// Copyright 2023 Code Intelligence GmbH 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15syntax = "proto2"; 16 17package com.code_intelligence.jazzer.protobuf; 18option java_package = "com.code_intelligence.jazzer.protobuf"; 19 20message PrimitiveField2 { 21optional bool some_field = 1; 22} 23 24message RequiredPrimitiveField2 { 25required bool some_field = 1; 26} 27 28message RepeatedPrimitiveField2 { 29repeated bool some_field = 1; 30} 31 32message MessageField2 { 33optional RequiredPrimitiveField2 message_field = 1; 34} 35 36message RepeatedMessageField2 { 37repeated RequiredPrimitiveField2 message_field = 1; 38} 39 40message RepeatedOptionalMessageField2 { 41repeated PrimitiveField2 message_field = 1; 42} 43 44message RecursiveMessageField2 { 45required bool some_field = 1; 46optional RecursiveMessageField2 message_field = 2; 47} 48 49message RepeatedRecursiveMessageField2 { 50optional bool some_field = 1; 51repeated RepeatedRecursiveMessageField2 message_field = 2; 52} 53 54message OneOfField2 { 55required bool other_field = 4; 56oneof oneof_field { 57 bool bool_field = 7; 58 RequiredPrimitiveField2 message_field = 2; 59} 60optional bool yet_another_field = 1; 61} 62 63message IntegralField2 { 64optional uint32 some_field = 1; 65} 66 67message RepeatedIntegralField2 { 68repeated uint32 some_field = 1; 69} 70 71message BytesField2 { 72optional bytes some_field = 1; 73} 74 75message StringField2 { 76optional string some_field = 1; 77} 78 79message Parent { 80 optional Child child = 1; 81} 82 83message Child { 84 optional Parent parent = 1; 85} 86 87// Taken from 88// https://github.com/google/fuzztest/blob/c5fde4baee6134c84d4f2b618def9f60c7505151/fuzztest/internal/test_protobuf.proto#L24 89message TestSubProtobuf { 90 optional int32 subproto_i32 = 1; 91 repeated int32 subproto_rep_i32 = 2 [packed = true]; 92 optional TestProtobuf parent = 3; 93} 94 95message TestProtobuf { 96 enum Enum { 97 Label1 = 0; 98 Label2 = 1; 99 Label3 = 2; 100 Label4 = 3; 101 Label5 = 4; 102 } 103 104 optional bool b = 1; 105 optional int32 i32 = 2; 106 optional uint32 u32 = 3; 107 optional int64 i64 = 4; 108 optional uint64 u64 = 5; 109 optional float f = 6; 110 optional double d = 7; 111 optional string str = 8; 112 optional Enum e = 9; 113 optional TestSubProtobuf subproto = 10; 114 115 repeated bool rep_b = 11; 116 repeated int32 rep_i32 = 12; 117 repeated uint32 rep_u32 = 13; 118 repeated int64 rep_i64 = 14; 119 repeated uint64 rep_u64 = 15; 120 repeated float rep_f = 16; 121 repeated double rep_d = 17; 122 repeated string rep_str = 18; 123 repeated Enum rep_e = 19; 124 repeated TestSubProtobuf rep_subproto = 20; 125 126 oneof oneof_field { 127 int32 oneof_i32 = 21; 128 int64 oneof_i64 = 22; 129 uint32 oneof_u32 = 24; 130 } 131 132 map<int32, int32> map_field = 25; 133 134 // Special cases 135 enum EnumOneLabel { 136 OnlyLabel = 17; 137 } 138 optional EnumOneLabel enum_one_label = 100; 139 message EmptyMessage {} 140 optional EmptyMessage empty_message = 101; 141} 142 143message OriginalSubmessage2 { 144 required int32 numeric_field = 1; 145} 146 147message OriginalMessage2 { 148 required OriginalSubmessage2 message_field = 1; 149 required bool bool_field = 2; 150} 151 152message ExtendedSubmessage2 { 153 required int32 numeric_field = 1; 154 required OriginalSubmessage2 message_field = 2; 155} 156 157message ExtendedMessage2 { 158 required ExtendedSubmessage2 message_field = 1; 159 required bool bool_field = 2; 160 required float float_field = 3; 161} 162