23
23
import Foundation
24
24
import XCTest
25
25
26
+ import SwiftProtobuf
27
+
26
28
final class Test_FuzzTests : XCTestCase {
27
29
28
30
func assertBinaryFails( _ bytes: [ UInt8 ] , file: XCTestFileArgType = #file, line: UInt = #line) {
@@ -43,35 +45,43 @@ final class Test_FuzzTests: XCTestCase {
43
45
file: file, line: line)
44
46
}
45
47
46
- func assertTextFormatFails( _ textFormat: String , file: XCTestFileArgType = #file, line: UInt = #line) {
48
+ func assertTextFormatFails( _ textFormat: String , options : TextFormatDecodingOptions = TextFormatDecodingOptions ( ) , file: XCTestFileArgType = #file, line: UInt = #line) {
47
49
XCTAssertThrowsError (
48
- try SwiftProtoTesting_Fuzz_Message ( textFormatString: textFormat, extensions: SwiftProtoTesting_Fuzz_FuzzTesting_Extensions) ,
50
+ try SwiftProtoTesting_Fuzz_Message ( textFormatString: textFormat,
51
+ options: options,
52
+ extensions: SwiftProtoTesting_Fuzz_FuzzTesting_Extensions) ,
49
53
file: file, line: line)
50
54
}
51
55
52
- func assertTextFormatFails( _ asBytes: [ UInt8 ] , file: XCTestFileArgType = #file, line: UInt = #line) {
56
+ func assertTextFormatFails( _ asBytes: [ UInt8 ] , options : TextFormatDecodingOptions = TextFormatDecodingOptions ( ) , file: XCTestFileArgType = #file, line: UInt = #line) {
53
57
guard let str = String ( data: Data ( asBytes) , encoding: . utf8) else {
54
58
XCTFail ( " Failed to make a string " , file: file, line: line)
55
59
return
56
60
}
57
61
XCTAssertThrowsError (
58
- try SwiftProtoTesting_Fuzz_Message ( textFormatString: str, extensions: SwiftProtoTesting_Fuzz_FuzzTesting_Extensions) ,
62
+ try SwiftProtoTesting_Fuzz_Message ( textFormatString: str,
63
+ options: options,
64
+ extensions: SwiftProtoTesting_Fuzz_FuzzTesting_Extensions) ,
59
65
file: file, line: line)
60
66
}
61
67
62
- func assertTextFormatSucceeds( _ textFormat: String , file: XCTestFileArgType = #file, line: UInt = #line) {
68
+ func assertTextFormatSucceeds( _ textFormat: String , options : TextFormatDecodingOptions = TextFormatDecodingOptions ( ) , file: XCTestFileArgType = #file, line: UInt = #line) {
63
69
XCTAssertNoThrow (
64
- try SwiftProtoTesting_Fuzz_Message ( textFormatString: textFormat, extensions: SwiftProtoTesting_Fuzz_FuzzTesting_Extensions) ,
70
+ try SwiftProtoTesting_Fuzz_Message ( textFormatString: textFormat,
71
+ options: options,
72
+ extensions: SwiftProtoTesting_Fuzz_FuzzTesting_Extensions) ,
65
73
file: file, line: line)
66
74
}
67
75
68
- func assertTextFormatSucceeds( _ asBytes: [ UInt8 ] , file: XCTestFileArgType = #file, line: UInt = #line) {
76
+ func assertTextFormatSucceeds( _ asBytes: [ UInt8 ] , options : TextFormatDecodingOptions = TextFormatDecodingOptions ( ) , file: XCTestFileArgType = #file, line: UInt = #line) {
69
77
guard let str = String ( data: Data ( asBytes) , encoding: . utf8) else {
70
78
XCTFail ( " Failed to make a string " , file: file, line: line)
71
79
return
72
80
}
73
81
XCTAssertNoThrow (
74
- try SwiftProtoTesting_Fuzz_Message ( textFormatString: str, extensions: SwiftProtoTesting_Fuzz_FuzzTesting_Extensions) ,
82
+ try SwiftProtoTesting_Fuzz_Message ( textFormatString: str,
83
+ options: options,
84
+ extensions: SwiftProtoTesting_Fuzz_FuzzTesting_Extensions) ,
75
85
file: file, line: line)
76
86
}
77
87
@@ -128,5 +138,13 @@ final class Test_FuzzTests: XCTestCase {
128
138
assertTextFormatSucceeds ( " 500<[google.protobuf.Any]<[google.protobuf.Any]<[google.protobuf.Any]<[google.protobuf.Any]<[google.protobuf.Any]<[google.protobuf.Any]<[google.protobuf.Any]<[google.protobuf.Any]<[google.protobuf.Any]<[google.protobuf.Any]<[google.protobuf.Any]<[google.protobuf.Any]<[google.protobuf.Any]<[google.protobuf.Any]<[google.protobuf.Any]<>>>>>>>>>>>>>>>>500<1:'' \n 2:''> " )
129
139
130
140
assertTextFormatFails ( " 500<[fvwzz_exobuf.Aob/google.protobuf.Any]<[oeFgb/google.protobuf.Any]<[xlob/google.protobuf.Any]<[oeee0FFFFgb/google.protobuf.Any]<[oglob/google.protobuf.Any]<[oogoFFFFFFFFRFfuzz.tebool_extFFFFFFFBFFFFegleeeeeeeeeeeeeeeeeeemeeeeeeeeeeeneeeeeeeekeeeeFFFFFFFFFIFFFFFFFgb/google.protobuf.Any]<[oglob/google.protobuf.Any]<[oogoFFFFFFFFRFfuzz.tebool_extFFFFFFFBFFFFegleeeeeeeeeeeeeeeeeeemeeeeeeeeeeeneeeeeeeekeeeeFFFFFFFFFIFFFFFFFgb/google.protobuf.Any]<[oglob/google.protobuf.Any]<[oogoFFFFFFFFRFfuzz.tebool_extFFFFFFFBFFFFegleeeeeeeeeeeeeeeeeeemeeeeeeeeeeeneeeeeeeekeeeeFFFFFFFFFIFFFFFFFgb/google.protobuf.Any]<[oglob/google.protobuf.Any]<[oogoFFFFFFFFRFfuzz.tebool_extFFFFFFFBFFFFegleeeeeeeeeeeeeeeeeeemeeeeeeeeeeeneeeeeeeekeeeeFFFFFFFFFIFFFFFFFgb/google.protobuf.Any]<[oglob/google.protobuf.Any]<[oogoFFFFFFFFRFfuzz.tebool_extFFFFFFFBFFFFegleeeeeeeeeeeeeeeeeeemeeeeeeeeeeeneeeeeeeekeeeeFFFFFFFFFIFFFFFFFgb/google.protobuf.Any]<[oglob/google.protobuf.Any]<[oogoFFFFFFFFRFfuzz.tebool_extFFFFFFFBFFFFegleeeeeeeeeeeeeeeeeeemeeeeeeeeeeeneeeeeeeekeeeeFFFFFFFFFIFFFFFFFgb/google.protobuf.Any]<>>>>>>>>>>>>>>>>>500<1:'' \n 1:'' \n 1:'' \n 2:'' \n 1:'roto " )
141
+
142
+ // FailCases/clusterfuzz-testcase-FuzzTextFormat_release-4619956026146816
143
+ // FailCases/clusterfuzz-testcase-minimized-FuzzTextFormat_release-4619956026146816
144
+ var opts = TextFormatDecodingOptions ( )
145
+ opts. ignoreUnknownFields = true
146
+ opts. ignoreUnknownExtensionFields = true
147
+ assertTextFormatFails ( " rsingular_sint:- " , options: opts)
148
+ assertTextFormatFails ( " l :- " , options: opts)
131
149
}
132
150
}
0 commit comments