Skip to content

Commit 43b5223

Browse files
nglevinluispadron
authored andcommitted
Add a validation check to prevent processing static libraries and dynamic libraries as resources via "data" and "resources" attributes on rules.
Cherry-pick: 41d1d10
1 parent ea3b2f2 commit 43b5223

13 files changed

Lines changed: 190 additions & 4 deletions

File tree

apple/internal/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,7 @@ bzl_library(
558558
"@bazel_skylib//lib:partial",
559559
"@bazel_skylib//lib:paths",
560560
"@bazel_skylib//lib:types",
561+
"@rules_cc//cc/common",
561562
],
562563
)
563564

apple/internal/aspects/resource_aspect.bzl

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,18 @@ def _apple_resource_aspect_impl(target, ctx):
125125
"product_type": None,
126126
"rule_label": ctx.label,
127127
}
128-
collect_infoplists_args = {}
129-
collect_args = {}
130-
collect_structured_args = {}
128+
129+
skip_library_validation = False
130+
131+
common_collect_args = {
132+
"rule_label": ctx.label,
133+
}
134+
collect_infoplists_args = dict(common_collect_args)
135+
collect_args = common_collect_args | {
136+
"skip_library_validation": skip_library_validation,
137+
}
138+
collect_structured_args = dict(common_collect_args)
139+
131140
collect_framework_import_bundle_files = None
132141

133142
hint_action = None

apple/internal/ios_rules.bzl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,9 @@ def _ios_application_impl(ctx):
213213
top_level_infoplists = resources.collect(
214214
attr = ctx.attr,
215215
res_attrs = ["infoplists"],
216+
rule_label = ctx.label,
216217
)
218+
217219
top_level_resources = resources.collect(
218220
attr = ctx.attr,
219221
res_attrs = [
@@ -224,6 +226,7 @@ def _ios_application_impl(ctx):
224226
"strings",
225227
"resources",
226228
],
229+
rule_label = ctx.label,
227230
)
228231

229232
entitlements = entitlements_support.process_entitlements(
@@ -602,6 +605,7 @@ def _ios_app_clip_impl(ctx):
602605
top_level_infoplists = resources.collect(
603606
attr = ctx.attr,
604607
res_attrs = ["infoplists"],
608+
rule_label = ctx.label,
605609
)
606610
top_level_resources = resources.collect(
607611
attr = ctx.attr,
@@ -611,6 +615,7 @@ def _ios_app_clip_impl(ctx):
611615
"strings",
612616
"resources",
613617
],
618+
rule_label = ctx.label,
614619
)
615620

616621
entitlements = entitlements_support.process_entitlements(
@@ -935,10 +940,12 @@ def _ios_framework_impl(ctx):
935940
top_level_infoplists = resources.collect(
936941
attr = ctx.attr,
937942
res_attrs = ["infoplists"],
943+
rule_label = ctx.label,
938944
)
939945
top_level_resources = resources.collect(
940946
attr = ctx.attr,
941947
res_attrs = ["resources"],
948+
rule_label = ctx.label,
942949
)
943950

944951
extra_linkopts = [
@@ -1196,6 +1203,7 @@ def _ios_extension_impl(ctx):
11961203
top_level_infoplists = resources.collect(
11971204
attr = ctx.attr,
11981205
res_attrs = ["infoplists"],
1206+
rule_label = ctx.label,
11991207
)
12001208
top_level_resources = resources.collect(
12011209
attr = ctx.attr,
@@ -1204,6 +1212,7 @@ def _ios_extension_impl(ctx):
12041212
"resources",
12051213
"strings",
12061214
],
1215+
rule_label = ctx.label,
12071216
)
12081217

12091218
entitlements = entitlements_support.process_entitlements(
@@ -1511,6 +1520,7 @@ def _ios_dynamic_framework_impl(ctx):
15111520
top_level_infoplists = resources.collect(
15121521
attr = ctx.attr,
15131522
res_attrs = ["infoplists"],
1523+
rule_label = ctx.label,
15141524
)
15151525
top_level_resources = resources.collect(
15161526
attr = ctx.attr,
@@ -1521,6 +1531,7 @@ def _ios_dynamic_framework_impl(ctx):
15211531
"strings",
15221532
"resources",
15231533
],
1534+
rule_label = ctx.label,
15241535
)
15251536

15261537
signed_frameworks = []
@@ -1945,6 +1956,7 @@ def _ios_imessage_application_impl(ctx):
19451956
top_level_infoplists = resources.collect(
19461957
attr = ctx.attr,
19471958
res_attrs = ["infoplists"],
1959+
rule_label = ctx.label,
19481960
)
19491961
top_level_resources = resources.collect(
19501962
attr = ctx.attr,
@@ -1953,6 +1965,7 @@ def _ios_imessage_application_impl(ctx):
19531965
"strings",
19541966
"resources",
19551967
],
1968+
rule_label = ctx.label,
19561969
)
19571970

