Skip to content

Commit e7e1b79

Browse files
committed
BridgeJS: Fix for side channelling values on properties getters / setters
1 parent 128f696 commit e7e1b79

File tree

54 files changed

+3417
-585
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+3417
-585
lines changed

Benchmarks/Sources/Generated/BridgeJS.ExportSwift.swift

Lines changed: 112 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
@_spi(BridgeJS) import JavaScriptKit
88

99
extension APIResult: _BridgedSwiftAssociatedValueEnum {
10-
@_spi(BridgeJS) @_transparent public static func bridgeJSLiftParameter(_ caseId: Int32) -> APIResult {
10+
private static func _bridgeJSLiftFromCaseId(_ caseId: Int32) -> APIResult {
1111
switch caseId {
1212
case 0:
1313
return .success(String.bridgeJSLiftParameter(_swift_js_pop_param_int32(), _swift_js_pop_param_int32()))
@@ -26,6 +26,43 @@ extension APIResult: _BridgedSwiftAssociatedValueEnum {
2626
}
2727
}
2828

29+
// MARK: Protocol Export
30+
31+
@_spi(BridgeJS) @_transparent public consuming func bridgeJSLowerParameter() -> Int32 {
32+
switch self {
33+
case .success(let param0):
34+
var __bjs_param0 = param0
35+
__bjs_param0.withUTF8 { ptr in
36+
_swift_js_push_string(ptr.baseAddress, Int32(ptr.count))
37+
}
38+
return Int32(0)
39+
case .failure(let param0):
40+
_swift_js_push_int(Int32(param0))
41+
return Int32(1)
42+
case .flag(let param0):
43+
_swift_js_push_int(param0 ? 1 : 0)
44+
return Int32(2)
45+
case .rate(let param0):
46+
_swift_js_push_f32(param0)
47+
return Int32(3)
48+
case .precise(let param0):
49+
_swift_js_push_f64(param0)
50+
return Int32(4)
51+
case .info:
52+
return Int32(5)
53+
}
54+
}
55+
56+
@_spi(BridgeJS) @_transparent public static func bridgeJSLiftReturn(_ caseId: Int32) -> APIResult {
57+
return _bridgeJSLiftFromCaseId(caseId)
58+
}
59+
60+
// MARK: ExportSwift
61+
62+
@_spi(BridgeJS) @_transparent public static func bridgeJSLiftParameter(_ caseId: Int32) -> APIResult {
63+
return _bridgeJSLiftFromCaseId(caseId)
64+
}
65+
2966
@_spi(BridgeJS) @_transparent public consuming func bridgeJSLowerReturn() {
3067
switch self {
3168
case .success(let param0):
@@ -53,7 +90,7 @@ extension APIResult: _BridgedSwiftAssociatedValueEnum {
5390
}
5491

5592
extension ComplexResult: _BridgedSwiftAssociatedValueEnum {
56-
@_spi(BridgeJS) @_transparent public static func bridgeJSLiftParameter(_ caseId: Int32) -> ComplexResult {
93+
private static func _bridgeJSLiftFromCaseId(_ caseId: Int32) -> ComplexResult {
5794
switch caseId {
5895
case 0:
5996
return .success(String.bridgeJSLiftParameter(_swift_js_pop_param_int32(), _swift_js_pop_param_int32()))
@@ -74,6 +111,79 @@ extension ComplexResult: _BridgedSwiftAssociatedValueEnum {
74111
}
75112
}
76113

114+
// MARK: Protocol Export
115+
116+
@_spi(BridgeJS) @_transparent public consuming func bridgeJSLowerParameter() -> Int32 {
117+
switch self {
118+
case .success(let param0):
119+
var __bjs_param0 = param0
120+
__bjs_param0.withUTF8 { ptr in
121+
_swift_js_push_string(ptr.baseAddress, Int32(ptr.count))
122+
}
123+
return Int32(0)
124+
case .error(let param0, let param1):
125+
var __bjs_param0 = param0
126+
__bjs_param0.withUTF8 { ptr in
127+
_swift_js_push_string(ptr.baseAddress, Int32(ptr.count))
128+
}
129+
_swift_js_push_int(Int32(param1))
130+
return Int32(1)
131+
case .location(let param0, let param1, let param2):
132+
_swift_js_push_f64(param0)
133+
_swift_js_push_f64(param1)
134+
var __bjs_param2 = param2
135+
__bjs_param2.withUTF8 { ptr in
136+
_swift_js_push_string(ptr.baseAddress, Int32(ptr.count))
137+
}
138+
return Int32(2)
139+
case .status(let param0, let param1, let param2):
140+
_swift_js_push_int(param0 ? 1 : 0)
141+
_swift_js_push_int(Int32(param1))
142+
var __bjs_param2 = param2
143+
__bjs_param2.withUTF8 { ptr in
144+
_swift_js_push_string(ptr.baseAddress, Int32(ptr.count))
145+
}
146+
return Int32(3)
147+
case .coordinates(let param0, let param1, let param2):
148+
_swift_js_push_f64(param0)
149+
_swift_js_push_f64(param1)
150+
_swift_js_push_f64(param2)
151+
return Int32(4)
152+
case .comprehensive(let param0, let param1, let param2, let param3, let param4, let param5, let param6, let param7, let param8):
153+
_swift_js_push_int(param0 ? 1 : 0)
154+
_swift_js_push_int(param1 ? 1 : 0)
155+
_swift_js_push_int(Int32(param2))
156+
_swift_js_push_int(Int32(param3))
157+
_swift_js_push_f64(param4)
158+
_swift_js_push_f64(param5)
159+
var __bjs_param6 = param6
160+
__bjs_param6.withUTF8 { ptr in
161+
_swift_js_push_string(ptr.baseAddress, Int32(ptr.count))
162+
}
163+
var __bjs_param7 = param7
164+
__bjs_param7.withUTF8 { ptr in
165+
_swift_js_push_string(ptr.baseAddress, Int32(ptr.count))
166+
}
167+
var __bjs_param8 = param8
168+
__bjs_param8.withUTF8 { ptr in
169+
_swift_js_push_string(ptr.baseAddress, Int32(ptr.count))
170+
}
171+
return Int32(5)
172+
case .info:
173+
return Int32(6)
174+
}
175+
}
176+
177+
@_spi(BridgeJS) @_transparent public static func bridgeJSLiftReturn(_ caseId: Int32) -> ComplexResult {
178+
return _bridgeJSLiftFromCaseId(caseId)
179+
}
180+
181+
// MARK: ExportSwift
182+
183+
@_spi(BridgeJS) @_transparent public static func bridgeJSLiftParameter(_ caseId: Int32) -> ComplexResult {
184+
return _bridgeJSLiftFromCaseId(caseId)
185+
}
186+
77187
@_spi(BridgeJS) @_transparent public consuming func bridgeJSLowerReturn() {
78188
switch self {
79189
case .success(let param0):

0 commit comments

Comments
 (0)