Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix oneof primitive types decoding #1632

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions FuzzTesting/Sources/FuzzCommon/fuzz_testing.pb.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3471,6 +3471,7 @@ extension SwiftProtoTesting_Fuzz_Message: SwiftProtobuf.Message, SwiftProtobuf._
case 49: try { try decoder.decodeRepeatedMessageField(value: &_storage._repeatedMessage) }()
case 61: try {
var v: Int32?
if case .oneofInt32(let _v) = _storage._o {v = _v}
try decoder.decodeSingularInt32Field(value: &v)
if let v = v {
if _storage._o != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -3479,6 +3480,7 @@ extension SwiftProtoTesting_Fuzz_Message: SwiftProtobuf.Message, SwiftProtobuf._
}()
case 62: try {
var v: Int64?
if case .oneofInt64(let _v) = _storage._o {v = _v}
try decoder.decodeSingularInt64Field(value: &v)
if let v = v {
if _storage._o != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -3487,6 +3489,7 @@ extension SwiftProtoTesting_Fuzz_Message: SwiftProtobuf.Message, SwiftProtobuf._
}()
case 63: try {
var v: UInt32?
if case .oneofUint32(let _v) = _storage._o {v = _v}
try decoder.decodeSingularUInt32Field(value: &v)
if let v = v {
if _storage._o != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -3495,6 +3498,7 @@ extension SwiftProtoTesting_Fuzz_Message: SwiftProtobuf.Message, SwiftProtobuf._
}()
case 64: try {
var v: UInt64?
if case .oneofUint64(let _v) = _storage._o {v = _v}
try decoder.decodeSingularUInt64Field(value: &v)
if let v = v {
if _storage._o != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -3503,6 +3507,7 @@ extension SwiftProtoTesting_Fuzz_Message: SwiftProtobuf.Message, SwiftProtobuf._
}()
case 65: try {
var v: Int32?
if case .oneofSint32(let _v) = _storage._o {v = _v}
try decoder.decodeSingularSInt32Field(value: &v)
if let v = v {
if _storage._o != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -3511,6 +3516,7 @@ extension SwiftProtoTesting_Fuzz_Message: SwiftProtobuf.Message, SwiftProtobuf._
}()
case 66: try {
var v: Int64?
if case .oneofSint64(let _v) = _storage._o {v = _v}
try decoder.decodeSingularSInt64Field(value: &v)
if let v = v {
if _storage._o != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -3519,6 +3525,7 @@ extension SwiftProtoTesting_Fuzz_Message: SwiftProtobuf.Message, SwiftProtobuf._
}()
case 67: try {
var v: UInt32?
if case .oneofFixed32(let _v) = _storage._o {v = _v}
try decoder.decodeSingularFixed32Field(value: &v)
if let v = v {
if _storage._o != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -3527,6 +3534,7 @@ extension SwiftProtoTesting_Fuzz_Message: SwiftProtobuf.Message, SwiftProtobuf._
}()
case 68: try {
var v: UInt64?
if case .oneofFixed64(let _v) = _storage._o {v = _v}
try decoder.decodeSingularFixed64Field(value: &v)
if let v = v {
if _storage._o != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -3535,6 +3543,7 @@ extension SwiftProtoTesting_Fuzz_Message: SwiftProtobuf.Message, SwiftProtobuf._
}()
case 69: try {
var v: Int32?
if case .oneofSfixed32(let _v) = _storage._o {v = _v}
try decoder.decodeSingularSFixed32Field(value: &v)
if let v = v {
if _storage._o != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -3543,6 +3552,7 @@ extension SwiftProtoTesting_Fuzz_Message: SwiftProtobuf.Message, SwiftProtobuf._
}()
case 70: try {
var v: Int64?
if case .oneofSfixed64(let _v) = _storage._o {v = _v}
try decoder.decodeSingularSFixed64Field(value: &v)
if let v = v {
if _storage._o != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -3551,6 +3561,7 @@ extension SwiftProtoTesting_Fuzz_Message: SwiftProtobuf.Message, SwiftProtobuf._
}()
case 71: try {
var v: Float?
if case .oneofFloat(let _v) = _storage._o {v = _v}
try decoder.decodeSingularFloatField(value: &v)
if let v = v {
if _storage._o != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -3559,6 +3570,7 @@ extension SwiftProtoTesting_Fuzz_Message: SwiftProtobuf.Message, SwiftProtobuf._
}()
case 72: try {
var v: Double?
if case .oneofDouble(let _v) = _storage._o {v = _v}
try decoder.decodeSingularDoubleField(value: &v)
if let v = v {
if _storage._o != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -3567,6 +3579,7 @@ extension SwiftProtoTesting_Fuzz_Message: SwiftProtobuf.Message, SwiftProtobuf._
}()
case 73: try {
var v: Bool?
if case .oneofBool(let _v) = _storage._o {v = _v}
try decoder.decodeSingularBoolField(value: &v)
if let v = v {
if _storage._o != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -3575,6 +3588,7 @@ extension SwiftProtoTesting_Fuzz_Message: SwiftProtobuf.Message, SwiftProtobuf._
}()
case 74: try {
var v: String?
if case .oneofString(let _v) = _storage._o {v = _v}
try decoder.decodeSingularStringField(value: &v)
if let v = v {
if _storage._o != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -3583,6 +3597,7 @@ extension SwiftProtoTesting_Fuzz_Message: SwiftProtobuf.Message, SwiftProtobuf._
}()
case 75: try {
var v: Data?
if case .oneofBytes(let _v) = _storage._o {v = _v}
try decoder.decodeSingularBytesField(value: &v)
if let v = v {
if _storage._o != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -3591,6 +3606,7 @@ extension SwiftProtoTesting_Fuzz_Message: SwiftProtobuf.Message, SwiftProtobuf._
}()
case 76: try {
var v: SwiftProtoTesting_Fuzz_AnEnum?
if case .oneofEnum(let _v) = _storage._o {v = _v}
try decoder.decodeSingularEnumField(value: &v)
if let v = v {
if _storage._o != nil {try decoder.handleConflictingOneOf()}
Expand Down
13 changes: 13 additions & 0 deletions Reference/Conformance/conformance/conformance.pb.swift
Original file line number Diff line number Diff line change
Expand Up @@ -491,6 +491,7 @@ extension Conformance_ConformanceRequest: SwiftProtobuf.Message, SwiftProtobuf._
switch fieldNumber {
case 1: try {
var v: Data?
if case .protobufPayload(let _v) = self.payload {v = _v}
try decoder.decodeSingularBytesField(value: &v)
if let v = v {
if self.payload != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -499,6 +500,7 @@ extension Conformance_ConformanceRequest: SwiftProtobuf.Message, SwiftProtobuf._
}()
case 2: try {
var v: String?
if case .jsonPayload(let _v) = self.payload {v = _v}
try decoder.decodeSingularStringField(value: &v)
if let v = v {
if self.payload != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -511,6 +513,7 @@ extension Conformance_ConformanceRequest: SwiftProtobuf.Message, SwiftProtobuf._
case 6: try { try decoder.decodeSingularMessageField(value: &self._jspbEncodingOptions) }()
case 7: try {
var v: String?
if case .jspbPayload(let _v) = self.payload {v = _v}
try decoder.decodeSingularStringField(value: &v)
if let v = v {
if self.payload != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -519,6 +522,7 @@ extension Conformance_ConformanceRequest: SwiftProtobuf.Message, SwiftProtobuf._
}()
case 8: try {
var v: String?
if case .textPayload(let _v) = self.payload {v = _v}
try decoder.decodeSingularStringField(value: &v)
if let v = v {
if self.payload != nil {try decoder.handleConflictingOneOf()}
Expand Down Expand Up @@ -610,6 +614,7 @@ extension Conformance_ConformanceResponse: SwiftProtobuf.Message, SwiftProtobuf.
switch fieldNumber {
case 1: try {
var v: String?
if case .parseError(let _v) = self.result {v = _v}
try decoder.decodeSingularStringField(value: &v)
if let v = v {
if self.result != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -618,6 +623,7 @@ extension Conformance_ConformanceResponse: SwiftProtobuf.Message, SwiftProtobuf.
}()
case 2: try {
var v: String?
if case .runtimeError(let _v) = self.result {v = _v}
try decoder.decodeSingularStringField(value: &v)
if let v = v {
if self.result != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -626,6 +632,7 @@ extension Conformance_ConformanceResponse: SwiftProtobuf.Message, SwiftProtobuf.
}()
case 3: try {
var v: Data?
if case .protobufPayload(let _v) = self.result {v = _v}
try decoder.decodeSingularBytesField(value: &v)
if let v = v {
if self.result != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -634,6 +641,7 @@ extension Conformance_ConformanceResponse: SwiftProtobuf.Message, SwiftProtobuf.
}()
case 4: try {
var v: String?
if case .jsonPayload(let _v) = self.result {v = _v}
try decoder.decodeSingularStringField(value: &v)
if let v = v {
if self.result != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -642,6 +650,7 @@ extension Conformance_ConformanceResponse: SwiftProtobuf.Message, SwiftProtobuf.
}()
case 5: try {
var v: String?
if case .skipped(let _v) = self.result {v = _v}
try decoder.decodeSingularStringField(value: &v)
if let v = v {
if self.result != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -650,6 +659,7 @@ extension Conformance_ConformanceResponse: SwiftProtobuf.Message, SwiftProtobuf.
}()
case 6: try {
var v: String?
if case .serializeError(let _v) = self.result {v = _v}
try decoder.decodeSingularStringField(value: &v)
if let v = v {
if self.result != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -658,6 +668,7 @@ extension Conformance_ConformanceResponse: SwiftProtobuf.Message, SwiftProtobuf.
}()
case 7: try {
var v: String?
if case .jspbPayload(let _v) = self.result {v = _v}
try decoder.decodeSingularStringField(value: &v)
if let v = v {
if self.result != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -666,6 +677,7 @@ extension Conformance_ConformanceResponse: SwiftProtobuf.Message, SwiftProtobuf.
}()
case 8: try {
var v: String?
if case .textPayload(let _v) = self.result {v = _v}
try decoder.decodeSingularStringField(value: &v)
if let v = v {
if self.result != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -674,6 +686,7 @@ extension Conformance_ConformanceResponse: SwiftProtobuf.Message, SwiftProtobuf.
}()
case 9: try {
var v: String?
if case .timeoutError(let _v) = self.result {v = _v}
try decoder.decodeSingularStringField(value: &v)
if let v = v {
if self.result != nil {try decoder.handleConflictingOneOf()}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2616,6 +2616,7 @@ extension ProtobufTestMessages_Proto2_TestAllTypesProto2: SwiftProtobuf.Message,
case 102: try { try decoder.decodeRepeatedEnumField(value: &_storage._unpackedNestedEnum) }()
case 111: try {
var v: UInt32?
if case .oneofUint32(let _v) = _storage._oneofField {v = _v}
try decoder.decodeSingularUInt32Field(value: &v)
if let v = v {
if _storage._oneofField != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -2637,6 +2638,7 @@ extension ProtobufTestMessages_Proto2_TestAllTypesProto2: SwiftProtobuf.Message,
}()
case 113: try {
var v: String?
if case .oneofString(let _v) = _storage._oneofField {v = _v}
try decoder.decodeSingularStringField(value: &v)
if let v = v {
if _storage._oneofField != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -2645,6 +2647,7 @@ extension ProtobufTestMessages_Proto2_TestAllTypesProto2: SwiftProtobuf.Message,
}()
case 114: try {
var v: Data?
if case .oneofBytes(let _v) = _storage._oneofField {v = _v}
try decoder.decodeSingularBytesField(value: &v)
if let v = v {
if _storage._oneofField != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -2653,6 +2656,7 @@ extension ProtobufTestMessages_Proto2_TestAllTypesProto2: SwiftProtobuf.Message,
}()
case 115: try {
var v: Bool?
if case .oneofBool(let _v) = _storage._oneofField {v = _v}
try decoder.decodeSingularBoolField(value: &v)
if let v = v {
if _storage._oneofField != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -2661,6 +2665,7 @@ extension ProtobufTestMessages_Proto2_TestAllTypesProto2: SwiftProtobuf.Message,
}()
case 116: try {
var v: UInt64?
if case .oneofUint64(let _v) = _storage._oneofField {v = _v}
try decoder.decodeSingularUInt64Field(value: &v)
if let v = v {
if _storage._oneofField != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -2669,6 +2674,7 @@ extension ProtobufTestMessages_Proto2_TestAllTypesProto2: SwiftProtobuf.Message,
}()
case 117: try {
var v: Float?
if case .oneofFloat(let _v) = _storage._oneofField {v = _v}
try decoder.decodeSingularFloatField(value: &v)
if let v = v {
if _storage._oneofField != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -2677,6 +2683,7 @@ extension ProtobufTestMessages_Proto2_TestAllTypesProto2: SwiftProtobuf.Message,
}()
case 118: try {
var v: Double?
if case .oneofDouble(let _v) = _storage._oneofField {v = _v}
try decoder.decodeSingularDoubleField(value: &v)
if let v = v {
if _storage._oneofField != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -2685,6 +2692,7 @@ extension ProtobufTestMessages_Proto2_TestAllTypesProto2: SwiftProtobuf.Message,
}()
case 119: try {
var v: ProtobufTestMessages_Proto2_TestAllTypesProto2.NestedEnum?
if case .oneofEnum(let _v) = _storage._oneofField {v = _v}
try decoder.decodeSingularEnumField(value: &v)
if let v = v {
if _storage._oneofField != nil {try decoder.handleConflictingOneOf()}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1743,6 +1743,7 @@ extension ProtobufTestMessages_Proto3_TestAllTypesProto3: SwiftProtobuf.Message,
case 102: try { try decoder.decodeRepeatedEnumField(value: &_storage._unpackedNestedEnum) }()
case 111: try {
var v: UInt32?
if case .oneofUint32(let _v) = _storage._oneofField {v = _v}
try decoder.decodeSingularUInt32Field(value: &v)
if let v = v {
if _storage._oneofField != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -1764,6 +1765,7 @@ extension ProtobufTestMessages_Proto3_TestAllTypesProto3: SwiftProtobuf.Message,
}()
case 113: try {
var v: String?
if case .oneofString(let _v) = _storage._oneofField {v = _v}
try decoder.decodeSingularStringField(value: &v)
if let v = v {
if _storage._oneofField != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -1772,6 +1774,7 @@ extension ProtobufTestMessages_Proto3_TestAllTypesProto3: SwiftProtobuf.Message,
}()
case 114: try {
var v: Data?
if case .oneofBytes(let _v) = _storage._oneofField {v = _v}
try decoder.decodeSingularBytesField(value: &v)
if let v = v {
if _storage._oneofField != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -1780,6 +1783,7 @@ extension ProtobufTestMessages_Proto3_TestAllTypesProto3: SwiftProtobuf.Message,
}()
case 115: try {
var v: Bool?
if case .oneofBool(let _v) = _storage._oneofField {v = _v}
try decoder.decodeSingularBoolField(value: &v)
if let v = v {
if _storage._oneofField != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -1788,6 +1792,7 @@ extension ProtobufTestMessages_Proto3_TestAllTypesProto3: SwiftProtobuf.Message,
}()
case 116: try {
var v: UInt64?
if case .oneofUint64(let _v) = _storage._oneofField {v = _v}
try decoder.decodeSingularUInt64Field(value: &v)
if let v = v {
if _storage._oneofField != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -1796,6 +1801,7 @@ extension ProtobufTestMessages_Proto3_TestAllTypesProto3: SwiftProtobuf.Message,
}()
case 117: try {
var v: Float?
if case .oneofFloat(let _v) = _storage._oneofField {v = _v}
try decoder.decodeSingularFloatField(value: &v)
if let v = v {
if _storage._oneofField != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -1804,6 +1810,7 @@ extension ProtobufTestMessages_Proto3_TestAllTypesProto3: SwiftProtobuf.Message,
}()
case 118: try {
var v: Double?
if case .oneofDouble(let _v) = _storage._oneofField {v = _v}
try decoder.decodeSingularDoubleField(value: &v)
if let v = v {
if _storage._oneofField != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -1812,6 +1819,7 @@ extension ProtobufTestMessages_Proto3_TestAllTypesProto3: SwiftProtobuf.Message,
}()
case 119: try {
var v: ProtobufTestMessages_Proto3_TestAllTypesProto3.NestedEnum?
if case .oneofEnum(let _v) = _storage._oneofField {v = _v}
try decoder.decodeSingularEnumField(value: &v)
if let v = v {
if _storage._oneofField != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -1820,6 +1828,7 @@ extension ProtobufTestMessages_Proto3_TestAllTypesProto3: SwiftProtobuf.Message,
}()
case 120: try {
var v: SwiftProtobuf.Google_Protobuf_NullValue?
if case .oneofNullValue(let _v) = _storage._oneofField {v = _v}
try decoder.decodeSingularEnumField(value: &v)
if let v = v {
if _storage._oneofField != nil {try decoder.handleConflictingOneOf()}
Expand Down
4 changes: 4 additions & 0 deletions Reference/SwiftProtobuf/google/protobuf/struct.pb.swift
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,7 @@ extension Google_Protobuf_Value: Message, _MessageImplementationBase, _ProtoName
switch fieldNumber {
case 1: try {
var v: Google_Protobuf_NullValue?
if case .nullValue(let _v) = self.kind {v = _v}
try decoder.decodeSingularEnumField(value: &v)
if let v = v {
if self.kind != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -281,6 +282,7 @@ extension Google_Protobuf_Value: Message, _MessageImplementationBase, _ProtoName
}()
case 2: try {
var v: Double?
if case .numberValue(let _v) = self.kind {v = _v}
try decoder.decodeSingularDoubleField(value: &v)
if let v = v {
if self.kind != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -289,6 +291,7 @@ extension Google_Protobuf_Value: Message, _MessageImplementationBase, _ProtoName
}()
case 3: try {
var v: String?
if case .stringValue(let _v) = self.kind {v = _v}
try decoder.decodeSingularStringField(value: &v)
if let v = v {
if self.kind != nil {try decoder.handleConflictingOneOf()}
Expand All @@ -297,6 +300,7 @@ extension Google_Protobuf_Value: Message, _MessageImplementationBase, _ProtoName
}()
case 4: try {
var v: Bool?
if case .boolValue(let _v) = self.kind {v = _v}
try decoder.decodeSingularBoolField(value: &v)
if let v = v {
if self.kind != nil {try decoder.handleConflictingOneOf()}
Expand Down
Loading