19581971
entitlements = entitlements_support.process_entitlements(
@@ -2151,6 +2164,7 @@ def _ios_imessage_extension_impl(ctx):
21512164
top_level_infoplists = resources.collect(
21522165
attr = ctx.attr,
21532166
res_attrs = ["infoplists"],
2167+
rule_label = ctx.label,
21542168
)
21552169
top_level_resources = resources.collect(
21562170
attr = ctx.attr,
@@ -2159,6 +2173,7 @@ def _ios_imessage_extension_impl(ctx):
21592173
"strings",
21602174
"resources",
21612175
],
2176+
rule_label = ctx.label,
21622177
)
21632178

21642179
entitlements = entitlements_support.process_entitlements(
@@ -2421,6 +2436,7 @@ def _ios_sticker_pack_extension_impl(ctx):
24212436
top_level_infoplists = resources.collect(
24222437
attr = ctx.attr,
24232438
res_attrs = ["infoplists"],
2439+
rule_label = ctx.label,
24242440
)
24252441
top_level_resources = resources.collect(
24262442
attr = ctx.attr,
@@ -2429,6 +2445,7 @@ def _ios_sticker_pack_extension_impl(ctx):
24292445
"strings",
24302446
"resources",
24312447
],
2448+
rule_label = ctx.label,
24322449
)
24332450

24342451
entitlements = entitlements_support.process_entitlements(

apple/internal/macos_rules.bzl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ def _macos_application_impl(ctx):
215215
top_level_infoplists = resources.collect(
216216
attr = ctx.attr,
217217
res_attrs = ["infoplists"],
218+
rule_label = ctx.label,
218219
)
219220
top_level_resources = resources.collect(
220221
attr = ctx.attr,
@@ -223,6 +224,7 @@ def _macos_application_impl(ctx):
223224
"strings",
224225
"resources",
225226
],
227+
rule_label = ctx.label,
226228
)
227229

228230
entitlements = entitlements_support.process_entitlements(
@@ -523,6 +525,7 @@ def _macos_bundle_impl(ctx):
523525
top_level_infoplists = resources.collect(
524526
attr = ctx.attr,
525527
res_attrs = ["infoplists"],
528+
rule_label = ctx.label,
526529
)
527530
top_level_resources = resources.collect(
528531
attr = ctx.attr,
@@ -531,6 +534,7 @@ def _macos_bundle_impl(ctx):
531534
"strings",
532535
"resources",
533536
],
537+
rule_label = ctx.label,
534538
)
535539

536540
entitlements = entitlements_support.process_entitlements(
@@ -769,6 +773,7 @@ def _macos_extension_impl(ctx):
769773
top_level_infoplists = resources.collect(
770774
attr = ctx.attr,
771775
res_attrs = ["infoplists"],
776+
rule_label = ctx.label,
772777
)
773778
top_level_resources = resources.collect(
774779
attr = ctx.attr,
@@ -777,6 +782,7 @@ def _macos_extension_impl(ctx):
777782
"strings",
778783
"resources",
779784
],
785+
rule_label = ctx.label,
780786
)
781787

782788
entitlements = entitlements_support.process_entitlements(
@@ -1050,13 +1056,15 @@ def _macos_quick_look_plugin_impl(ctx):
10501056
top_level_infoplists = resources.collect(
10511057
attr = ctx.attr,
10521058
res_attrs = ["infoplists"],
1059+
rule_label = ctx.label,
10531060
)
10541061
top_level_resources = resources.collect(
10551062
attr = ctx.attr,
10561063
res_attrs = [
10571064
"strings",
10581065
"resources",
10591066
],
1067+
rule_label = ctx.label,
10601068
)
10611069

10621070
entitlements = entitlements_support.process_entitlements(
@@ -1298,10 +1306,12 @@ def _macos_kernel_extension_impl(ctx):
12981306
top_level_infoplists = resources.collect(
12991307
attr = ctx.attr,
13001308
res_attrs = ["infoplists"],
1309+
rule_label = ctx.label,
13011310
)
13021311
top_level_resources = resources.collect(
13031312
attr = ctx.attr,
13041313
res_attrs = ["resources"],
1314+
rule_label = ctx.label,
13051315
)
13061316

13071317
entitlements = entitlements_support.process_entitlements(
@@ -1552,6 +1562,7 @@ def _macos_spotlight_importer_impl(ctx):
15521562
top_level_infoplists = resources.collect(
15531563
attr = ctx.attr,
15541564
res_attrs = ["infoplists"],
1565+
rule_label = ctx.label,
15551566
)
15561567

15571568
entitlements = entitlements_support.process_entitlements(
@@ -1792,6 +1803,7 @@ def _macos_xpc_service_impl(ctx):
17921803
top_level_infoplists = resources.collect(
17931804
attr = ctx.attr,
17941805
res_attrs = ["infoplists"],
1806+
rule_label = ctx.label,
17951807
)
17961808

17971809
entitlements = entitlements_support.process_entitlements(
@@ -2849,10 +2861,12 @@ def _macos_framework_impl(ctx):
28492861
top_level_infoplists = resources.collect(
28502862
attr = ctx.attr,
28512863
res_attrs = ["infoplists"],
2864+
rule_label = ctx.label,
28522865
)
28532866
top_level_resources = resources.collect(
28542867
attr = ctx.attr,
28552868
res_attrs = ["resources"],
2869+
rule_label = ctx.label,
28562870
)
28572871

28582872
extra_linkopts = [
@@ -3119,6 +3133,7 @@ def _macos_dynamic_framework_impl(ctx):
31193133
top_level_infoplists = resources.collect(
31203134
attr = ctx.attr,
31213135
res_attrs = ["infoplists"],
3136+
rule_label = ctx.label,
31223137
)
31233138
top_level_resources = resources.collect(
31243139
attr = ctx.attr,
@@ -3129,6 +3144,7 @@ def _macos_dynamic_framework_impl(ctx):
31293144
"strings",
31303145
"resources",
31313146
],
3147+
rule_label = ctx.label,
31323148
)
31333149

31343150
signed_frameworks = []

apple/internal/resource_rules/apple_precompiled_resource_bundle.bzl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,11 +122,13 @@ def _apple_precompiled_resource_bundle_impl(ctx):
122122
infoplists = resources.collect(
123123
attr = ctx.attr,
124124
res_attrs = ["infoplists"],
125+
rule_label = ctx.label,
125126
)
126127
else:
127128
infoplists = resources.collect(
128129
attr = ctx.attr,
129130
res_attrs = ["_fallback_infoplist"],
131+
rule_label = ctx.label,
130132
)
131133

132134
bucketized_owners, unowned_resources, buckets = resources.bucketize_typed_data(
@@ -151,6 +153,7 @@ def _apple_precompiled_resource_bundle_impl(ctx):
151153
resource_files = resources.collect(
152154
attr = ctx.attr,
153155
res_attrs = ["resources"],
156+
rule_label = ctx.label,
154157
)
155158
if resource_files:
156159
bucketized_owners, unowned_resources, buckets = resources.bucketize_data(
@@ -186,6 +189,7 @@ def _apple_precompiled_resource_bundle_impl(ctx):
186189
structured_files = resources.collect(
187190
attr = ctx.attr,
188191
res_attrs = ["structured_resources"],
192+
rule_label = ctx.label,
189193
)
190194
if structured_files:
191195
structured_parent_dir_param = partial.make(

0 commit comments

Comments
 (0)